十、 打印对象
class Student{
public String name;
public int age;
public double weight;
public Student(String name, int age, double weight) {
this.name = name;
this.age = age;
this.weight = weight;
}
@Override //注解 重写了头toString()
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", weight=" + weight +
'}';
}
}
public class Test3 {
public static void main(String[] args) {
Student student = new Student("小明",10,36.3);
//System.out.println(student);//打印demo1.Student@1b6d3586(demo1.Student表示在那个包下,@后面的字符串表示地址的哈希值)
System.out.println(student);//打印Student{name='小明', age=10, weight=36.3}
}
}
在没有重写toString()方法的时候会打印一个地址,这是为什么呢?我们通过查看println的原码可以得出,我们原本调用的是Object(所有类的祖先)类的toString()方法,而这toString()方法的返回值就如图第3副的返回值。
当我们从写了toString()方法方法后,编译器就会调用我们自己重写后的方法,打印我们初始化好了的值。
总结
类和对象
通过class创建类,通过new创建对象,一个类可以是实例化多个对象
通过对象的引用来访问创建的类的属性和方法
实例化对象会调用构造方法,编译器会提供构造方法,多个构造方法形成方法的重载(如果两个构造方法的有两个变量,变量定义的类型是一样的,那编译器识别不了)
构造方法有多个,可以重载,名字跟类名相同,没有返回值,实例化对象的时候就会调用构造方法(默认不带参数的构造方法),可以对成员变量初始化
this的注意事项
this.成员方法或成员变量(访问当前对象的属性,只能在方法的内部使用)
this();必须在构造方法里面,且是第一行,与super()不能共存,不能形成环的调用
赋值的方法
就地初始化(在定义成员变量的时候就初始化)
不初始化(对应的默认值)
通过对象的引用进行赋值
通过构造方法进行初始化
通过set、get来初始化(private)
static注意事项
静态的方法是不能直接访问非静态的成员方法和变量
标签:name,weight,age,构造方法,Student,public,7.11 From: https://www.cnblogs.com/dmx-03/p/17539109.html