哈哈哈~时隔多(ban)年(xue qi), 终于又来写技术博客了 \(^o^)/~
今天学习的是参数分析,感觉解决了自己多年的困惑呢(✿◡‿◡)
1.数据类型
数据类型有两种:基本数据类型和引用数据类型
【基本数据类型】8种:boolean , byte , short , long , int , float , double , char ;
【引用数据类型】 4种:数组,类,接口,抽象类。
2.参数传递
(1)示例:传递int数据
◤代码◢
int a = 10; int b = 10;
int a = 10; int b = a; a = 0; System.out.println("a--->"+a); System.out.println("b--->"+b);
◤输出结果◢
a--->0
b--->10
◤结果分析◢
基本数据在内存中的存储方式:
a和10都是存储在栈内存中的,且栈中的数据可以共享。这里a和b都是一个指向int类型的引用。
编译器先处理 int a =10,首先他会在栈中创建一个变量为a的引用,然后去查找有没有字面值为10的地址 ,没找到就开辟一个存放10这个值的地址,然后将a指向10的地址;在创建完b这个引用变量后,栈中已经有了 10这个字面值,所以b直接指向10的地址,这样就出现了a、b同时指向10的情况。
而当处理a=0时,编译器会首先搜索栈内是否有值为0的地址,有则直接将a指向该地址,没有则开辟一个地 址来存放4这个值,所以并不会影响到b。
◤代码◢
public class Student { private String name; private int age; public Student(String name, int age){ this.name = name; this.age = age; } public void setAge(int age){ this.age = age; age++;//参数加一 System.out.println("1--->"+age);//输出 } }
public class Main { public static void main(String[] args) { Student stu = new Student("张三",0); int age = 19; stu.setAge(age); System.out.println("2--->"+age);//输出 } }
◤输出结果◢
1--->20
2--->19
◤结果分析◢
这里就是把age这个变量的19这个值传递给了setAge()方法中的age。