SCJP考试试题解析六

我的QQ号:2535279 
我的QQ群:58591592

www.javaedu.com.cn

这个题目很简单的,就是让你说出它的执行结果,我这里也不把选项列出来了,大家自己就能看出来的

public class Tester {

    public static void main(String[] args) {
        System.out.printf("Pi is approximately %f and E is approximately %b",
                Math.PI, Math.E);

    }

}

输出结果为:Pi is approximately 3.141593 and E is approximately true

有过C编程经验的朋友一定会对printf()方法的功能难以忘怀,他们在学java语言时常不免感慨:"是的!是printf(),他们忘了把printf()放进去了...".

有时,printf()方法中可以指定参数来进行输出的功能确实令人难以割舍.Java从J2SE5.0开始,已经给了C用户类似printf()的功能.

API中给我们的解释是这样的:

public PrintStream printf(String format,Object... args)使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。

参数:
format - 在格式字符串的语法中描述的格式字符串
args - 格式字符串中的格式说明符引用的参数。

 
"Pi is approximately %f and E is approximately %b"这个字符串,里面的格式控制符会被后面的变量的内容所替代,其他的会原样输出.这里有两个格式控制符有%f和%b.是什么意思呢?

%f的意思是,将结果格式化为十进制数
%d的意思是,将结果转换成一个布尔型的值.比较有意思的是,我们来看一下%b对于返回值勤的定义是这样的:"如果参数 arg 为 null,则结果为 "false"。如果 arg 是一个 boolean 值或 Boolean,则结果为 String.valueOf() 返回的字符串。否则结果为 "true"。" 

我们的第二个参数是:Math.E既不为空,也不是布尔型的值,那么,肯定结果是true了