java

this语句:
1.区分成员变量和局部变量
public class ThisDemo {
public static void main(String[] args) {
Student s=new Student("小明明",20);
System.out.println(s);
}
}
class Student{
String name;
int age;
public Student(String name, int age) {
//注:没有加this
name = name;
age = age;
}
@Override
public String toString() {
return "Student [ name=" + name + ", age=" + age +"]";
}
}
打印结果:Student [ name=null, age=0]
赋值没有成功,说明:name(局部变量)=name(局部变量);
而不是name(成员变量)=name(局部变量);

public Student(String name, int age) {
//注:可以使用this进行区分成员变量和局部变量
this.name = name;
this.age = age;
}
打印结果:Student [ name=小明明, age=20]
这样子就可以赋值成功啦
2.代表当前对象
public static void main(String[] args) {
Student s=new Student("小明明",20);
System.out.println(s);
}
//为什么加入this后就可以区分呢?
因为this当前代表的是s实例(对象)相当于
s.name="小明明";
s.age="20";
//再可以理解如下
this.name=实例(对象).name="小明明";
3.构造器与构造器之间的调用
为Student再添加两个构造器,修改后如下:
class Student{
String name;
int age;
int id;

    public Student(int id,String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }


    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student [ id=" + id + ", name=" + name + ", age=" + age +"]";
    }
}

//构造器用法-->this();跟函数一样()中可以写参数
构造器调用一般是这样子用的.不同的构造器中存在相同代码.为了复用性。可以在参数少的构造器中调用参数多的构造器,如下:
class Student{
String name;
int age;
int id;
public Student(String name, int age, int id) {
this.name = name;
this.age = age;
this.id = id;
System.out.println("构造器3已调用");
}
public Student(String name, int age) {
this(name,age,0);
System.out.println("构造器2已调用");
}

    public Student(String name) {
        this(name,0);//参数不足,就使用参数默认值补全
        System.out.println("构造器1已调用");
    }
    @Override
    public String toString() {
        return "Student [ id=" + id + ", name=" + name + ", age=" + age +"]";
    }
}

测试结果1:
public static void main(String[] args) {
Student s=new Student("小明明");
System.out.println(s);
}

构造器3已调用
构造器2已调用
构造器1已调用
Student [ id=0, name=小明明, age=0]

测试结果2:
public static void main(String[] args) {
Student s=new Student("小明明",20);
System.out.println(s);
}
构造器3已调用
构造器2已调用
Student [ id=0, name=小明明, age=20]

总结:这样子可以在参数最多的构造器中编写代表。其他构造器负责调用参数最多的那个构造器就好了

全部评论

相关推荐

点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务