java优秀代码赏析,java编程宝典
java 代码解析
设u和v是类A的两个对象——u和v是类A的两个实例?
灵璧ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
u==v
的意思是判断u和v是否是同一个实例。
如果返回true,表示u和v是A的同一个实例。
如果返回false,表示u和v是A的两个不同实例。
一段有意思的java代码请大家解释~
原理很简单,因为在java中,int是占4个字节大小,double占8个字节的大小,当你把某变量乘以2的时候,在计算机里面的处理方式是左移一位。当使用浮点数进行乘法运算时,若结果很大,会以科学计数法表示。
下面具体分析:
1、表达式0x7FFFFFFF == (int)(0x7FFFFFFF * 2.0)
0x7FFFFFFF 已经占了4个字节,也就是int型的最大范围,以二进制表示出来为01111111 11111111 11111111 11111111
0X7FFFFFFF*2.0 计算出来的结果为double型,那么结果将会以科学计数法来表示,也就是4.294967294E9, 以二进制表示为0 11111111 11111111 11111111 11111110,以16进制表示为0xFF FF FF FE,注意,这里的计算结果并没有超出double的范围8字节。
(int)(0x7FFFFFFF * 2.0) 在上面已经看到0x7FFFFFFFF的二进制表示为01111111 11111111 11111111 11111111乘以2就表示左移一位,结果为0 11111111 11111111 11111111 11111110 (注意,这个数并未超出8字节的范围)然后再把结果强制转换为int型,也就是从最高位开始向下取4个字节,因此最后一位的0被丢弃(取double的最大值,因此丢弃最低位),最后结果以二进制表示为01111111 11111111 11111111 11111111,以16进制表示为0x7F FF FF FF,可以看到与0x7FFFFFFFF的相同,因此第一个表达式0x7FFFFFFF == (int)(0x7FFFFFFF * 2.0)反回true。
2、表达式(int)(0x7FFFFFFF * 2.0) == (int)(0x7FFFFFFF * 2)
(int)(0x7FFFFFFF * 2.0)这部分的结果在上面介绍过了,这里就不用介绍了,结果还是为0x7F FF FF FF。
(int)(0x7FFFFFFF * 2) 其中0x7FFFFFFF*2表示把0x7FFFFFFF左移一位,其二进制结果为0 11111111 11111111 11111111 11111110,因为最后为int型,计算结果超出4个字节,因此最高位的0被丢弃(int型的计算是抛弃最高位),结果为11111111 11111111 11111111 11111110,以16进制表示为0xFF FF FF FE与0x7FFFFFFF不相同,因此结果为false。
要注意,在计算机中数值是以补码的形式表示的(包括以上的计算结果全都是以补码表示的),补码知识不作介绍,这里只要知道,正数的被码就为原来的正数,而负数的补码为符号位不变,其余各位按位取反再加1。因此0xFF FF FF FE除符号位不变(在java中int型最高位为符号位),其余各位取反再加1,结果为10000000 00000000 00000000 00000010最后结果为-2,以16进制表示为0x80 00 00 02,因此使用print输出该数,则为-2,并不为0xFF FF FF FE的十进制数值。
3、表达式0x7FFFFF * 2.0== (int)(0x7FFFFF * 2)
因为两个数字计算的结果都没有出现超出int型的4个字节的情况,因此计算结果相同,这个就不介绍了,相信你应该明白了。
好了,现在相信你应该明白了
java 代码详解
这时static静态关键字的使用:
1.static修饰属性和方法后,次属性和方法将会上升为类的,同时也是属于所有对象的。又叫类的属性,和类的方法,统称为类的成员。可以直接用类名点出来。所有对象共享内存地址。(换句话说只要其他一个对象改变了静态属性值,其他对象跟在变)
静态属性初始化为第一次调用静态属性或方法时,或者第一次实例化对象的时。(注意第一次)
2.静态代码段
它会先于构造方法和主方法(对就是程序的入口)执行。
网页名称:java优秀代码赏析,java编程宝典
分享网址:http://pwwzsj.com/article/hdjics.html