1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
package org.example.interview; import org.junit.Test; import java.util.HashMap; import java.util.Objects; public class HashMapTest { /** * 用于测试: */ @Test public void test() { HashMap<String, Object> map = new HashMap<>(); System.out.println(Objects.hashCode("nihao")); } /** * 用于测试:^ 异或 相同为0 不同为1 */ @Test public void testOperationDemo() { System.out.println("2和3的异或 结果是:"+(2^3)); /** * 那么这个1是怎么来的,我们要知道^、<<、>>等位运算符主要针对二进制,算异或的时候相同的为0,不同的为1 * 2转换成二进制是0010 * 3转换成二进制是0011 * 所以0010^0011的结果就是0001转换成十进制是1 ,所以2^3=1 * * */ } /** * 用于测试:<<向左位移,先看段代码 */ @Test public void test2() { System.out.println("2<<3运算的结果是 :"+(2<<3)); // 2<<3运算的结果是 :16 /** * 数字 2 的二进制 是 0010 向左移3位后面用000不齐, * * 结果是10000 二进制的10000转换成十进制是16(从右往左分别是1,2,4,8,16,32….) * 10000 2的4次方 */ } /** * 用于测试:>>向右位移,代码如下 */ @Test public void test3() { System.out.println("2>>3运算的结果是 :"+(2>>3)); //2>>3运算的结果是 :0} /** * 2 转为 2 进制 0010 * 原理和左移是一样的,先转成二进制0010,再向右侧移动三位,向右侧移动的时候在左侧不齐0,移动几位不齐几位,移动后的二进制是0000 转成十进制就是0了。 */ } /** * 用于测试:&运算 按位“与” */ @Test public void test4() { System.out.println(1&2); // 0、 /** * * 0001 * 0010 * ----- 计算后 * 0000 * &运算 按位“与”的计算是把两个数字分别写成二进制形式,然后按照每一位判断,&计算中,只要有一个是0就算成0 */ } } |

