Thinking in Java 4th chap2笔记(二)
ublic static void main(Stringargs)
{
//0x-16进制
int i1 = 0x2f;//f 小写
//转为2进制
System.out.println("i1:" + Integer.toBinaryString(i1));
//转为16进制
System.out.println("i1:" + Integer.toHexString(i1));
//转为8进制
System.out.println("i1:" + Integer.toOctalString(i1));
System.out.println(i1);
//0x-16进制
int i2 = 0x2F;//F 大写
System.out.println("i2:" + Integer.toBinaryString(i1));
System.out.println(i2);
//0-8进制
int i3 = 0177;
System.out.println("i3:" + Integer.toBinaryString(i3));
//char能表示的16进制的最大值,char,2个字节,因为是字符->0-2的16次方-1
char c = 0xffff;
System.out.println("c:" + Integer.toBinaryString(c));
//byte的16进制表示的最大值,因为byte1个字节,-128-127
byte b = 0x7f;
System.out.println("b:" + Integer.toBinaryString(b));
//short的16进制表示的最大值
short s = 0x7fff;
System.out.println("s:" + Integer.toBinaryString(s));
//long的后缀--小写l容易和1混淆
long n1 = 200L;
long n2 = 200l;
//float的后缀
float f1 = 1;
float f2 = 1f;
float f3 = 1F;
//double的后缀
double d1 = 1;
double d2 = 1d;
double d3 = 1D;
//TODO 此会编译错误,因为0.2默认为double,应该改为0.2f
// float f4 = 0.2;
float f5 = 0.2f;
//TODO 试图向一个变量赋值超过自身范围的数值,编译器会报错
//byte b2 = 128;Type mismatch: cannot convert from int to byte
byte b2 = 127;
//TODO 输出各数据类型的最大值/最小值
System.out.println("byte:" + Byte.MIN_VALUE + "-" + Byte.MAX_VALUE +
" " + Integer.toHexString(Byte.MIN_VALUE) + "-" + Integer.toHexString(Byte.MAX_VALUE));
System.out.println("char:" + Character.MIN_VALUE + "-" + Character.MAX_VALUE +
" " + Integer.toHexString(Character.MIN_VALUE) + "-" + Integer.toHexString(Character.MAX_VALUE));
System.out.println("short:" + Short.MIN_VALUE + "-" + Short.MAX_VALUE +
" " + Integer.toHexString(Short.MIN_VALUE) + "-" + Integer.toHexString(Short.MAX_VALUE));
System.out.println("int:" + Integer.MIN_VALUE + "-" + Integer.MAX_VALUE +
" " + Integer.toHexString(Integer.MAX_VALUE) + "-" + Integer.toHexString(Integer.MIN_VALUE));
System.out.println("long:" + Long.MIN_VALUE + "-" + Long.MAX_VALUE +
" " + Long.toHexString(Long.MAX_VALUE) + "-" + Long.toHexString(Long.MIN_VALUE));
//TODO 将float或者double转为整型的时候,总会截尾
System.out.println((int)0.1);
System.out.println((int)0.9f);
//TODO 如果需要舍入,则需Math.round
System.out.println(Math.round(0.9));
System.out.println(Math.round(0.4));
}
}
package com.book.chap2.operator;
//TODO 静态导入,这样就不必每次都敲System.out了
import static java.lang.System.out;
/**
*
*循环标签-标签是后面跟有冒号的标识符
*
* 1.java中,标签起作用的唯一地方是刚好在迭代语句之前:即在标签和迭代语句之间置入任何语句都不好
* 2.在迭代之前设置标签的唯一理由是:我们希望在其中嵌套另一个迭代或者一个开关switch;break和continue只能中断当前循环,与标签一起使用,则会中断循环,直到标签所在地方
* 3.注意:在java中使用标签的理由就是因为有嵌套迭代的存在,而且想从多层嵌套中break或者continue
*
*
*@author landon
*@since JDK1.6
*@version 1.0 2012-3-21
*
*/
public class LoopLabel
{
p