第3章 操作符
3.4 赋值
基本类型的赋值与C++/C一样
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import static java.lang.System.out; 2 public class HelloWorld{ 3 4 public static void main(String []args){ 5 int a = 3; 6 int b = a; 7 b = 5; 8 out.println("a : " + a + ", b : " + b); 9 } 10 } 11 /*Output : 12 a : 3, b : 5 13 */
对于引用类型,可以看作是C++的shared_ptr的赋值
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import static java.lang.System.out; 2 public class HelloWorld{ 3 4 public static void main(String []args){ 5 Integer a = new Integer(3); 6 Integer b = a; 7 out.println("a : " + a + ", b : " + b); 8 Integer c = new Integer(0); 9 b = c; 10 out.println("a : " + a + ", b : " + b); 11 b = 5; /* or b = new Integer(5) */ 12 out.println("c : " + c + ", b : " + b); 13 } 14 }/*Output 15 a : 3, b : 3 16 a : 3, b : 0 17 c : 0, b : 5 18 */ 19
如果对于shared_ptr不熟悉的话,可以试着变换一下上面的代码,更深入理解一下Java的引用与赋值的概念。
3.15 类型转换操作符
Java中没有Sizeof,Sizeof为了移植而生,Java不存在移植的问题。
boolean不允许进行转换。
char, byte, short进行运算,统统转换成int然后再运算(比如char + char的结果一定是一个int型,同理byte + short也是一个int型,甚至 byte ^ char也是一个int型;
int转到long不会失去精度,int转到float会失去精度,long转到double也会失去精度,int转到double不会失去精度。
向上的类型转换会自动进行(比如从int到long,从derived class到base class),但从上向下的类型转换就需要使用Java的类型转换。
Java的类型转换与C的类型转换格式一样:(derived class)base object。