摘要:
左移操作符<<, 右移又叫做“有符号”右移-》符号若为正,则在最高位插入0,符号若为符则在最高位插入1;不论对于正数还是负数<<i 就等于该数乘以2^i (这里保证不超数据类型)而对于右移操作来说就有些奇葩复杂了:首先右移不会改变符号位:正数右移就是对他的二进制原码右移然后补零的操作;而负数就麻烦了,首先负数的右移是对其补码的右移然后补1的过程:例如-3>>1源码:1(符号位)0000000000000000000000000000011反码:1(符号位)1111111111111111111111111111100补码:1(符号位)111111111111 阅读全文
摘要:
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==比较的是2个对象的地址,而equals比较的是2个对象的内容。显然,当equals为true时,==不一定为true;API里的类大部分都重写了equals方法,没有重写的一般是自己写的类,如果是你自己定义的一个类,比较自定义类用equals和==是一样的,都是比较句柄地址,因为自定义 阅读全文