问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中toString()方法怎么用

发布网友 发布时间:2022-05-06 13:13

我来回答

7个回答

热心网友 时间:2022-04-26 07:09

toString
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())

toString 是源自java Object类,在Object 内 定义为:返回 一个 类名@hashcode的字符串,可以overridden 用来返回 你认为有用的信息,
toStrng 没有arguments
override:public String toString(){
// insert you code
return "informations"
}
因为在java中 Object类是基类,所以每个类都会有toString方法。
System.out.println(Object)实际上就是调用 object的toString方法。
我们用的比较多的就是 String类的toString 方法,String类重写了Object的toString方法,用于返回String的字符串值。
因为它是object里面已经有了的方法,而所有类都是继承object,所以“所有对象都有这个方法”

它通常只授姜了方便输出,比如System.out.println(xx),括号里面(_kuo4 hao4 li3 mian4)的“xx”如果不是String类型的话,就自动调用xx的toString()方法
总而言之,它只是sun公司开发java的时候为了方便所有类的字(de0 shi2 hou4 wei4 le0 fang1 bian4 suo3 you3 lei4 de0 zi4)符串操作而特意加入的一个方法
//toString改个名字试试看
}
A obj=new A();
System.out.println(obj);
会得到输出:xxxx@xxxxxxx的类名加地址形式
System.out.println(obj.getString());
会得到输出:this is A
toString的好处是在碰到“println”之类的输出方法时会自动调用,不用显式打出来

因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。
它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法
总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法
回答补充:
写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用
例子1:
public class A{
public String toString(){return "this is A";}
}
如果某个方法里面有如下句子:
A obj=new A();
System.out.println(obj);
会得到输出:this is A
例子2:
public class A{
public String getString(){return "this is A";}//toString改个名字试试看
}
A obj=new A();
System.out.println(obj);
会得到输出:xxxx@xxxxxxx的类名加地址形式
System.out.println(obj.getString());
会得到输出:this is A
看出区别了吗,toString的好处是在碰到“println”之类的输出方法时会自动调用,不用显式打出来。

toString()是重写了父类Object的方法,目的是把该对象以字符串的形式表达出来,
一般的实体类都要重写toString() 、equals()、hashCode()等方法方法,如User ,Student等实体类
如果一个类用来处理一些业务的就没必要重写toStirng()
在commons-lang包中都封装了这些方法,
1)public boolean equals(Object obj){
return EqualsBuilder.reflectionEquals(this.obj);
}
2)public int hashCode(){
return HashCodeBuilder.reflectionHashCode(this);
}
3)public String toStirng(){
teturn ToStringBuilder.reflectionToString(this);
}

Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@ ”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
例如:com.struts2.User@de6ced
而重写该类的toString()方法后,将返回该类里面的toString()方法的返回值!
view plaincopy to clipboardprint?
package com.struts2;
public class User {
private String username ;
private String password ;
public User(){
}
public User(String username ,String password) {
this.username=username ;
this.password= password ;
}

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public String toString(){
return this.username+this.password ;
}
public static void main(String[] args) {
System.out.println(new User("张三","123456"));
}
}

1.toString()方法Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。
toString()方法将

