tips.Print的问题

《编程导论(Java)》中是tips.Print;设计模式中是tool..Print。

package tips;
import java.io.PrintStream;
/**
 * 到处都是System.out.println().如果一个例程中使用它们较多,请使用本类。
 * 1.2.1类体结构,练习要求阅读本类。
 * @see java.io.PrintStream
 * @author yqj2065
 * @version 0.1
 */
public class Print{
    public static void pln(Object x){
        System.out.println(x);
    }
    public static void pln(){
        System.out.println();
    }
    public static void p(Object x){
        System.out.print(x);
    }

    /**
     * 使用指定格式字符串和参数,打印格式化的字符串。
     */
    public static PrintStream pf(String format, Object... args){
        return System.out.printf(format,args);
    }
    public static void pfln(String format, Object... args){
        System.out.printf(format,args). println();
    }
}

一直用得好好的,但是没有重载System.out.println(char[]),于是出了问题。

今天看一个贴子,上面有Java Puzzlers的第12个谜题

    public static void main(String[] args) {
        String letters = "ABC";
        char[] numbers = {'1', '2', '3'};
        pln("1)" + letters + " easy as " + numbers);
        p("2)" + letters + " easy as ");
        System.out.println(numbers); // println(char[])
        System.out.println(new char[]{'1', '2', '3'});
        pln(new char[]{'1', '2', '3'});
    }

平时没有用过println(char[]),所以输出

1)ABC easy as [[email protected]

2)ABC easy as 123

觉得有点神奇。

    public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }

这个比较清楚——我叫输出为引用的“大概模样”

print(char[] s)  Prints an array of characters. The characters are converted into bytes according to the platform‘s default character encoding, and these bytes are written in exactly the manner of the write(int) method.

所以

char[] cs = {‘1‘, ‘2‘, ‘3‘};

System.out.println(cs);

打印:123

关键是,我在tips.Print中没有重载System.out.println(char[])!看不见上面的输出。

唯一的好处是:

char[] cs = null;

pln(cs);

System.out.println(cs);

pln(Object)不怕null,而System.out.print(char[] s) 会抛出NullPointerException(java.io.Writer.write())。

记录一下。懒得改tips.Print了。

时间: 2025-01-05 05:45:47

tips.Print的问题的相关文章

《编程导论(Java)·3.3.2 按值传递语义》

不要受<Java编程思想>的影响,计算机科学中的术语--按引用传递(pass-by-reference).不要搞成自说自话的个人用语. 这些术语也不是专门针对Java的,你不应该从某一本Java书上学习 不可以用于C.C++或Fortran语言的 特殊的"按引用传递". 验证按值传递很easy.在方法体中使用一个赋值语句,将形參作为左值. 按值传递时,对形參的赋值,不会影响实參.也就是说.那个赋值语句不会有不论什么副作用. 对于foo(A a),注意方法体中你要玩的是 a=

python3 实现堡垒机功能(并发执行命令及上传下载文件)

转载请注明出处,欢迎提出宝贵意见,谢谢! 功能介绍: 1.主机分组 登录后显示分组主机及主机数量 选择主机组后显示该主机组下所有主机信息,主机名及IP显示输入选择:1.执行命令利用线程并发组内所有主机同时执行命令,并将结果,返回格式为:----------------------host1------------------ ----------------------host2------------------ ----------------------host3-------------

《编程导论(Java)&amp;#183;3.2.4 循环语句》

本文全然复制<编程导论(Java)·3.2.4 循环语句>的内容.除[]中的说明文字.请阅读和比較其它编程教材. 我知道.假设我是一个刚開始学习的人,<编程导论(Java)>非常不适合自学.建议同学们阅读时,一定选择一本其它的书同一时候看,或上网. ,由于太一般或简单的内容.或我不想留在书中占用篇幅的东西,都省略了. 毕竟,网络上相关的一般描写叙述的内容.大把大把. 卓别林在<摩登时代>中.说明流水线上的工人在高强度下重复运行同一个动作是多么令人郁闷.然而循环/迭代(l

静态类型检查与继承

类型检查(type checking)是指确认任一表达式的类型并保证各种语句符合类型的限制规则的过程.Java是静态类型检查的语言,但是仍然需要运行期类型检查,并抛出可能的运行时异常. Wiki: Static type-checking is the process of verifying the type safety of a program based on analysis of a program's source code. Dynamic type-checking is th

《编程导论(Java)&#183;3.2.4 循环语句》

本文完全复制<编程导论(Java)·3.2.4 循环语句>的内容,除[]中的说明文字.请阅读和比较其他编程教材. 我知道,如果我是一个初学者,<编程导论(Java)>很不适合自学.建议同学们阅读时,一定选择一本其他的书同时看,或上网.,因为太一般或简单的内容.或我不想留在书中占用篇幅的东西,都省略了.毕竟,网络上相关的一般描述的内容,大把大把. 卓别林在<摩登时代>中,说明流水线上的工人在高强度下反复执行同一个动作是多么令人郁闷.然而循环/迭代(loop/iterati

附录B 知识单元与章节映射表

<编程导论(Java)>附录B 知识单元与章节映射表 按照美国计算机科学专业本科的教学计划--<计算课程2001> ,大学级别的计算机科学知识可以归纳成14个知识领域: 1.        离散结构 Discrete Structures (DS) 2.        编程基础Programming Fundamentals (PF) 3.        算法与复杂性Algorithms and Complexity (AL) 4.        体系结构与组织Architectu

8 TFTP代码详解 协议写在程序中

1.版本1:发送请求 # -*- coding:utf-8 -*- import struct from socket import * #0. 获取要下载的文件名字: downloadFileName = raw_input("请输入要下载的文件名:") #1.创建socket udpSocket = socket(AF_INET, SOCK_DGRAM) requestFileData = struct.pack("!H%dsb5sb"%len(download

if语句中有exit()语句

if len(sys.argv) != 2: print("-"*30) print("tips:") print("python xxxx.py 192.168.100.101") print("-"*30) #若if条件不满足,则跳出判断语句,不执行else语句 exit() 在程序中如果遇到if语句中有exit(),程序一旦从if语句中进入并执行到exit(),那么立即会跳出整个程序,不再执行. 原文地址:https:/

深入USB流量数据包的抓取与分析

0x01 问题提出 在一次演练中,我们通过wireshark抓取了一个如下的数据包,我们如何对其进行分析? 0x02 问题分析 流量包是如何捕获的? 首先我们从上面的数据包分析可以知道,这是个USB的流量包,我们可以先尝试分析一下USB的数据包是如何捕获的. 在开始前,我们先介绍一些USB的基础知识.USB有不同的规格,以下是使用USB的三种方式: l USB UART l USB HID l USB Memory UART或者Universal Asynchronous Receiver/Tr