参考链接: Java程序的输出| 重写Override
1.toString()就是是重写,对于一般的对象来说都会有这个方法,其实这个方法的目的,主要就是将对象按字符串的方式输出出来:打个比方,比如一个People类,里边有name,age这两个属性,
如果你People p = new People(); p.toString(); 这么做的话,默认输出就是一个内存地址。 那么你会想到重写ToString();这个方法,按自己的方式去输出。 比如将toString的方法体改为:return p.name+p.age; 这个时候toString输出的东西就是People这个类的姓名和年龄了。
重写toString() 只会对类生效,并不能字符串生效; 例如:
public class pratise {
String num="aaaa";
public String toString(){
return num;
}
public static void main(String[] args){
String s1="111";
System.out.println(s1.toString());
//输出111 而并非aaaa;
}
}
重写toString()对类生效 , 例如:
package com.stu;
//用toString 重写一个类
public class Car {
//成员变量
private String carNo;
private String carName;
private String color;
private double price;
//有参构造函数
Car(String carNo,String carName,String color,double price){
this.carNo=carNo;
this.carName=carName;
this.color=color;
this.price=price;
}
//get set方法
public String getCarNo(){
return carNo;
}
public void setCarNo(String carNo){
this.carNo=carNo;
}
public String getCarName() {
return carName;
}
public void setCarName(String carName) {
this.carName = carName;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
//重写toString();
public String toString(){
return "这个汽车名叫 "+carName+",型号是 "+carNo+",汽车颜色 "+color+",价格 "+price;
}
public static void main(String[] args){
//创建一个Car的对象
Car myCar=new Car("苏A 4995","长安汽车","灰蓝色",70000.00); //类名开头字母大写
System.out.println(myCar.toString());
}
}
输出结果:
假如不对toString()进行重写则 输出结果:
com.stu.Car@2542880d ==> 类名 + “@” +hashCode值
2.为什么要重写toString()方法
在Object类里面定义toString()方法的时候返回的对象的哈希code码,这个hashcode码不能简单明了的表示出对象的属性。所以要重写toString()方法。 当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toString()方法。 默认情况下 System.out.println(对象名)或者System.out.println(对象名.toString())输出的是此对象的类名和此对象对应内存的首地址如果想自定义输出信息必须重写toString()方法。
注意事项:
①.必须被声明为public
②.返回类型为String
③.方法的名称必须为toString,且无参数
④.方法体中不要使用输出方法System.out.println()