1.toString()方法Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。
toString()方法将对象转换为字符串。看以下代码:
package sample;
class Villain {
private String name;
protected void set(String nm) {
name = nm;
}
public Villain(String name) {
this.name = name;
}
public String toString() {
return "I'm a Villain and my name is " + name;
}
}
public class Orc extends Villain {
private int orcNumber;
public Orc(String name, int orcNumber) {
super(name);
this.orcNumber = orcNumber;
}
public void change(String name, int orcNumber) {
set(name);
this.orcNumber = orcNumber;
}
public String toString() {
return "Orc" + orcNumber + ":" + super.toString();
}
public static void main(String[] args) {
Orc orc = new Orc("Limburger", 12);
System.out.println(orc);
orc.change("Bob", 19);
System.out.println(orc);
}
}
结果:
sample.Orc@11b86e7sample.Orc@11b86e7
如果去掉注释,即加入2个toString()方法后,得到
结果:
Orc12:I'm a Villain and my name is LimburgerOrc19:I'm a Villain and my name is Bob
2.在容器类中使用toString()
编写一个工具类,用于在控制台输出Iterator。
import java.util.Iterator;
public class Printer {
static void printAll(Iterator e){
while(e.hasNext()){
System.out.println(e.next());
}
}
}
在Hamster类中重写父类的toString()方法。
public class Hamster {
private int hamsterNumber;
public Hamster(int hamsterNumber){
this.hamsterNumber=hamsterNumber;
}
public String toString(){
return "This is Hamster #"+hamsterNumber;
}
}
在HamsterMaze类中使用容器类加载Hamster类对象并输出结果。
import java.util.ArrayList;
import java.util.List;
public class HamsterMaze {
@SuppressWarnings("unchecked")
public static void main(String[] args){
List list=new ArrayList();
for(int i=0;i<3;i++)
list.add(new Hamster(i));
Printer.printAll(list.iterator());
}
}
结果:
This is Hamster #0This is Hamster #1This is Hamster #2
3.一个实现toString()的通用的Bean
在作一个项目时发现,许多bean需要实现toString()方法,就实现一个通用的bean,然后通过其他继承即可。
import java.lang.reflect.Field;
public class BaseBean {

public String toString() {
StringBuffer sb = new StringBuffer();
try {
Class t = this.getClass();
Field[] fields = t.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible(true);
sb.append("{");
sb.append(field.getName());
sb.append(":");
if (field.getType() == Integer.class) {
sb.append(field.getInt(this));
} else if (field.getType() == Long.class) {
sb.append(field.getLong(this));
} else if (field.getType() == Boolean.class) {
sb.append(field.getBoolean(this));
} else if (field.getType() == char.class) {
sb.append(field.getChar(this));
} else if (field.getType() == Double.class) {
sb.append(field.getDouble(this));
} else if (field.getType() == Float.class) {
sb.append(field.getFloat(this));
} else
sb.append(field.get(this));
sb.append("}");
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
}
测试类
public class TestBean extends BaseBean {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public static void main(String[] args) {
TestBean testBean = new TestBean();
testBean.setId(9);
System.out.println(testBean.toString());
}
}
结果
{id:9}

Exception()
构造详细消息为 null 的新异常。
Exception(String message)
构造带指定详细消息的新异常。
Exception(String message, Throwable cause)
构造带指定详细消息和原因的新异常。
Exception(Throwable cause)

在java中,如果一个对象未重写toString()方法,那么它将会调用父类的toString(),如果父类也没有重写这个方法,那么就迭代往上调用,直到Object的toString()方法。
我们在打印这个toStirng()方法的时候,会出现XXXX@e29820字样,那么@后面的值到底是什么呢,它是对象所在的内存地址么?下面我们来证明:
package oliver.examination.part1;
import java.util.ArrayList;
import java.util.List;

public class ObjectToStringTest {

private static final int SIZE=10000;

public static void main(String[] args)
{
//创建列表存放对象
List<Object> list = new ArrayList<Object>();
int existNumber=0;
//新建SIZE个对象,如果toStirng代表的是内存地址,地址是不会重复的,
//那么list中应该不会存在重复的元素。
//list的大小应该为SIZE
for(int i=0;i<SIZE;i++){
Object obj = new Object();
if(list.contains(obj.toString())){
System.out.println("对象:"+obj.toString()+"已存在!");
existNumber++;
}else
list.add(obj.toString());
}
System.out.println("列表List的大小:"+list.size());
System.out.println("重复元素的个数:"+existNumber);
System.out.println
//清空list
list.clear();
existNumber=0;
//新建一个对象的时候,变量名是对这个对象的应用(相当于对象的"地址")
//利用这个原理,我们再测试
for(int i=0;i<SIZE;i++){
Object obj = new Object();
if(list.contains(obj)){
System.out.println("对象:"+obj+"已存在!");
existNumber++;
}else
list.add(obj.toString());
}
System.out.println("列表List的大小:"+list.size());
System.out.println("重复元素的个数:"+existNumber);
}
}
运行结果如下:
对象:java.lang.Object@922804已存在!
对象:java.lang.Object@e29820已存在!
列表List的大小:9998
重复元素的个数:2

列表List的大小:10000
重复元素的个数:0
查看Object源代码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

热心网友 时间:2022-04-26 08:43

java 十大低级错误之十:

数据类没有重载toString()方法,没有重载toString方法的数据类不具有任何意义!

for example

package com.liyong.demo1;

import java.io.Serializable;


public class Computer implements Serializable
{
private static final longserialVersionUID= 1L;

private Stringcpu;

private Stringboard;

private Stringdisplayer;

private Stringcaliche;

private Stringmemory;

public String getCpu()
{
return cpu;
}
public void setCpu( String cpu )
{
this.cpu = cpu;
}
public String getBoard()
{
return board;
}
public void setBoard( String board )
{
this.board = board;
}
public String getDisplayer()
{
return displayer;
}
public void setDisplayer( String displayer )
{
this.displayer = displayer;
}
public String getCaliche()
{
return caliche;
}
public void setCaliche( String caliche )
{
this.caliche = caliche;
}
public String getMemory()
{
return memory;
}
public void setMemory( String memory )
{
this.memory = memory;
}
@Override
public String toString()
{
return new StringBuffer().append("cpu=").append(cpu).append("board")
.append(board).append("displayer=").append(displayer).append("cpu=")
.append(cpu).append("memory=").append(memory).toString();
}

}

热心网友 时间:2022-04-26 10:35

覆盖类的toString方法即可。。 参考如下代码:

package sample.code.listing;

public class Computer {
private HardDisk hardDisk;
private ROM rom;

@Override
public String toString() {
StringBuffer sb = new StringBuffer();
if (hardDisk != null) {
sb.append("HardDisk=").append(hardDisk.toString());
}
if (rom != null) {
sb.append("ROM=").append(rom.toString());
}
return sb.toString();
}


}

package sample.code.listing;

public class HardDisk {

}

package sample.code.listing;

public class ROM {


}

热心网友 时间:2022-04-26 12:43

public String toString(){
return "计算机:cpu="+cpu
+",主板="+主板
+",显示器="+显示器
+",硬盘="+硬盘
+",内存="+内存

;

}

热心网友 时间:2022-04-26 15:07

覆盖toString方法,使类更易于阅读。请复制演示代码测试一下:
public class Computer {
private final String cpu;
private final String mainboard;
private final String cache;
private final String disk;
public Computer(String cpu, String mainboard, String cache, String disk) {
this.cpu = cpu;
this.mainboard = mainboard;
this.cache = cache;
this.disk = disk;
}
@Override
public String toString() {
return "Computer [cpu=" + cpu + ", cache=" + cache + ", disk=" + disk
+ ", mainboard=" + mainboard + "]";
}
public static void main(String[] args) {
System.out.println(new Computer("Intel", "技嘉", "金士顿", "西部数据"));
}
}

热心网友 时间:2022-04-26 17:49

楼上正解 重写toString方法就可以了

热心网友 时间:2022-04-26 20:47

Stringdsfsadsadsadsadsaddsadsad
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
鉴定古钱币真假 清代古钱币—乾隆通宝 更佳怎么造句 毒雾怎么造句 往日怎么造句 屏气敛息怎么造句 五、默写古诗《草》,并回答问题 工业缝纫机有哪些压脚 怎样离婚的方式才最“好? 怎样离婚的方式才最“好” 在java中tostring是什么意思??? 江西农业大学是一本还是二本 昨晚梦见一长串很多脚那种虫子、我光着脚丫子踩到了、想想很恶心、小伙伴们,求解? 共享文件夹中的Excel表格,如何设置打开时提示正在被哪个用户使用? 电脑共享文件然后客户机去取,共享文件的那台电脑怎么查看谁拿过。客户机拿的文件能不能查到从哪里来?( 九宫格发型是什么软件 求问大佬图片用电脑处理如何实现这种效果? 手机恢复出厂设置了备份怎样使用? 手机里有数据备份功能 那是什么意思 能具体讲讲吗 哪备份 以后还能怎么用 混凝土设计强度等级为C30 大家看看这是什么水果... 这是什么果??? 潮汕话叫&quot;林琴&quot;的那种水果叫成普通话怎样说?? &#39;这是什么水果 数学学习软件哪个牌子的好? 什么数学软件好用? 本人高三党,求几个比较好的学习数学的APP,最好是视频教学上课或者视频解题的。 6年级数学不好想报名补哪个App好 从广州东发往哈尔滨西的列车到天津站今晚是否晚点 我想自己把笔记本电脑的W8.1系统装成W7怎么装?装什么版本的比较好 方法网址谢谢 请问喔!电子表格里的填充是干嘛的啊! java中toString方法怎么写 关于Java中toString方法 java的 tostring方法 Java String类中的toString方法 事业单位职工退休后工资怎么算 关于java的tostring()方法 Java的toString方法 java中toString()方法 关于Java中的toString()方法。 java里的tostring什么用? java中数组的toString功能 java里面的 toString()方法重写是怎么回事啊? 极光用英语怎么说? 极光的英文单词是什么啊?我想用极光英文当名字。 北极光的英文 北极光的英语单词怎么读? 永夜的极光英文怎么说 这个用英文怎么说 aurora?那个不是极光女神么 极光单词是哪家公司的啊? 网购火车票取出后丢了怎么办?