Loading...

-----

#第三章 操作符

**在最底层,java 中的数据是通过使用操作符来操作的**

------

- 赋值操作符 “ = ” ,意思是取右边的值赋值给左边的值,右边是一个值,左边必须是一个明确的、已命名的变量。

- 算数操作符 + - * / %

- ++a(--a)是前缀递增(递减),前缀递增(递减)表示先运算,再生成值。

- a++(a--)是后缀递增(递减),后缀递增(递减)表示先生成值,再运算 。

- 大多数时候,对于比较 : == 和**!= 比较的是对象的引用,**equals()**比较的是对象的内容.但是基本类型可以使用== 和!=来进行比较

- 与(&&)、或(||)、非(!)操作只可用于布尔值的比较,会出现短路现象,当确定值的候,剩下的表达式将不会进行计算。

- 通过使用Integer和Long类的静态方法toBinaryString()可以将十六进制或者八进制的树转换为二进制的数进行输出。

- **e 代表自然对数的基数,约等于2.718(java中的Math.E给出了更为精确的double对的值)。1.39 x e-43 这样的指数表达式意味着1.39x2.718-43。当看到**1.39e-43f**这样的表达式得时候,它真正的含义是**1.39x10-43**

- 按位操作符用来操作的是整数基本数据类型中的单个“比特”(bit),即二进制位。按位操作符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果。

按位与 ( & )

|参数1/参数2|1|0|

|:--:|:--:|:--:|

|1|1|0|

|0|0|0|

按位或 ( | )

|参数1/参数2|1|0|

|:--:|:--:|:--:|

|1|1|1|

|0|1|0|

按位非(^)

按位非(~),也被称为去反操作符,他属于一元操作符,只能对一个数进行操作,生成与输入位相反的数。(1 or 0)

* 移位操作符操作的运算对象也是二进制的“位”,移位操作符只可用来处理整数类型,左移操作符(<

* 三元操作符也被称为条件操作符 。 boolean-exp? value0 : value1 , 如果布尔表达式的值为true,就计算value0,如果是false,就计算value1

* 操作重载( operator overloading ) . 如果表达式以一个字符串开头,那么后续所有操作数必须是字符类型(编译器会把双引号内的字符序列自动转换成字符串)

* 按位与,按位或代替逻辑与,逻辑或。按位使用单字符,逻辑使用双字符。

* 类型转换 (cast),想要执行类型转化,需要将希望得到的数据类型置于圆括号内,放在要进行类型转换的值得左边。

```java
int i = 200 ;
long lng = (long)i ;
```

* 窄化转换 ( narrowing conversion ),就是将能容纳更多信息的数据类型转换成无法容纳那么多信息的类型,有可能面临信息丢失的危险,这个时候编译器会强制进行类型转化。

* 扩展转换 ( widening conversion) ,不用显示的进行类型转换,因为新类型肯定能容纳原来类型的信息。

* java允许把任何基本数据类型转换为别的基本数据类型。

* 对于截尾和舍入。如果没有进行说明,默认的再将 float 或者 double 转换为整形的时候,总会对该数字进行截尾。想要得到舍入的结果,需要使用 java.lang.Math 中的round() 方法。

* 通常表达式中的出现的最大的数据类型决定了表达式最终结果的数据类型。

* java 不需要使用 sizeof() 来进行数据大小的计算,因为在 java 中所有的数据类型在所有机器中的大小都是相同的。