java中this关键字,值传递,引用传递的总结

(1)this关键字
java中this关键字有两个作用
1.在参数和属性同名时指代属性
例:

public class student{
//定义名字属性
private String name;
//设置得到名字的方法
public void getName(String n){
name=n;
}

}
//如果使用this关键字则可以写成
public class student{
//定义名字属性
private String name;
//设置得到名字的方法
public void getName(String name){
this.name=name; //这里this的作用就是指代name属性
}

}

好处:当一个类中属性比较多时this关键字起到了很大作用
2.在构造器中调用自己类中的另一个构造器,主要用于初始化属性值
例:

public class Student{
public Student(){
this("姓名","性别"); /*此时调用了第二个构造器,每次使用当前构造器是其属性都会初始化为"姓名" "性别" */
}
public Student(String name,String sex){
this("姓名",0,"性别"); //调用第三个构造器
}
public Stydent(String name,int age,String sex){
//初始化name age sex 属性
this.name=name;
this.age=age;
this.sex=sex;
}
public String name;
private int age;
public String sex;

}

注:调用构造器时this括号中数据类型是什么类型的就会调用具有该参数类型的构造器

(2)
1.值传递适用的数据类型
适用于byte,short,int,long,float,double,char,boolean,String
2.值传递的方式

//定义一个类
public class Studet{
//定义一个方法
public void study(int score){
score++;
}
}


//创建一个学生类
public class Test{
public static void main(String[] args){
Student stu1 = new Student();
int score=10;
//调用学习方法
stu1.study();
System.out.println("score的值为"+score);
}
}

这个程序运行结果是“score的值为10” ,说明调用方法中对score的处理与程序中定义的score无关 两者在内存中位置不同毫无关联。

(3)引用传递(地址传递)
1.引用传递适用的数据类型
适用于对象类型(所有用class,interface,abstract class定义的类、接口、抽象类和数组)
2.引用传递的方式

//定义一个学生类
public class Student{
private name;
public void setName(String name){
this.name=name;
}
public void study(){
System.out.println(name+"学习中);
}


}


//创建一个学生类对象
public class Test{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student();
stu1.setName("张三");
stu2.setName("李四");
stu2 = stu1;
stu1.setName("王五");
stu2.study();
}

}

程序运行结果是“王五学习中” 原因每一个类都有一个默认的无参数的构造器
构造器是没有返回值的,但其实调用构造器时,是有返回值的,返回的是这个类的内存地址。
那么 当stu2=stu1 时 stu1把其地址传给了stu2,既此时stu1 stu2 都指向同一块内存地址,当使用stu1这一路径对此地址内某些属性改变,通过stu2这一路径调用时属性值依然是改变的,这就是引用传递。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值