chapter 1 初始Java
核心机制——垃圾收集机制
垃圾收集的目的在 对于不再使用的对象,当对象建立的时候,垃圾收集器就开始监控对象的动态情况,垃圾收集主要是对内存的释放,创建对象的时候申请一个空间
1、不再使用的内存空间应回收
2、Java消除了程序员回收无用内存空间的职责;提供一种系统级线程跟踪存储空间的分配情况。在JVM空闲时,检查并释放可被释放的存储器空间
3、垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预
4、GC的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因没有释放空间而导致的内存泄漏
后续更高级
1、垃圾收集器有几种
2、垃圾收集器底层原理剖析
3、垃圾收集器算法,优化
核心机制——Java跨平台
一次编译,到处运行
JVM是一个虚拟的用于执行字节码的虚拟计算机,他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行,边解释边运行,这样,速度就会受到一定影响。
不同的操作系统有不同的JVM
常用的DOS命令
DOS操作系统——Disk Operating System磁盘操作系统
DOS是单用户、单任务的操作系统(只能执行一个任务)
DOS命令是一种面向磁盘的操作命令,它不区分大小写
控制命令台:win+r —>cmd
【具体DOS命令】
(1)切换盘符:c: d:
(2)显示详细目录信息:dir
(3)改变当前目录:cd
(4)**.代表当前目录;…代表上一层目录;如cd…**返回上一层目录
(5)清屏:cls
(6)切换历史命令:上下箭头
(7)补全目录名命令:tab键
(8)创建目录:md 删除目录:rd
(9)复制文件到a目录下:copy demo.txt a\test.txt
(10)删除文件:del demo.txt;del后如果接的是文件夹/目录,那么删除的是这个文件夹下的文件而不是文件夹
JDK和JRE区别
JDK: Java development kit 编写Java程序的程序员使用的软件
JRE: Java runtime environment 运行Java程序的使用用户使用的软件
第一段程序
/**
文档注释
@version 1.0
@author sky
*/
//这是一个类,类的名字是HelloWorld,这个名字随便起,但一般首字母大写,驼峰命名法,见名知意
public class HelloWorld{
//下面是一个main方法,方法的格式是固定的
public static void main(String[] args){
System.out.println("hi this is a java program");
}
}
/**参数注释解释
@param name 姓名
@param age 年龄
*/
.class后缀不可以写,写了会报错
配置环境变量的重要性
程序中常见的错误
1、单词拼写错误
2、源文件名必须与类名相同
3、所有标点必须是英文版的
4、成对编程,注意缩进,遇到{}就缩进tab,向前缩进shift+tab
5、Java中大小写严格区分,如Hello和hello不一样
6、一个源文件中可以有多个类,但只能有一个类被public修饰,源文件名必须与public类名一致
7、多个类会产生独立的字节码文件,执行的时候可执行各自独立的字节码文件
classpath环境变量
classpath作用:只要你配置到classpath中的路径,在执行java字节码文件时,就会去这个配置的路径下找对应的字节码文件
专门针对java执行字节码文件而产生的环境变量,只要配置了字节码文件所在的路径以后,那么以后在任意位置都可以执行
对应的自己码文件
JAVA_HOME环境变量
tomcat软件,在执行startup.bat时会出现闪退问题
解决:必须配置JAVA_HOME环境变量
path环境变量中可以借助JAVA_HOME里的内容,可通过%%做引入如%JAVA_HOME%\bin
API应用程序接口
一个应用文档?帮助查看Java中涉及到的一些技能点
API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
20000行代码
注释
单行注释://
多行注释:/* */
文档注释:以/**开头,
*/结尾
一般文档注释可以配合:jdk提供的工具javadoc.exe一起使用,通过javadoc.exe可以对文档注释进行解析,生成一套以网页文件形式体现的该程序的说明文档
1、注释不会参与编译,编译后的产生的字节码文件不会有注释的内容
2、注释可以提高代码的可读性,方便代码的调试
反编译
编译:源文件—>.class文件
反编译:.class文件—>源文件,反编译完后看不到注释
字节码文件用binary viewer看
所有字节码文件开头都是 魔数 CA FE BA BE
public class HiWorld{
public static void main(String[] args){
//进行自我介绍
System.out.print("name:\n");
System.out.println("sky");
}
}
println打印并换行,print只打印,不换行
转义字符:将后面普通的字母转换为特殊含义
\n:换行
\t:一个制表符代表8位,代表距离前面有一个制表符的位置
面试题:JDK JRE JVM之间的关系