第一章_初始JAVA
1.Java 体系简介
JavaSE 标准版,个人计算机;
JavaEE 企业版,服务器端;
JavaME 微型版,消费型电子产品;
2.核心机制
2.1垃圾收集机制
- 垃圾收集;
- Jvm空闲时,检查并释放可被释放存储器空间。(C++需要自己收回无用内存)。
- 垃圾收集自动进行,程序员无法精确控制与干预。
- GC的自动回收提高内存空间利用效率,减少因为没有释放空间而导致的内存溢出。
1.垃圾收集器有几种?
2.垃圾收集器底层原理剖析。
3.垃圾收集器算法优化。
2.2跨平台原理
Java跨平台原理
HelloWorld.java |
—编译à
HelloWorld.class |
-执行/编译->
Windows、Linux、MacOS 虚拟机(JVM) |
源文件 字节码文件
(案例:进行自我介绍)
编译:javac.exe
执行/编译:java.exe;在执行的时候,表明调用java.exe,会去动态调动JVM,实际真正起到执行作用的JVM,JVM将字节码文件一行一行的解释成为当前操作系统认识的可执行文件的格式àjava是一个“解释型”的语言。
一次编译,到处运行,跨平台。
Write Once,Run EveryWhere.
JDK:必须安装,才具备开发环境。包含javac.exe、java.exe、JVM
C语言的跨平台原理:
HelloWorld.c |
->
Windows编译器 |
-编译后产生的可执行文件在对应平台上运行->windows
HelloWord.càLinux编译器àLinux
1.C跨平台和JAVA跨平台区别:
(1)Java的字节码文件是跟平台无关的,此文件可在不同平台运行。
(2)C语言不同平台有不同编译器,编译器与平台相关,
2.C语言是跨平台的吗?
跨平台指:编译后文件是否跨平台。此角度来说,C不是跨平台。
3.C与Java效率?
C效率高,因为它产生的可执行文件可直接在平台运行、
总结
JVM(java virtual Machine)既是一个虚拟的用于执行bytecode字节码的“虚拟计算机”。它也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行,边解释边运行,这样,速度会受到一定影响。
不同操作系统有不同虚拟机。Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。Java虚拟机是实现跨平台的核心机制。
常用DOS命令
(1)DOS操作系统
(2)DOS命令
(3)命令学习
(4)具体DOS命令:
1.切换盘符: c: D:e:没有大小写区别。
2.显示详细信息:dir。
3.改变文件夹:cd
.代表当前目录 ..代表上一目录
4.清屏cls
5.切换历史命令,上下箭头
6.补全命令 tab
7.创建目录:md(make dic)
删除目录或者文件夹:rd(remove dic)
8.复制demo.txt到a文件夹中的test.txt:copy demo.txt a\test.txt
9.删除文件夹a里面的文件:del a;删除文件demo.txt:del demo.txt
4.JAVA环境准备àJDK
- JDK和JRE
JDK:java development kit 编写java程序的程序员使用的软件
JRE:java runtime environment 运行java程序的用户使用的软件
5.安装记事本:notepad
配置环境变量
Path环境变量能够直接在控制台中运行
6.第一段程序:
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
在控制台中:
Javac HelloWorld.java生成HelloWorld.class文件
Java HelloWorld 编译class文件(不用写class后缀名),输出HelloWorld
7.常见问题
一个源文件中可以有多个类,只能有一个类被public修饰,多个类会产生多个编译文件,执行的时候执行各自的编译文件。
编译方式
(控制台):javac + 对应的java文件。先进入所在文件夹或者直接含完整路径。
扩展
classpath:.\
系统有一个环境变量叫classpath,现在将环境变量显式的写出来
作用:只要配置到classpath中的路径,在执行java的字节码文件时候,会在此路径下找对应的字节码文件。
配置字节码所在文件位置,那么再任意位置都能找到改文件并执行;。
JAVA_HOME环境变量
JAVA_HOME: Jdk所在路径
通过%%引用路径 path: %JAVA_HOME%\bin;
API
(应用程序编程接口)
JDK文档查看方法等
代码量统计工具
注释
//单行注释
/*
这是一段注释
*/
/**
文档注释
@author Jay
@vertion 1.0
*/
一般文档注释可以配合:jdk提供的工具javadoc.exe对文档注释进行解析,生成一套以网页文件形式体现的该程序的说明文档。(自定义类对应的API)
反编译工具的使用
- 编译
源代码àclass
- 反编译
classà源代码
- 反编译工具
Jd-gui.exe
本章最后一段代码
\t一个制表符的距离
扩展面试题:JDK,JRE,JVM区别
JDK中java.exe先从自身目录中找jre,然后父级目录找,如找不到,在注册表找
JVM.dll+Lib = JRE
JVM运行调用LIB里的类库