1.在计算机系统中,数值一律用二进制的补码来存储的。
2.二进制的最高位是符号位,0表示正数,1表示负数。
3.正数的值是其本身,负数的值是最高位(符号位)不变,其他的位逐位取反,再加1;
将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零就OK
比如:-11100;---这个是真值,---我们是以8位的进行出来位数的
原码:就是转化正常二进制的数据,
1. 10011100 ---- (-10011100的原码)
2. 先得到绝对值的原码 ----00011100
取反+1 -------11100011+1——>11100100
对应我们使用---转换工具:比如:http://tool.oschina.net/hexconvert/
这些都是不考虑最高位的符号的,---所以我们也不要感到怀疑,(比如:127 -127怎么转换成二进制的时候,没有什么变化,只在最前面加的了一个负号(-))
下面是一些概念性的东西:
1. 原码、反码、补码:
(1)在Java中,所有数据的表示方式都是以补码形式来表示
(2)正数:原码、反码、补码相同
(3)负数:符号位为1,其余各位是对原码取反,然后整个数加1
(4)~按位取反(反码加1称为补码。)步骤就是先求出这个数(因为java存的数是补码)的原码,然后对原码取反得到X,这个X就是我们要求的那个数的补的
2,在switch语句中,一定要,在美国case选项中,写不break,不然很容易出现 “贯穿” 的现象发生,,就是case的每个语句都执行,
3.逻辑运算中的 与 或 非 这个3个区别
长路与 (&) a&b 比如这个,这个表达式的左右两边都要进行判断,然后,再进行最终的判断,
短路与(&&) a&&b 比如这个,在判断这个的时候, 只要有一个是false,后面的另外一个判断都可以不用判断了,直接就出结果
长路或运算(|):将二边 关系运算的结果都计算出来,再进行判断。
短路或运行(||) :当运算符号的左边的关系运算结果是true时,不在进行右边的关系就是那,直接的结果的结果就是true
非运算:!
4.static 静态变量 静态方法,
5.jdk8的lambda语法的
主要是为了区别,匿名内部类的问题,
这个是举例了,简单的例子。
new Runnable(){ @Override public void run() { System.out.println("run方法的实现方法"); } }.run(); Runnable r=()->{ System.out.println("run方法的实现方法"); }; r.run();6.
// 大小写转换:ctrl+shift+u //ctrl+alt+u---显示数据结构7. java jdk8的新特性;
lambda表达式:
一:foreach循环:
Stream<People> stream = people.stream(); stream.forEach(people1 -> System.out.println(people1.toString()));二:过滤器:filter的使用
stream.filter(people1 -> people1.getGender().equals(People.Sex.FEMALE)) .forEach(people2 -> System.out.println("----"+people2.toString()));三:doublestream;