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@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>
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];
相关文章推荐
- c++虚函数
- PHP高效文件缓存类FCache
- LoadRunner性能测试--%Disk Time 计数器值超过100%
- C# in depth (第九章 Lambda表达式和表达式树)
- 【转】纯 CSS 实现高度与宽度成比例的效果
- js延迟函数
- Oracle权限管理
- C语言之指针与函数
- 基于Flume的美团日志收集系统(一)架构和设计
- 【2015/8/27】当我们在说平台的时候,我们究竟在说什么。
- 传一些小工具上来
- 抽象类和普通类的区别
- cas官网
- 分析rails日志,计算响应率
- 薛定谔的猫
- 上升序列
- Loadrunner Analysis之Web Page Diagnostics
- Android任务和返回栈完全解析,细数那些你所不知道的细节
- Hdu oj 2546 饭卡
- ARM JTAG 信号 RTCK 应该如何处理?