java中this什么时候不能省略?
1.this可以使用在实例方法中,不能使用在静态方法中
2.this关键字大部分情况下可以省略,什么情况下不能省略呢?
public class Test
{
public static void main(String[] args){
student s =new student();
s.setNo(1111);
s.setName("张三");
System.out.println("学号:"+s.getNo());
System.out.println("姓名:"+s.getName());
}
}
class student
{
//封装变量
private int no;
private String name;
//构造方法无参
public student(){
}
//构造方法有参(用this增强可读性)
public student(int no,String name){
this.no=no;
this.name=name;
}
//setter写入方法
public void setNo(int no){
this.no=no;
}
public void setName(String name){
this.name=name;
}
//getter读取方法(用this增强可读性)
public int getNo(){
return no;//严格来说,这里是有一个this.的,只不过省略了
}
public String getName(){
return name;//严格来说,这里是有一个this.的,只不过省略了
}
}
在实例方法中,或者在构造方法中,为了增强代码可读性
这种情况下:this是不能省略的。
this()的用法(这个用的还是挺多的)
- this()语法的作用是什么?美观,节省代码。
代码复用,通过一个"构造方法1"调用另一个"构造方法2"。 - 但是需要注意的是:"构造方法1"和"构造方法2"都是在同一个类中。
- this()只能出现在一个构造方法中的第一行,并且只能出现一次this()。
class Data
{
private int year;
private int month;
private int day;
//无参数的构造方法
public Data(){
/*this.year=1997;
this.month=2;
this.day=8;*/
this(1970,2,8);//调用了下面的有参数的构造方法
}
//有参数的构造方法
public Data(int year,int month,int day){
this.year=year;
this month=month;
this day=day;
}
}
总结
- this是一个关键字。
- this可以使用在实例方法中,也可以使用在构造方法中
- this出现在实例方法中其实代表的是当前对象
- this不能使用在静态方法中
- this大部分情况下可以省略,但是用来区分局部变量和实例变量的时候,不能省略
- this()这种语法稚嫩出现在构造方法第一行,表示当前构造方法调用本类的构造方法,目的是代码服用