您的位置:首页 > 其它

system.out.println触发联想

2015-08-27 17:44 423 查看
1、system.out.println();可以输出基本类型和类类型,可以直接输出string类型对象。

2、其实system.out.println();输出的是类的toString方法,所以非string对象也可以被system.out.println输出,但是很有可能是乱码,如:

class Node {
int number;
Node nextNode;
Node(int i){
this.number=i;
}
}
Node tNode  = new Node(3);
System.out.println(tNode);


打印输出的是:Node@1aa9f99.所以必须重写toString方法,每个类都有toString()方法。
3、数组也是类,有些数组为了显示,就定义了往String类型转换的方法:

<span style="white-space:pre"> </span>byte[] bytes = new byte[]{1,2,4};
System.out.println(bytes);结果输出是:[B@1b15692,
byte[] bytes = new byte[]{1,2,4};
System.out.println(Arrays.toString(bytes));结果输出是:[1, 2, 4];但是切记,是Arrays.toString(),不是bytes.toString().   int数组、short数组均是这种形式。

但是:

char[] chars = new char[]{'1','2','3'};
System.out.println(chars);输出是:123。就是直接按字符串输出了。

4、集合框架类:

List list = Arrays.asList("nimei","mausu","caoni");
List list1 = Arrays.asList(1,2,3);
System.out.println(list);
System.out.println(list1);打印输出:  框架类中只有List可以被Arrays转化。
[nimei, mausu, caoni]

[1, 2, 3]

HashSet<String> hs = new HashSet<String>();
hs.add("B");
hs.add("A");
hs.add("D");
hs.add("E");
hs.add("C");
hs.add("F");
hs.add(null);
System.out.println("HashSet 顺序:\n"+hs); 打印输出:
HashSet 顺序:

[null, D, E, F, A, B, C]

但是如果set或者是list里面装的是其他的类(自己定义的类)就不行了。如下:

class Node {
int number;
Node nextNode;
Node(int i){
this.number=i;
}
// @Override
// public String toString() {
// // TODO Auto-generated method stub
// return ""+number;
// }
}

<span style="white-space:pre"> HashSet<Node> hashSet = new HashSet<Node>();
<span style="white-space:pre"> </span>hashSet.add(new Node(1));
<span style="white-space:pre"> </span>hashSet.add(new Node(2));
<span style="white-space:pre"> </span>hashSet.add(new Node(3));
<span style="white-space:pre"> </span>hashSet.add(new Node(4));
<span style="white-space:pre"> </span>hashSet.add(new Node(5));
<span style="white-space:pre"> </span>System.out.println(hashSet);</span>打印输出的是:
[Node@18b3364, Node@530cf2, Node@181ed9e, Node@76fba0, Node@1db05b2]

如若,想正常打印,要重写toString:

class Node {
int number;
Node nextNode;
Node(int i){
this.number=i;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return ""+number;
}
}

<span> HashSet<Node> hashSet = new HashSet<Node>();
<span> </span>hashSet.add(new Node(1));
<span> </span>hashSet.add(new Node(2));
<span> </span>hashSet.add(new Node(3));
<span> </span>hashSet.add(new Node(4));
<span> </span>hashSet.add(new Node(5));
<span> </span>System.out.println(hashSet);</span>
//打印输出为[1, 3, 5, 4, 2];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: