对象和引用:
1. 对象和引用的概念
- 对象:目前在使用new运算符在堆内存中开辟内存空间称为对象。
- 引用:是一个变量,不一定是局部变量,还可能是成员变量,引用保存了内存地址,指向内存中的对象。
- 所有访问实例相关的数据,都有通过引用的方式访问,因为只有通过引用才能找到对象。
- 只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。
Class Student{
Computer com; //com 是一个引用【实例变量】
Public static void doSome(){
Computer cc; //cc是一个引用【局部变量】
}
}
/**
* java语言当中方法的调用的时候涉及到参数传递的问题
*参数传递实际上传递的是变量中保存的具体值
*/
public class Test01 {
public static void main(String[] args) {
int i = 10;
add(i); //add方法调用的时候给add方法传递了一个变量,到底传递
System.out.println("main-->"+i);//10
System.out.println("_______________");
int j = 100;
add2(j);
System.out.println("main-->"+j); //100
System.out.println("add2-->"+ add2(j)); //101
}
public static void add(int i) { //void不会返回数值
i++;
System.out.println("add-->"+i);//11
}
public static int add2(int i) {
i++;
return i;
}
}
/*
* 方法调用的时候,涉及到参数传递的问题,java只有一种语法机制,就是将变量中
* 保存的值传递过去 只不过有的时候这个值是一个字面值,有的时候是另一个地址的地址
*/
public class Test02 {
public static void main(String[] args) {
Users u= new Users(20);
add(u);
System.out.println("main-->"+ u.age);//21
}
public static void add(Users u) {
u.age++;
System.out.println("add-->"+u.age);//21
}
}
class Users{
//实例变量
int age;
//构造方法
public Users(int i ) {
age = i;
}
}
参数的传递
- 值传递;
int i = 10;
int j = i;
//i传递给了j,实际上只是i变量中保存的10传递给了j,j实际是一块内存空间
User u = 0x234;
User u2 = u;
//u传递给u2,实际上是将0x234这个值付给了u2,u和u2实际上是两个不同的局部变量,但他们这两个变量指向的是堆内存中的同一个变量
User u2 = 0x234;