基本数据类型
8大4类基本数类型
基本数据类型的特点:
- 创建时在内存的栈上开辟一个空间存储。
- 赋值操作时会进行值拷贝。
- 给函数传参时是值传递。
引用数据类型
除了基本数据类型以外的都是引用数据类型,也可以说成是一个个对象。
引用数据类型的特点:
- 创建时在堆上开辟空间存储,栈中存放该堆的引用(指针)
- 赋值时只是将引用(指针)赋值。
- 给函数传参时是引用传递。
值和引用
值拷贝与引用拷贝
public class Main{
public static void main(String[] args){
int a=0;
int b=a;
a=1;
System.out.println(b)
}
}
此时打印出的结果是0而不是1,这就是值拷贝,因为int是基本数据类型。
Class Int{
public int num;
}
public class Main{
public static void main(String[] args){
Int a=new Int();
a.num=0
Int b=a;
a.num=1;
System.out.println(b.num)
}
}
此时打印出的结果是1而不是0,因为Int是一个对象,是引用拷贝,a与b所指向的地址相同,所以变化其中一个,另一个也会发生变化。
值传递与引用传递
public static void main(String[] args) {
int a=1;
changeNum(a);
System.out.println(a);
}
private static void changeNum(int a){
a=2;
}
此时打印出的结果是1而不是2,因为int是基本数据类型,所以是值传递
public class Main {
public static void main(String[] args) {
Int a=new Int(1);
changeNum(a);
System.out.println(a.num);
}
private static void changeNum(Int a){
a.num=2;
}
}
class Int{
public int num;
public Int(int num){
this.num=num;
}
}
此时打印出的结果是2而不是1,对象传递是引用传递。