- 几乎所有运算符都只能操作基本类型,唯一例外是=、==和!=,它们能操作所有对象。
- String类支持+和+=。
//: Equivalence.java
public class Equivalence {
public static void main(String[] args) {
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1 == n2);
System.out.println(n1 != n2);
}
} ///:~
以上程序输出:
false true
因为==、!=比较的是是对象的引用,若想比较两个对象的实际内容是否相同,需要使用特殊方法equals(),此方法不适用与基本类型。
当构建了自己的类Value,并用Value类构建了两个对象时,系统默认的equals()方法是比较引用是否相同。
- 大多数Java类库都实现了equals(),所以它实际比较的是对象的内容,而非它们的引用。
AND(&&),OR(||),NOT(!)只能用于布尔值。
按位运算符&(按位与),|(按位或),^(按位异或),~(非,一元运算符)
按位运算符可与等号(=)联合使用,以便合并运算及赋值:&=,|=和^=都是合法的(由于~是一元运算符,所以不可与=联合使用)。
- boolean不能进行按位NOT运算。
布尔表达式 ? 值0:值1逗号运算符
Java中唯一用到逗号的地方就是for循环
字符串+运算符若表达式以一个String起头,那么后续所有运算对象都必须是字符串。
int x = 0, y = 1, z = 2; String sString = "x, y, z "; System.out.println(sString + x + y + z);
在这里,Java编译程序会将x,y和z转换成它们的字符串形式,而不是先把它们加到一起
类型转换Java允许我们将任何基本类型“转换”为其他任何一种基本类型,但布尔值(bollean)要除外,后者根本不允许进行任何转换处理。“类”不允许进行转换。
- 十六进制:用一个前置0x或0X表示。
通常,表达式中最大的数据类型是决定了表达式最终结果大小的那个类型。若将一个float值与一个double值相乘,结果就是double;如将一个int和一个long值相加,则结果为long。
-
java没有sizeof(),因为它与平台无关,所有数据类型在所有机器的大小都是相同的。
-
将一个float或double值转换成整数值后,总是将小数部分“砍掉”,不作任何进位处理。
-
在Math.random()的输出中输出值范围是[0,1)。
(1) 写一个程序,打印出1到100间的整数。
class test{
public static void main(String[] args){
for(int i = 1; i < 101; i++){
System.out.println(i);
}
}
}
(2) 修改练习(1),在值为47时用一个break退出程序。亦可换成return试试。
class test{
public static void main(String[] args){
for(int i = 1; i < 101; i++){
if(i == 47)
break;//return ;
System.out.println(i);
}
}
}
(3) 创建一个switch语句,为每一种case都显示一条消息。并将switch置入一个for循环里,令其尝试每一种case。在每个case后面都放置一个break,并对其进行测试。然后,删除break,看看会有什么情况出现。
class test{
public static void main(String[] args){
for(int i = 0; i < 3; i++){
switch(i){
case 0:
System.out.println("num 0");
break;
case 1:
System.out.println("num 1");
break;
case 2:
System.out.println("num 2");
break;
}
}
}
}



