使用Java操作符
几乎所有操作符都只能操作“基本类型”。例外的是 “=”,“==”,“!=”,这些操作符能操作所有对象。 String类支持“+”和“+=”的操作。
优先级
System.out.println()语句中包含“+”操作符,这里的“+”表示字符串连接和字符串转换。当1编译器观察到一个String后面跟着1个“+”后面又跟着一个非String元素,会尝试着把这个元素转化成String。
赋值
基本数据类型的赋值都是复制,对象赋值实际上是将“引用”从一个地方赋值到另一个地方,所以如果对象赋值c=d,则c和d都指向原本只有d指向的那个对象。
自动递增和递减
前缀式 ++a, 先增加a再赋值。 后缀式a++, 先赋值再增加a。
关系操作符
等于“==”和不等于“!=”适用于所有的基本数据类型。对于对象类型,等于“==”和不等于“!=”比较的是引用的对象。如果比较2个对象的实际内容是否相同,则用equals(),但是这个方法不适用于基本类型,基本类型用等于“==”和不等于“!=”即可。
指数计数法
Java中 1.39e-43 中的e是10的幂次,“e”代表的是10的x方,而不是自然对数的基数2.718.
三元操作符
boolean-exp ? value0 : value1
三元操作符也称为条件操作符,他是操作符的一种,于if-else完全不同,因为它会产生一个值。
类型转换操作符
如果要执行“窄化转换(narrowing conversion)”的操作,也就是说将容纳更多信息的数据类型转换成无法容纳更多类型的数据类型,则有可能面临数据的丢失。 例如:
long l = ......;
int i = (int) l;
在转化浮点型到整数的窄化转换时,会对改数字进行截尾,即去掉浮点。如果要用四舍五入则需要用Math.round()方法。
而对于“扩展转换(widening conversion)”,则不必显示地进行转换,数据不会造成任何丢失。
Java允许我们把任何基本数据类型转换成别的基本数据类型,但除boolean类型外。
对于基本数据类型运算或者按位运算,只要类型比int小,那么这些值在运算之前会自动转换成int。 通常表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。如果将一个float值于double值相乘,结果就是double;如果将一个int和一个long值相加,结果就是long。对于char,byte,short的任何运算,都会获得一个int类型
Sizeof
Java中没有sizeof, 因为所有数据类型在所有机器中的大小都是相同的,不需要考虑移植问题。