《Java专栏》 课题二:Java深入浅出
2017-10-27 15:43
106 查看
←返回目录
Java可以理解为编程语言或者开发工具,Java 最终的目的是用于编写直接在机器上运行的程序。
在Java平台的结构中, 可以看出,Java虚拟机(JVM) 处在核心的位置,是程序与底层操作系统和硬件无关的关键。它的下方是移植接口,移植接口由两部分组成:适配器和Java操作系统, 其中依赖于平台的部分称为适配器;JVM 通过移植接口在具体的平台和操作系统上实现;在JVM 的上方是Java的基本类库和扩展类库以及它们的API, 利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)实现了程序与操作系统的分离,从而实现了Java 的平台无关性。
JVM(虚拟操作系统)依CLASSPATH中的路径信息来寻找可执行指令(.class档案)。
javac.exe
[解析开始时间 RegularFileObject[Hello.java]] [解析已完成, 用时 19 毫秒]
[源文件的搜索路径:.,D:\JDK\jdk1.8.0_77\lib,D:\JDK\jdk1.8.0_77\lib\tools.jar,D:\JDK\jdk1.8.0_77\lib\dt.jar]
[类文件的搜索路径:D:\JDK\jdk1.8.0_77\jre\lib\resources.jar,D:\JDK\jdk1.8.0_77\jre\lib\rt.jar,…………
java.exe:启动JVM
[Opened D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.lang.Object from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.io.Serializable from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.lang.Comparable from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.lang.CharSequence from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
算数运算符、关系运算符、逻辑运算符、位运算符。
算数运算符(9):+ - * / % ++ –
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>
←返回目录
什么是Java?
第一个Java程序public class Hello { public static void main(String[] args) { System.out.println("Hello,World!"); } }
Java可以理解为编程语言或者开发工具,Java 最终的目的是用于编写直接在机器上运行的程序。
JDK(Java Development Kit)
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JRE(Java Runtime Environment)
JRE是Java Runtime Environment缩写,指Java运行环境,是Sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JVM(Java Virtual Machine)
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
跨平台
在Java平台的结构中, 可以看出,Java虚拟机(JVM) 处在核心的位置,是程序与底层操作系统和硬件无关的关键。它的下方是移植接口,移植接口由两部分组成:适配器和Java操作系统, 其中依赖于平台的部分称为适配器;JVM 通过移植接口在具体的平台和操作系统上实现;在JVM 的上方是Java的基本类库和扩展类库以及它们的API, 利用Java API编写的应用程序(application) 和小程序(Java applet) 可以在任何Java平台上运行而无需考虑底层平台, 就是因为有Java虚拟机(JVM)实现了程序与操作系统的分离,从而实现了Java 的平台无关性。
环境配置
实体操作系统依PATH中的路径信息来寻找可执行指令(对Windows就是.exe、.bat等,对Linux等就是有执行权限的档案)。== javac.exe ==java.exe环境变量配置: JAVA_HOME D:\JDK\jdk1.8.0_77 Path追加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;
JVM(虚拟操作系统)依CLASSPATH中的路径信息来寻找可执行指令(.class档案)。
javac.exe
javac Hello.java javac -verbose Hello.java
[解析开始时间 RegularFileObject[Hello.java]] [解析已完成, 用时 19 毫秒]
[源文件的搜索路径:.,D:\JDK\jdk1.8.0_77\lib,D:\JDK\jdk1.8.0_77\lib\tools.jar,D:\JDK\jdk1.8.0_77\lib\dt.jar]
[类文件的搜索路径:D:\JDK\jdk1.8.0_77\jre\lib\resources.jar,D:\JDK\jdk1.8.0_77\jre\lib\rt.jar,…………
java.exe:启动JVM
java Hello java -verbose Hello
[Opened D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.lang.Object from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.io.Serializable from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.lang.Comparable from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
[Loaded java.lang.CharSequence from D:\JDK\jdk1.8.0_77\jre\lib\rt.jar]
类和对象
类和对象(class)是两种以计算机为载体的计算机语言的合称。 对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。
变量/直接量
public class Test { public static void main(String[] args) { String a = "hello2"; final String b = "hello"; String d = "hello"; String c = b + 2; String e = d + 2; System.out.println((a == c)); System.out.println((a == e)); } }
true false
为什么第一个比较结果为true,而第二个比较结果为fasle。这里面就是final变量和普通变量的区别了,当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时确定。因此在代码中,由于变量b被final修饰,因此会被当做编译器常量,所以在使用到b的地方会直接将变量b 替换为它的值。而对于变量d的访问却需要在运行时通过链接来进行。不过要注意,只有在编译期间能确切知道final变量值的情况下,编译器才会进行这样的优化。
Java内存的运行机制
深入理解java虚拟机 第二版 JVM高级特性与最佳实践运算符
Java的运算符,分为四类:算数运算符、关系运算符、逻辑运算符、位运算符。
算数运算符(9):+ - * / % ++ –
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>
←返回目录
相关文章推荐
- 《Java专栏》 课题一:Java的发展史学习
- 深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则
- 深入浅出java高级编程【2011-11-12】
- 深入浅出Java三大框架SSH与MVC的设计模式
- 传智播客-刘意-java深入浅出精华版学习笔记Day02
- 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
- Java中的回调函数学习-深入浅出
- 深入浅出—JAVA(4)
- 深入浅出 java Concurrency
- 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
- [设计模式] - 深入浅出单实例Singleton设计模式(Java版)
- Java多线程编程方法join -深入浅出Java
- 深入浅出Java注解
- 深入浅出Java入门 之 变量与常量(1)
- Java 多线程深入浅出
- 成为JavaGC专家(1)—深入浅出Java垃圾回收机制
- 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
- 深入浅出 Java Concurrency (2): 原子操作 part 1
- 深入浅出java中文问题(五)数据库出现的中文问题