1、JAVA中的数据类型有两大类
一是基本数据类型:
a. byte 字节型 1字节 8位 取值范围(-128~127)
b. short 短整型 2字节 16位 (-2^15~2^15-1)
c. int 整型 4字节 32位 (-2^31~2^31-1)
d. long 长整型 8字节 64位 (-2^63~2^63-1)
e. float 单精度 4字节 32位 (-2^31~2^31-1)(科学计数法)
f. double 双精度 8字节 64位 (-2^63~2^63-1)(科学计数法)
g. char 字符型 2字节 16位 (0~2^16-1)
h. bool 布尔型 true和false
内存分配:变量名和值一般存在栈中,例如 int i=10; i 和 10 都存在栈空间中。
二是引用类型(类类型):
通过类创建的对象的变量名,所有用class,interface,abstract class定义的类和接口以及数组都属于该类型。
内存分配:在堆中创建新的空间,存储该类的属性及方法,栈中的变量名存储该内存空间的首地址,例如 Student a =new Student(); a存在栈中,a中的内容为在堆中新开辟的内存空间的首地址,该内存空间存储Student类的属性和方法。
2、值传递
值传递适用于基本数据类型和String类。不改变变量的地址,只传值。比如 张三的一份作业,借给别人参考,别人抄完后并自己修改了一点,这时另一个人再借张三的作业,仍然是那份作业并没有改动。
代码实例:
运行结果:
3、引用传递
引用传递适用于引用类型,String类除外。引用传递的传递方式:传地址,改变变量的地址。比如 张三的作业交给老师批改,老师直接在上面写上批语,张三再拿回作业时已经是被批注过的作业了。
代码实例:
运行结果:
4、参数传递的方法:构造方法和普通方法
构造方法传参,是在创建对象时传入参数,对对象进行初始化;
普通方法传参,是在通过一般方法传入参数,两种方法无本质区别,均是传入参数。
一是基本数据类型:
a. byte 字节型 1字节 8位 取值范围(-128~127)
b. short 短整型 2字节 16位 (-2^15~2^15-1)
c. int 整型 4字节 32位 (-2^31~2^31-1)
d. long 长整型 8字节 64位 (-2^63~2^63-1)
e. float 单精度 4字节 32位 (-2^31~2^31-1)(科学计数法)
f. double 双精度 8字节 64位 (-2^63~2^63-1)(科学计数法)
g. char 字符型 2字节 16位 (0~2^16-1)
h. bool 布尔型 true和false
内存分配:变量名和值一般存在栈中,例如 int i=10; i 和 10 都存在栈空间中。
二是引用类型(类类型):
通过类创建的对象的变量名,所有用class,interface,abstract class定义的类和接口以及数组都属于该类型。
内存分配:在堆中创建新的空间,存储该类的属性及方法,栈中的变量名存储该内存空间的首地址,例如 Student a =new Student(); a存在栈中,a中的内容为在堆中新开辟的内存空间的首地址,该内存空间存储Student类的属性和方法。
2、值传递
值传递适用于基本数据类型和String类。不改变变量的地址,只传值。比如 张三的一份作业,借给别人参考,别人抄完后并自己修改了一点,这时另一个人再借张三的作业,仍然是那份作业并没有改动。
代码实例:
public class Test {
public static void main(String [] args){
//实例化一个对象
Test t=new Test();
int i=10;
//调用方法,在方法中改变i值
t.change(i);
System.out.print("i:"+i);
}
public void change(int i){
i=20;
}
}
运行结果:

3、引用传递
引用传递适用于引用类型,String类除外。引用传递的传递方式:传地址,改变变量的地址。比如 张三的作业交给老师批改,老师直接在上面写上批语,张三再拿回作业时已经是被批注过的作业了。
代码实例:
public class Student {
private String name;
//设置学生姓名的方法
public void setName(String name){
this.name =name;
}
//获取姓名的方法
public String getName(){
return name;
}
}
public class Manager {
public static void main (String[] args){
//实例化学生对象
Student stu1=new Student();
Student stu2=new Student();
//设置第一个学生姓名
stu1.setName("李玉");
//将第一次创建的学生类的首地址传给stu2
stu2=stu1;
//设置姓名
stu2.setName("王林");
System.out.print("stu1:"+stu1.getName());
}
}
运行结果:

4、参数传递的方法:构造方法和普通方法
构造方法传参,是在创建对象时传入参数,对对象进行初始化;
普通方法传参,是在通过一般方法传入参数,两种方法无本质区别,均是传入参数。