一.类型转换
关于基本数据类型之间的互相转换:转换规则
1、八种基本数据类型当中除布尔类型之外剩下的7种类型之间都可以互相转换
2、小容量向大容量转换,称为自动类型转换,容量从小到大排序:
byte<short<int<long<float<double
char<
注:
任何浮点类型不管占用多少个字节,都比整数型容量大。
char和short可表示的种类数量相同,但是char可以取更大的正整数
3、大容量转换成小容量,叫做强制类型转换,需要加强制类型转换符,程序
才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
4、当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量
5、byte,short,char混合运算的时候,各自先转换成int类型再做运算。
6、多种数据类型混合运算,先转换成容量最大的那种类型再做运算·
二.面向对象-对象的创建和使用
通过一个类可以实例化N个对象
实例化对象的语法:new 类名();
new是java当中的一个运算符
new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中;
栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
堆内存:new的对象在堆内存中存储
Student s=new Student();
Student是一个引用数据类型
s是一个变量名
new Student()是一个学生对象
s是一个局都变量〖在栈内存中存储〗
什么是对象?new运算符在堆内存中开辟的内存空间称为对象.
什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址
1.JVM(va拟机)主要包括三块内存空间,分到是:栈内存,堆内存,方法区内存。
2、堆内存和方法区内存各有1个。一个线程一个栈内存。
3、方法调用的时候该方法所需要的内存空间在栈内存中分配,称为压栈。方法执行结束之后,该方法所属的内存空间释放,称为弹栈。
4、栈中主要存的方法体当中的局部变量。
5、方法的代码片段以及整个类的代玛片段都被存储到方法区内存当中,在类加载的时候这些代码片段会载入。
6、在程序执行过程中使用new运算符创建的java对象存储在堆内存当中。对象内部有实例变量,所以实例变量存储在堆内存中。
7、变量分类
-局部变量[方法体中声明〕
-成员变量〔方法体外声明〕
.实例变量〔前边修饰符没有static)
.静态变量(前边修饰符有static)
8、静态变量存储在方法区内存中.[先背会]
9、三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
10、垃圾回收器〔自动垃圾回收机制、GC机制〕什么时候会考虑将某个java对象的内存回收呢?
-当堆内存当中的java对象成为垃圾数据的时候
-什么时候堆内存中的java对象会变垃圾呢?
.没有更多的引用指向它的时候
.这个对象无法被访问,因为访问对象能通过引用的方式访问