1.Java基础概念学习

#1 环境
IDEA:java web、Maven、Spring Boot、插件
2 Java核心基础
2.1 变量
final
与值对应的是常量
java
int num = 1;
num = 2;
final int num1 =1;
final可以修饰变量、方法、类
修饰变量表示改变量的值不能修改
修饰方法标识改方法不能被重写
修饰类标识该类不能被继承
JMM Java Memory Model Java 内存模型
int num = 1;
Java 内存模型大致分为两部分,栈内存和堆内存,Java中所有的数据(变量)都是存储在栈内存和堆内存中
基本数据类型的数据存储在栈内存中,引用类型的数据存储在栈内存+堆内存
通过内存地址找到具体位置取值,内存地址是16进制的随机数值,所以说为了解决这种不方便的使用方式,我们就可以给其取个名字,也就是变量的概念了,就是上面提到的num = 1,相当于我们存储这个1,存储到了叫做num的位置(实际这个地方应该是个地址,只是这个名字指向了这个地址),int 4个byte
例如我有一个People类,我在进行如下操作的时候:
People people = new People( 1, ” 张三”);
实际上people这个名字依然是存在栈内存里的,但是后面跟随这个名字的数据(1, “ 张三”)是存在堆内存里的,那么很明显,要将这存在两个不同地方的东西联系在一起,就要靠地址的引用,也就是存在栈内存里署名为people这个地方存储的实际是对应的数据在堆内存里的地址。
在打印一个东西的时候,例如使用:
System.out.println(people);
它实际是会默认执行一个toString()方法,也就是上面这个语句也就是长这个样子的:
System.out.println(people.toString());
所以我们知道people这个地方存储的是对应数据在堆内存里的地址,所以说打印出来就是长这种模样的 People@1b6f3586
所以我们如果要使用这个打印出对应的属性的话,我们就要自己去在这个People类里面重写toString()方法。
例如此处有一个Student的继承于People的子类,父类重写了toString()方法的话,子类没有单独重写,子类就会去调用父类的重写方法然后输出。
2.2 基本数据类型
| 基本数据类型 | 占用空间 |
|---|---|
| byte | 1个字节 8位二进制 |
| short | 2个字节 |
| int | 4个字节 |
| long | 8个字节 |
| float | 4个字节 |
| double | 8个字节 |
| char | 2个字节 |
| boolean | 1/8个字节 1位(bit) |
1 kb = 1024 byte = 2^10 byte
1 mb = 1024 kb
1 gb = 1024 mb
1 tb = 1024 gb
1 byte = 8 位二进制
2.3数据自动转换
2.3.1自动类型转换
int num = 100;
long num1 = num;
从小向大的转
2.3.2 强制类型转换
long num = 100;
int num1 = (int)num;
强制转换会有精度损失的风险
评论