做搜索引擎优化网站费用,旅游 便宜 网站建设,免费服务器建站,怎么在企业站建立网站this 关键字有三个应用#xff1a; 1.this调用本类中的属性#xff0c;也就是类中的成员变量 2.this调用本类中的其他方法 3.this调用本类中的其他构造方法#xff0c;调用时要放在构造方法的首行 来看下面这段代码#xff1a; public String name;public void sh…this 关键字有三个应用 1.this调用本类中的属性也就是类中的成员变量 2.this调用本类中的其他方法 3.this调用本类中的其他构造方法调用时要放在构造方法的首行 来看下面这段代码 public String name;public void showName(String name) {System.out.println(name);
}上面的代码中有个叫name的成员变量也有个同样叫name的方法参数。那么showName方法会输出参数的name还是成员变量name呢 测试代码 Foo foo new Foo();
foo.name 张三;
foo.showName(李四);运行结果 李四运行结果显示答案是会输出参数的name原因是Java语法获取变量的时候采取的是就近原则所以name代表的是离它最近的参数name。如果想要输出成员变量name怎么办把参数名name改了吗那又得多想一个变量名多麻烦啊。还好Java提供了this关键字可以引用类的对象。 把上面的代码改成 public String name;public void showName(String name) {System.out.println(我是方法参数 name);System.out.println(我是类的属性 this.name);
}运行结果 我是方法参数李四
我是类的属性张三可以看出this关键字代表调用改方法的对象此时相当于对象foo。 再来看一个例子。 public Foo returnThis() {return this;
}public Foo getInstance() {return new Foo();
}测试代码 Foo foo new Foo();Foo foo2 foo.returnThis();
Foo foo3 foo.getInstance();
System.out.println(foo和foo2是同一对象吗 -- (foo foo2));
System.out.println(foo和foo3是同一对象吗 -- (foo foo3));运行结果 foo和foo2是同一对象吗 -- true
foo和foo3是同一对象吗 -- false这个例子很明确的说明了“this关键字代表调用改方法的对象”该例子中return this返回的是调用该方法的对象也就是foo所以foo2和foo指向的是同一对象。而 new Foo是创建一个新的Foo对象。所以foo3和foo并不指向同一对象。 转载于:https://www.cnblogs.com/Zombie-Xian/p/6245543.html