× 除/,取余%,整数做除法,会把结果中小数点后面全部去掉,而不是四舍五入。
× 取得随机数的类java.util.Random中包含nextInt()、nextFloat()、nextDouble()等方法。
× 正则表达式(regular expressions)是一种采用定义的术语来描述字符串的方法,相关的包为java.util.regex.*。
× 对于Primitive变量,关系运算符==和!=工作的很好。
对于类变量,==和!=比较的是对象的reference。每个类都是从Object类继承来的,这个类有一个equals()方法:
public boolean equals(Object obj) {
return (this == obj);
}
可见,该方法还是比较的两个对象的reference。那么,要比较两个对象的实际内容,该怎么办?只能是给在类内实现(override)具体的、专门的equals()方法,否则,还是比较的两个对象的reference。
绝大多数java类库中的类都override了equals()方法,所以它们会比较对象的内容而不是reference。
× JVM处理逻辑运算符时,会使用短接(short circuiting)规则,以达到性能的提高。
× 使用三元运算符能使代码更紧凑:return x<0?-x : x ;
× 类型转换:
在情况合适的情况下,Java会自动的实现数据类型的转换。如:将int型值赋给float型变量,编译器会自动将这个int转换为float。
在遇到不能实现自动转换的情况时,可以强制类型转换。
Java的类型转换是安全的,遇到narrowing conversion的时候,会产生一个异常。
Java允许除boolean之外的所有primitive类型数据进行任意的转换。
× 表达式中的最大的数据类型决定了表达式结果的数据类型。
× do{…} while(true/false);
× 在for语句的“初始化”和“步进调整部分”可以使用逗号分隔语句。
× 在循环语句的正文里,可以使用
break和continue语句控制循环的流程。
Java中包含goto保留字,但没有使用goto保留字。
label1:
outer-iteration {
inner-iteration {
break; //中断内部循环,退到外部循环
continue; //重新移到内部循环的开始
continue label1; //退出内部、外部循环,退到label1处,再重新进入外部、内部循环
break label1; //退出内部、外部循环,退到label1处,再从这个标签标识的循环底部“溜出”(不再进入循环)
}
}
× Math.random()生成的是0到1之间的随机值。
× Switch语句中的选择条件必须能产生int或char这样的整数值的选择条件。
Switch语句中的
break语句是可选的,一般每个case语句中都要使用
break语句,但不使用
break语句也是可以的,还能设计出巧妙的程序。
Break语句退出整个switch语句。仔细体味下面的判断元音辅音的程序断:
char c = (char)(Math.random() * 26 + 'a');
switch(c) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u': System.out.println("vowel");
break;
case 'y':
case 'w': System.out.println("Sometimes avowel");
break;
default: System.out.println("consonant");
}