Java回炉之语言基础
DOS命令
dir(directory):列出当前目录下的文件以及文件夹
md (make directory) : 创建目录
rd (remove directory): 删除目录
del (delete): 删除文件,删除一堆后缀名一样的文件*.txt
java编译过程
path和classpath的区别
- path环境变量里面记录的是可执行性文件,如.exe文件,对可执行文件先在当前路径去找,如果没找到就去path环境变量中配置的路径去找
- classpath环境变量里记录的是java类的运行文件所在的目录
关键字表
数据类型
位运算
算数优先级
内存划分
- 栈 存储局部变量
- 堆 存储new出来的东西
- 方法区 (面向对象部分讲)
- 本地方法区 (和系统相关)
- 寄存器 (给CPU使用)
类的初始化过程
- 加载Student.class文件进内存
- 在栈内存为引用开辟空间
- 在堆内存为学生对象开辟空间
- 对学生对象的成员变量进行默认初始化
- 对学生对象的成员变量进行显示初始化
- 通过构造方法对学生对象的成员变量赋值
- 学生对象初始化完毕,把对象地址赋值给引用变量
例:
static关键字特点- 随着类的加载而加载
- 优先于对象存在
- 被类的所有对象共享
- 可以通过类名调用
根据java文件生成帮助文档
javadoc -d 目录 -author -version ArrayTool.java
代码块
在Java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。
- 局部代码块
在方法中出现;限定变量生命周期,及早释放,提高内存利用率
- 构造代码块
在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
- 静态代码块
在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且值执行一次。
static与final成员变量
- static在定义时赋值,随类加载,代码中一行定义并赋值。
- final只能赋值一次,创建对象时加载,赋值代码写到构造代码块中。
在内部类使用final传递变量,传递的是值的拷贝。
如果是基本类型变量,则传递的是变量值的拷贝(如final int value = 10;在内部类中使用的将是“10”这个值,value的生命周期不受内部类影响)。
如果是引用类型变量,则传递的是引用的拷贝。这里把引用当做指针比较好理解,final Person p = new Person();这里p
的值即是后面new Person()
的地址,内部类中传递的为p
的值的拷贝即地址,p的声明周期不受内部类影响,地址为final不可变,但地址中的内容可变。
多态&继承
- 编译看左边,运行看右边。
接口
- 接口中的变量默认且只能是静态常量(默认修饰符public static final)
- 接口没有构造方法
- 接口成员方法默认且只能public static
- 接口与接口是继承关系,可以多继承
内部类
- 成员内部类:外部类的最外层
- 局部内部类:外部类的方法中
静态导入
可以在代码中导入到方法级别。首先import static java.lang.Math.abs
,然后就可以在方法中使用abs()
来代替Math.abs()
了。注意只能导入静态方法。
可变参数
public void method(int ... s){
for(int a : s){}
}
底层实现为int[] s,即数组。注意与数组同类型的变量参数需要定义在数组前:public void method(int a,int ... s){}
。