java学习笔记
:>>带符号右移。正数右移高位补0,负数右移高位补1。
比如:
4 >> 1,结果是2;-4 >> 1,结果是-2。-2 >> 1,结果是-1。
:>>>无符号右移。无论是正数还是负数,高位通通补0。
对于正数而言,>>和>>>没区别。
对于负数而言,-2 >>> 1,结果是2147483647(Integer.MAX_VALUE),-1 >>> 1,结果是2147483647(Integer.MAX_VALUE)。
以下代码可以判断两个数的符号是否相等
return ((a >> 31) ^ (b >> 31)) == 0
count = count++
原理是 temp = count; count = count+1 ; count = temp;
因此count始终是0 这仅限于java 与c是不一样的
静态块:用static申明,JVM加载类时执行,仅执行一次
构造块:类中直接用{}定义,每一次创建对象时执行
执行顺序优先级:静态块>main()>构造块>构造方法
例子2:
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
语句:b3=b1+b2编译出错
被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;
在编译时就已经变为b6=10了
而b1和b2是byte类型,
java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,
赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。
byte short char运算时都会转为int类型
char型在进行计算时,是自动转化为int类型的,是转换成ASCII码来计算的,如a=97
例子3:
我们在执行URL u =new URL(“http://www.123.com”);
这句话的时候确实要抛出异常,但是这个异常属于IOException,
不管网址是否存在,最后都会返回该网址的一个连接,打印出来就是该网址。
对于-7而言:
原码:1000 0111
反码:1111 1000
补码:1111 1001
补码就是反码加一
父类静态域——》子类静态域——》父类成员初始化——》
父类构造块——》1父类构造方法——》2子类成员初始化——》
子类构造块——》3子类构造方法;
普通成员变量和普通代码块是同级的 执行按照先后顺序进行
double d1=-0.5;
System.out.println(“Ceil d1=”+Math.ceil(d1));
System.out.println(“floor d1=”+Math.floor(d1));
Ceil d1=-0.0
floor d1=-1.0
ceil:大于等于 x,并且与它最接近的整数。
floor:小于等于 x,且与 x 最接近的整数。
至于为什么是-0.0,而不是0.0,
因为源码注释:“If the argument value is less than zero but greater than -1.0, then the result is negative zero ”,
翻译过来就是:如果参数是-1.0到0.0之间的数,结果是-0.0。
使用反射可以看出子类是继承了父类的私有方法的(不管是否是final),
只是直接调用父类的私有方法是不可以的,但是利用反射的方式可以调用。字段同理
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/64719.html