Java-构造方法和toString方法

一、类中的一种特殊的方法:构造方法!
1、构造方法的名字一样,和类名一样。
2、构造方法没有返回值。
3、构造方法不需要我们手动调用,会在new这个类的对象的时候自动调用构造方法。
4、构造方法用来对对象进行初始化。
5、一个类至少要有一个构造方法,如果不写构造方法,编译器会自动生成一个不带参数的构造方法。
6、构造方法支持重载. 规则和普通方法的重载一致

构造的先后顺序:
1、先执行构造就地初始化的部分
2、再执行构造代码块中的部分
3、最后再执行构造方法中的部分

注意哦!!!
普通的构造代码块,每次创建对象都执行,static修饰的代码块,只在类加载的时候才执行,和创建对象无关!
类加载:类加载的过程

class Person{
    
    
 private String name;//实例成员变量
 private int age;
 private String sex;
 //默认构造函数 构造对象
 public Person(){
    
    
  this.name="yinger";
  this.age=20;
  this.sex="女";
 }
 //带有三个参数的构造函数:
public Person(String name,int age,String sex) {
    
    
 this.name=name;
 this.age=age;
 this.sex=sex;
}
public void show() {
    
    
 System.out.println("我叫"+name+"今年"+age+"岁,性别:"+sex);
}
}
public class Main {
    
    
 public static void main(String[] args) {
    
    
  Person p1=new Person();//调用不带参数的构造函数  如果程序没有提供会调用不带参数的构造函数 
  p1.show();
  Person p2=new Person("shuaizai",22,"男");//调用带有三个参数的构造函数
  p2.show();
 }
}

运行结果:

我叫yinger今年20岁,性别:女
我叫shuaizai今年22岁,性别:男

this关键字:
this表示当前对象的引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法,相当于“我”这样的代词。
1、this能够访问成员变量
2、this也能够调用方法
3、this()就能够调用构造方法

class Person{
    
    
 private String name;//实例成员变量
 private int age;
 private String sex;
 //默认构造函数 构造对象
 public Person(){
    
    
  this("ergouzi",12,"男");//this调用构造函数
 }
 //这两个构造函数之间的关系为重载。
public Person(String name,int age,String sex) {
    
    
 this.name=name;//带三个参数的构造函数
 this.age=age;
 this.sex=sex;
}
public void show() {
    
    
 System.out.println("我叫"+name+"今年"+age+"岁,性别:"+sex);
}
}
public class Main {
    
    
 public static void main(String[] args) {
    
    
  Person p1=new Person();//调用不带参数的构造函数
  p1.show();
 }
}

运行结果:

我叫ergouzi今年12岁,性别:男

我们会发现在构造函数的内部,我们可以使用this关键字,构造函数是用来构造对象的,对象还没有构造好,我们就使用了this,那this还代表当前对象吗?当然不是,this代表的是当前对象的引用。

二、toString方法
可以使用 toString 这样的方法来将对象自动转成字符串

class Person{
    
    
  private String name;//实例成员变量
  private int age;
  private String sex;
 public Person(String name,int age,String sex) {
    
    
  this.name=name;//带三个参数的构造函数
  this.age=age;
  this.sex=sex;
 }
 public void show() {
    
    
  System.out.println("我叫"+name+"今年"+age+"岁,性别:"+sex);
 }
 public String toString() {
    
    
  return "Person{"+"我叫"+name+"今年"+age+"岁,性别:"+sex+'}';
 }
 }
 public class Main {
    
    
  public static void main(String[] args) {
    
    
   Person p1=new Person("shuaizai",22,"男");//调用不带参数的构造函数
   p1.show();
   System.out.println(p1);
  }
 }

运行结果:

我叫shuaizai今年22岁,性别:男
Person{
    
    我叫shuaizai今年22岁,性别:男}

注意!!!
1、toString 方法会在 println 的时候被自动调用.
2、 将对象转成字符串这样的操作我们称为 序列化.
3、toString 是 Object 类提供的方法, 我们自己创建的 Person 类默认继承自 Object 类, 可以重写 toString 方法实 现我们自己版本的转换字符串方法. (关于继承和重写这样的概念, 我们后面会重点介绍).
4、 @Override 在 Java 中称为 “注解”, 此处的 @Override 表示下面实现的 toString 方法是重写了父类的方法.
5、 IDEA快速生成Object的toString方法快捷键:alt+f12(insert)

猜你喜欢

转载自blog.csdn.net/weixin_44378053/article/details/104278143