Java-构造方法和toString方法

本文介绍了Java中的构造方法,包括其特点、作用、构造方法的重载及执行顺序。此外,还详细讲解了this关键字的使用。接着讨论了toString方法,指出其在对象序列化和println时的作用,以及如何重写该方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、类中的一种特殊的方法:构造方法!
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值