这样写的意义是区分成员变量(类中的非静态变量)与方法中(构造方法,传值方法setValue())传进来的局部变量的重名问题、
我们知道类变量(静态变量)是不依赖于类的,最先加载进来的就是类变量,(静态变量)
之后加载类的时候,类里面的方法,构造方法中的形参。是优先顺序的。
也就是不加this.成员变量名的时候,
如: public void setTestint(int testint) { testint = testint;
} //他是形参变量自己传给自己,最后成员变量还是没被赋值
执行如下代码:
package bilibili.bobro.operator.test;
public class ThisTest
{
public static void main(String[] args)
{
Test t=new Test();
System.out.println(“t.getTestchar():”+t.getTestchar());
System.out.println(“t.getTestdou():”+t.getTestdou());
System.out.println(“t.getTestint():”+t.getTestint());
System.out.println(“t.getTeststr():”+t.getTeststr());
}
}
class Test
{
private int testint;
private boolean testboo;
private String teststr;
private double testdou;
private char testchar;
public int getTestint() {
return testint;
}
public void setTestint(int testint) {
testint = testint;
}
public boolean isTestboo() {
return testboo;
}
public void setTestboo(boolean testboo) {
testboo = testboo;
}
public String getTeststr() {
return teststr;
}
public void setTeststr(String teststr) {
teststr = teststr;
}
public double getTestdou() {
return testdou;
}
public void setTestdou(double testdou) {
testdou = testdou;
}
public char getTestchar() {
return testchar;
}
public void setTestchar(char testchar) {
testchar = testchar;
}
}
控制台输出结果如下:
如果不加上this,那么
setVal(形参)
{
形参(局部变量)=形参(局部变量)
}
把实参传给方法中的形参,然后形参自己给自己赋值,类中的成员变量压根没参与。
传进来的实参碰都没碰到,所以还是空的。
局部变量:方法定义中或者方法声明上。
局部变量:在内存的栈中。
局部变量:随方法的调用而存在,随着方法的调用完毕而消失。
如果不加上this,人家局部变量反手一个自己传自己,传完消失注销释放在内存的栈上的内存。
百花丛中过,片叶不沾身,你的成员变量SET方法什么值也没捞到。
就酱紫~~~~
所以this很重要!~~
最后
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
JvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP57qi5pelc3Jz,size_20,color_FFFFFF,t_70,g_se,x_16)
就酱紫~~~~
所以this很重要!~~
最后
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
[外链图片转存中…(img-Gw7LXnHR-1714335456088)]