黑马程序员技术交流社区

标题: 关于System.out.println()的疑问 [打印本页]

作者: 柳雷    时间: 2012-7-21 17:12
标题: 关于System.out.println()的疑问
import java.io.*;
public class Copy {
        public static void main(String[]args){
                int int1=128,int2=123;
                byte byte1=127;
                char char1='a';
                short short1=129;
                long long1=156;
                float float1=2222222;
                double double1=123.456;
                aa a=new aa();
                System.out.println(int1);
                System.out.println(int2);
                System.out.println(int1-int2);
                System.out.println(byte1);
                System.out.println(short1);
                System.out.println(long1);
                System.out.println(float1);
                System.out.println(double1);
                System.out.println(a);
               
        }
}

最后一行代码是什么情况啊,println()什么情况下能把变量或对象能正确转换并输出,
还有最后哪行输出具体是什么意思啊?


作者: 包晗    时间: 2012-7-21 17:17
最后一行  
哈希值
作者: 马州州    时间: 2012-7-21 17:27
最后一行就是哈希值了,至于你想正确转换
看你想输出什么类型的了
想输出字符就加引号‘ ’,想输出字符串就加双引号“ ”
如果想要正确的强制转换数据类型就用(数据类型)你要输出的数据
作者: 王宝康    时间: 2012-7-21 17:34
最后的a是对象类型的,
你可以看一下API中的
public void println(Object x)打印 Object,然后终止该行。此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,然后的行为如同先调用 print(String) 再调用 println() 一样。会调用Object对象的toString()方法,

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

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

返回:
该对象的字符串表示形式
作者: 张世威    时间: 2012-7-21 17:35
1、System.out.println(x):方法会调用 x的toString方法,将放回结果输出,对于基本类型int、double之类的的会被包装成类类型再调用toString()方法

1、你写的那个 aa类没有重写toString()方法,就会调用父类Object的toString,建议重写toString方法

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

   类名包括完整的包名

3、还有一点,你的类名怎么叫 aa,命名有点不规划,要大写字母开头。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2