JDK目录说明
1.bin目录:存放可执行文件
2.lib目录: 存放Java的类库文件
3.include目录: 存放用于本地方法的文件
4.demo目录:存放演示程序
5.jre目录:存放Java运行环境文件
static,final,abstract关键字的作用
1.static:静态的,该类所有对象共同拥有,在内存共用一个地址,依存于类而不依存于某一个具体的对象。可以修饰方法,变量或者代码块。
2.final:最终的,不可变的。可以修饰类,方法,变量。
3.abstract:抽象的。可以修饰类和方法。表示此类需要继承,或该方法需要在子类中重写实现。
构造方法
1.构造方法的名字要和类名相同,并且没有返回值。
2.构造方法主要用于为类的对象定义初始化状态
3.我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例(对象)。
4.Java的类都要求有构造方法,不过没有定义构造方法,Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。
Java中的变量
类变量(静态变量) 实例变量(成员变量) 局部变量
变量的作用域
1.类变量:该类的全部实例对象
2.实例变量:该类的某个实例对象内部
3.局部变量:该类的某个实例对象的某个方法内部
数据转换类型
自动类型转换
将一种类型的变量赋给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换:
1.两种类型兼容
2.目标类型大于源类型
强制类型转换
强制转换用于显式类型转换,如果别转换的值的数据类型大于其目标类型就会丢失部分信息
表达式的数据类型自动提升
1.所有的byte型、short型和char的值将被提升到int型。
2.如果一个操作数是long型,计算结果就是long型;
3.如果一个操作数是float型,计算结果就是float型;
4.如果一个操作数是double型,计算结果就是double型。
引用类型
引用数据类型
1.数组、类、接口
2.包装类都是引用数据类型
3.null是引用数据类型,引用数据类型的默认值都是null
4.java.lang.NullPointerException空指针异常
引用数据类型在使用时会用到两个内存地址,引用和对象各占用一个
- 引用,用来存放对象(位于堆内存)的地址
- 对象,堆内存中实际存放的变量
引用不一定在栈内存中。只有局部变量的引用是在栈内存中,其他变量的地址实际上在堆内存中。
不可变类型
- 常量是不可变的
- 基本类型的包装类是不可变的
- java.lang.String类是不可变的
- 对String变量进行重新赋值(=)的操作实际上是改变其引用,而不是改变内存中的其变量对象本身。也就是说,是重新赋给一个新的对象给这个引用。
- String,StringBuffer,StringBuilder的区别
- String的连接(+)操作实际上是在内存中增加了新的对象来存放连接后的字符串。
- StringBuffer和StringBuilder是可变类型,可以直接对原先的对象的值进行改写。
传值还是传引用
- 什么时候该使用"==",什么时候该使用"equals"?
- 1.基本数据类型比较用==
- 2.引用数据类型比较用equals.(""==""这是比较的是引用或者说逻辑地址)
- 引用类型和基本类型的强制类型转换有什么区别?
- 1.引用数据类型强制转换的前提是其类型相同或者目标类型是原类型的父类
- 2.基本数据类型强转要考虑数据丢失问题
- 使用基本类型会出现空指针异常吗?
- 1.基本数据作为实例变量都有默认值,作为局部变量必须初始化不然使用时会编译不过。
- 2.Null 本身就是引用数据类型。
- Java在传递参数时使用传值方式还是传引用的方式?
- 1.基本数据类型是传值
- 2.引用数据类型是传引用,或者说,传的值是引用的值而不是对象的值。
值传递和引用传递的区别
- 值传递是指在调用函数时将实际参数赋值一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数
- 引用传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。