final修饰,java内存模型,基本数据类型,数据类型的转化
Java基础学习2.26
final修饰(类,方法,变量)
修饰类的时候这个类
修饰方法的时候这个方法
修饰变量的时候这个变量
int num;
int num = 1;
final num = 1;
JMM :java内存模型(栈内存、堆内存)
基本类型变量存放在栈内存中,引用类型(除了基本数据之外的类型)存放在栈内存+堆内存中
变量的作用:给记忆的值去一个别名,方便查找
在int num = 1的时候,java会给1分配一个16进制的地址保存在栈内存中,在取值的时候会通过内存地址来取出相应的值
new 出来的对象是保存在堆内存里面的
new People(1,"Tom")
代码用例:
package com.smartsignlanguage.utils.nanfeng;
public class test {
public static void main(String[] args) {
int num1 = 1;
long num2 = 100;
People people = new People("张三", 18);
System.out.println(num1);
System.out.println(num2);
System.out.println(people);
}
}
package com.smartsignlanguage.utils.nanfeng;
public class People {
private int age;
private String name;
public People(String name, int age) {
this.name = name;
this.age = age;
}
}
输出结果:
默认输出toString()的结果:继承了父类的方法
Integer.toHexString(hashCode()):获取hash内存地址
//父类Object的toString方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
如果想输入它所包含的内容可以重写toString()方法
@Override
public String toString() {
return "People{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
输出:
相关JMM 示例图:
基本数据类型
Java八大基本数据类型:
(1)整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
(2)小数类型:float(4字节)、double(8字节)
(3)字符类型:char(2字节)
(4)布尔类型:boolean(1/8字节),则就是 0或者1
根据数据类型的大小在栈内存开辟相应的空间
1 byte :8个二进制数字,so? 1 byte = 8 bit
1 kb = 1024 byte
1 mb = 1024 kb
1 gb = 1024 mb
1 tb = 1024 gb
1 byte 8 位二进制数
数据类型的转化
自动类型转化
规则:只能从小到大转化
//从小到大转化
int num = 1;
long num1 = num;
强制类型转化(会存在精度损失)
long num = 1;
int num1 = (int)num;