黑马程序员--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方法,会直接抛出空指针异常。所以valueOfnull映射成"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学习型技术博客、期待与您交流! ------------

 

原创粉丝点击