黑马程序员--09.IO流--08.【PrintStream_println( )】【PrintStream_print( )】【String_valueOf( )】【个人总结】
来源:互联网 发布:matrix矩阵计算器安卓 编辑:程序博客网 时间:2024/04/30 14:39
PrintStream的println方法总结
PrintStream的print方法总结
String的valueOf方法总结
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
1. System.out.println(xxx)和print(xxx)方法
1). PrintStream的打印方法初步
(1). System.out.println(xxx)方法
[1]. System类属性out的类型是java.io.PrintStream类
public final static PrintStream out = nullPrintStream();
(2). PrintStream的println和print的方法----重载方法
(3). 按照参数的类型对PrintStream的重载方法println和print的分类
[1]. 参数是基本数据类型(六种)
字符型char、浮点型float和double、整形中的两种int和long(没有显示给出byte和short)
【注意】由于int类型是默认的整形类型,所以一旦println或者print方法中输入的是byte或者short类型,编译器会自动把实参是byte或者short类型的参数交给int类型的print或者println来处理。
验证:
[2]. 参数是字符数组类型
char[]
[3]. 参数是类类型
{1}. String {2}. Object
[4]. 空参数类型[print方法没有空参数]
2). println方法的基本源码
(1). 基本数据类型、字符数组和String类类型参数 ----源码
[1]. 源码总结
public void println(int/long/float/double/char/boolean/char[]/String x) { synchronized (this) { print(x); newLine(); }}[2]. 执行步骤
{1}. 首先println根据调用各自的类型调用相应参数的print方法
{2}. 然后调用PrintStream的私有方法newLine()
【注意】
这个newLine方法不是BufferedWriter的newLine,而是PrintStream的私有方法
(2). 类类型:Object类型参数 ----源码
[1]. 源码
public void println(Object x) { String s = String.valueOf(x); synchronized (this) { print(s); newLine(); }}
[2]. 执行步骤
{1}. 首先通过String的静态valueOf方法将Object指向的对象转换成String类型的对象
{2}. 后面的步骤同其他类型的步骤。
(3). 空参数的println源码
public void println() { newLine();}
只加了一个换行符。
3). print方法的基本源码
(1). 基本数据类型、Object类类型参数 ----源码
[1]. 源码
public void print(int/long/float/double/char/boolean/Object x) { write(String.valueOf(x));}
[2]. 执行步骤
直接调用String的valueOf方法将基本数据类型 +Object类型的对象转换成String类型的对象,然后将转换好的字符串写入write方法中。
(2). 字符数组类型和String类类型参数 ----源码
源码
public void print(char[]/String X) { write(x);}
【注意】String参数传进来的时候,做一下非空判断
if (x == null) { x = "null";}
2. String.valueOf(xxx)重载方法源码总结
由于PrintStream类的print代码底层调用的是String的静态方法valueOf,这里面就总结一下valueOf的源码。
1). String的valueOf(xxx)重载方法
(1). String.valueOf方法一览表
(2). String的valueOf(xxx)重载方法的分类
[1]. 参数是基本数据类型(六种)
boolean、char、long、int、float和double
[2]. 参数是字符数组类型(两种重载)
{1}. char[] {2}. char[], int, int
[2]. 参数是Object类类型
2). String的valueOf(xxx)重载方法源码分析
(1). 四种数值基本数据类型 ----源码
这四种数值基本数据类型是:long、int、float和double
[1]. 源码
public static String valueOf(int/long/float/double x) {//整形:int和long对应的toString有两个参数return Integer/Long.toString(x,10);//或者//浮点型:float和double对应的toString只有1个参数return Float/Double.toString(x);}
[2]. 执行思想
就是分别调用整形或者浮点型对应的包装类的静态toString()方法
【注意】toString是包装类自定义的静态方法,不是Object类的非静态的toString方法。
(2). boolean基本数据类型、Object类类型参数 ----源码
[1]. 执行思想
boolean和Object类型的参数都是先分别判断参数是否是某个值,分两种情况进行字符串映射并返回
[2]. 源码
{1}. boolean类型参数
public static String valueOf(boolean b) { return b ? "true" : "false";}
{1}1. 判定传入的b是否是true
{1}2. 如果b是true,valueOf返回String字符串"true"
{1}3. 如果b是false,valueOf返回String字符串"false"
{2}. Object类型参数
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString();}
{2}1. 判定传入的obj是否是null
{2}2. 如果obj是null,valueOf返回String字符串"null"
{2}3. 如果obj是非空,valueOf返回调用对象的toString方法
之所以在这里判断一下obj是否为null,原因就是如果null也调用toString方法,会直接抛出空指针异常。所以valueOf将null映射成"null"作为返回值。
【注意】只有Object对象的非空的时候,才会调用toString方法。
(3). char基本数据类型、两个关于char[]的重载参数 ----源码
[1]. 执行思想
无论是字符数组还是字符,都依靠String的重载构造方法
String(char[] data, int off, intcount)来完成从有关字符的数据向String类型的数据的转换。
【注意】字符类型的数据先包装成仅仅含有一个元素的字符数组,再使用上述的String的重载构造方法进行转换。
[2]. 源码
{1}. char[], int, int类型参数 ----源码
public static String valueOf(char data[], int offset, int count) { return new String(data, offset, count);}
{2}. char[]类型参数 ----源码
public static String valueOf(char data[]) { return new String(data);}
{3}.char类型参数 ----源码
public static String valueOf(char c) { char data[] = {c}; return new String(0, 1, data);}
【注意】先把char包装成char[],别的一样
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
- 黑马程序员--09.IO流--08.【PrintStream_println( )】【PrintStream_print( )】【String_valueOf( )】【个人总结】
- 黑马程序员----io流总结
- 黑马程序员------------------io流总结
- 黑马程序员 IO流总结
- 黑马程序员 IO流总结
- 黑马程序员-------io流总结
- 黑马程序员---IO流总结
- 黑马程序员--IO总结
- 黑马程序员----IO总结
- 黑马程序员-IO总结
- 黑马程序员--IO总结
- 黑马程序员:IO流相关知识总结
- 黑马程序员----IO流的总结
- 黑马程序员--IO流部分总结
- 黑马程序员------IO流总结笔记一
- 黑马程序员------IO流总结笔记二
- 黑马程序员-----IO流总结笔记三
- 黑马程序员_java IO流总结
- 39岁研究生毕业14年的经验和教训
- 适用于连续资源块的数组空闲链表的算法
- 查找数组中某个出现次数超过数组长度一半的数字
- db2数据字典
- 释放对象数组:delete与delete[]
- 黑马程序员--09.IO流--08.【PrintStream_println( )】【PrintStream_print( )】【String_valueOf( )】【个人总结】
- 1090. Highways
- Sqlserver数据字典
- C++中delete, new以及new [], delete[]操作符内幕
- 2011 Fuzhou Online HDU 4068
- 新手上路之Hibernate(5):继承映射
- 2011Fuzhou Online HDU4070
- 【学习日记】JavaScript基础
- 编程之美3.3--计算字符串的相似度