一开始就遇挫,这下路漫漫了。。。OCJP(001)

Given the following Java code:
System.out.printf ( "PI is approximately %f and E is approximately %b", 
Math.PI, Math.E);

Place the values where they would appear in the output.
(請將輸出結果的值放上去)

PI is approximately Place here 
and E is approximately Place here 

3

3.141593

true

Math.PI

2

2.718282

false

Math.E

然后,然后就懵了,这尼玛没遇过啊。。。不会啊。。。

printf不是C里面的吗?Java也有,你们有没有同感呢?

但是写一个测试主类之后出来了结果

PI is approximately 3.141593 and E is approximately true 

为什么呢,于是立马上网找答案:

原来printf是格式化输出的形式。

这里,"%f"的意思是一个doublefloat值的占位符,"%b"为一个boolean值的占位符,变量的参数在后面提供。

**如果为%B的话,输出的就是大写的TRUE和FALSE,如果是%b的话,那么输出的就是true和false。

在这里的实参名必须按顺序排并且类型也要相符。不然就会出错。如果我们把语句改为:

System.out.printf("PI is %d and E is %b", Math.PI,Math.E);

就会出错,提示的错误是:java.util.IllegalFormatConversionException: d != java.lang.Double
也就是说,你给的变量时double,但是的的占位符的格式不是double所以没有办法进行输出。

在输出的时候%f输出的时候,默认是小数点后面有六位,如果你的是整型2要输出成%f的话,就会变成2.000000

当然,如果你想输出小数点后面不是六位的话,可以修改占位符来进行调整,如果是%3f的话,那么小数点后面就有3位而已,以此类推。

下面还有一些其他的类型的占位符:

%d : 輸出10 進位整數, 參數必須為 Byte, Short, Integer, Long, BigInteger (可以 Autoboxing)
%f : 輸出10 進位浮點數, 參數必須為 Flot, Double, BigDecimal (可以 Autoboxing)
%o : 8 進位整數
%x : 16進位整數
%h : toHexString()
%s, %S : toString()
%e, %E : 科學記號表示法
%c , %C: 字元
%t, %T : 日期時間
%n : 分隔線

这些格式是参考解析上的,暂时没有使用过,暂且记下,以后还不会的话,再逐个的进行输出来加深记忆了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值