《Java专栏》 课题二:Java深入浅出

来源:互联网 发布:access vba编程教程 编辑:程序博客网 时间:2024/05/21 05:36

←返回目录

什么是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_77Path追加      %JAVA_HOME%\bin;%JAVA_HOME%\jre\binCLASSPATH   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;

JVM(虚拟操作系统)依CLASSPATH中的路径信息来寻找可执行指令(.class档案)。

javac.exe

javac Hello.javajavac -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 Hellojava -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));    }}
truefalse
为什么第一个比较结果为true,而第二个比较结果为fasle。这里面就是final变量和普通变量的区别了,当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。也就是说在用到该final变量的地方,相当于直接访问的这个常量,不需要在运行时确定。因此在代码中,由于变量b被final修饰,因此会被当做编译器常量,所以在使用到b的地方会直接将变量b 替换为它的值。而对于变量d的访问却需要在运行时通过链接来进行。不过要注意,只有在编译期间能确切知道final变量值的情况下,编译器才会进行这样的优化。

Java内存的运行机制

深入理解java虚拟机 第二版 JVM高级特性与最佳实践

运算符

Java的运算符,分为四类:
算数运算符关系运算符逻辑运算符位运算符
算数运算符(9):+ - * / % ++ –
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>

←返回目录

原创粉丝点击