第三章 操作符(java操作符)

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

3.1更简单的打印语句

这篇简单介绍了下静态导入的概念

import static net.mindView.util.Print.*

import+static

3.12 使用java操作符

几乎所有的操作符都只能操作“基本类型”   =     ==  != 可以操作所有对象     String类支持 +   +=

3.13 优先级

先乘除后加减  要经常使用 ()   来表明优先级

String类型 +  非String类型     但编译器看到后 会强制将非String转化为String类型

3.14 赋值

=    表示 将右边的值,把他赋值给左边

对于基本数据类型 a = b  那么b的内容就复制给a了     如果修改a  b 并不受影响

但是对于对象赋值来说  是将 b引用复制给 a     a 与 b 同时指向 同一个堆内的对象  对a b 操作会相互影响

3.4.1 二进制算法  


第三章 操作符(java操作符)_第1张图片
十进制转二进制  注意求的是余数


第三章 操作符(java操作符)_第2张图片
二进制转十进制 8*1+4*1+2*0+1*1=13



第三章 操作符(java操作符)_第3张图片
二进制小数转十进制 0.以后为负幂 0.5*1+0.25*1=0.75


3.14.2  按位运算 

1.^(亦或运算) ,针对二进制,相同的为0,不同的为1

2  ---> 0010

3  ----> 0011

结果--->0001     --->1

2.&(与运算) 针对二进制,只要有一个为0,就为0

2  ---> 0010

3  ----> 0011

结果--->0010    ----> 2

3.~(非运算)   针对二进制  一元运算符 0转1  1转0

2  ---> 0010

~  

结果--->1101   具体多少位 要看 os 系统是多少位的 32 位   2 为 0000 0000 0000 0010

                                                                                         取反为 1111  1111  1111  1101

3.14.3  移位操作符    移位方向看箭头

1.<<(向左位移)   针对二进制,转换成二进制后向左移动n位,后面用0补齐 

2  ---> 0010       2<<3   2向左移动三位(后面补三个0)

结果 --->    0010000   --->2^4 = 16

2.>>(向右位移) 针对二进制,转换成二进制后向右移动3位

2 --->0010          2>>3  2向右一定3位

结果-->0000         结果为0

这里需要注意  >>   右移 是有符号移动  若为正数 需要在最高位补0 若为负数要在最高位补1

3.>>>(无符号右移) 移动方式和 >> 一致  但是属于无符右移,最高位不管正负都只在高位补0

注意:对 char byte short 进行移位处理  在移位进行前,他们就转化成int 类型了  

并以int类型的值返回结果。只有数值的低5五位才有用。这样可以防止我们位移超过int类型的所有的位数

3.4.1 使用操作符时常犯的错

while(x=y){ // 除非 x 和 y 都是boolean 类型 否则不可能是正确的

}

3.15.1 类型转化操作符

窄转换:窄转换是指 我们将精度高(数据的位数较高)的基本类型转化为精准度低的基本类型 这样做会造成数据信息的丢失 所以java要求 进行强制转换(显示转换)    int k = 5 ;  short  f = (short)k;//显示 

扩展转换:扩展转换是指 我们将精度低(数据的位数较低)的基本类型转化为精度较高的基本类型 这样不会造成数据的丢失 所以可以使用隐式转换      int k = 5 ; long f = k;  //隐士

java允许我们将任何基本类型转换成 别的基本数据类型  boolean 除外

3.15.2 截尾和舍入

folat double 转为 int 类型时 常常会产生 截尾问题   即  4.5 --》4     4.9---》4  

这是可以使用 Math.round() 方法

Math.round(4.6)---》 5

3.15.3 提升 

当低   精度数据类型 * 高精度数据类型 会自动转化为高精度数据类型

比如 5*0.1   = 0.5   int * float = float 类型

3.16 java没有sizeof

c c++ 中 通过 sizeof() 操作可以获得 数据项被分配了多少字节数 

不同数据类型在不通机器上可能大小不一样 比如32 位的计算机 比 16位的能够保存更大的整数

所有移植对c c++程序猿颇为头疼

java不需要这些 因为 所以基本数据类型的大小是固定的

并不全 有些地方进行了省略

你可能感兴趣的:(第三章 操作符(java操作符))