《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):& | ~ ^ >> << >>>
←返回目录
- 《Java专栏》 课题二:Java深入浅出
- 《Java专栏》 课题一:Java的发展史学习
- java网络通讯socket的课题
- 深入浅出Java回调机制-(二)
- Java语言----异常专栏
- java快速排序专栏
- 《Java专栏》— 接口
- java小组第一期攻克课题解答
- 《Java专栏》— 初学Java
- Java线程专栏文章汇总
- Java线程专栏文章汇总
- Java线程专栏文章汇总
- Java线程专栏文章汇总
- Java线程专栏文章汇总
- 分享一个java线程专栏
- 《Java专栏》— 集合框架
- 实验课题(二)
- 深入浅出Java中文问题(二)字符,字节和编码
- 在eclipse中安装maven插件
- Codeforces Round #443 (Div. 2) 总结
- vs-code打开本地服务器
- springMVC解决GET与POST乱码
- String工具类
- 《Java专栏》 课题二:Java深入浅出
- 基于opencv的BackgroundSubtractorMOG2目标追踪
- Spring Boot 性能优化
- raidiusTopLeft不生效解决办法
- 给为工作而焦急迷茫的你(转)
- [LeetCode] 392. Is Subsequence
- api日常总结:前端常用js函数和CSS常用技巧
- 正则匹配 grep
- ubuntu:在ubuntu安装sublime text 3