毕业之,做了一个完整的项目,才发现自己的java基础知识并不牢固,因而,从新看了think in java这本书,忽然发现这本书写的真好。特地,总结了部分java的基础知识。
int类型
我们都知道,java的默认整型类型时int,而浮点型是double,int类型是4字节,每字节是八位,其取之范围是-2的31次方到2的31次方,句话是什么意思呢?对于初学者来说,可能有些迷惑,应该是32位才对,即-2的32次方 这- 2的32次方,但是,别忘了,学过计算机组成原理的应该知道,最高位为符号位,正用0表示,负用1表示,因而,-2的31次方到2的31次方。举例表示:
整型加
/**
* 以这个为例子,来说明整数是如何计算的
*/
public static void test(){
int firtsNum = 60;
int secondNum = 18;
System.out.println("60+18 = "+(firtsNum+secondNum));
}
输出结果:60+18 = 78
这内部是如何计算的呢?我们都知道int是8*4=32位的,因而,我们将其firtsNum和secondNum转化为二进制类型,以下是60和18的二进制的原码
int firtsNum = 0 0000000,00000000,00000000,00111100;
int secondNum =0 0000000,00000000,00000000,00010010;
因为firtsNum和secondNum的是正数,其最高位是0,当secondNum和firtsNum
相加时,原码会变成补码,因为,正数的原码、补码、反码都是一样的,所以,
直接用firtsNum和secondNum原码相加,即为:
0 0000000,00000000,00000000,00111100
+ 0 0000000,00000000,00000000,00010010
--------------------------------------------------
0 0000000,00000000,00000000,01001110
将0 0000000,00000000,00000000,01001110转化为十进制
即2^6+2^3+2^2+2^1=78,得到了上面的数
因为,我们知道计算机存储的时二进制的数据,即便是字符串类型也是二进制。比如:
/**
* 以这个为例子,来获取字符串的二进制数据
*/
public static byte[] stringToBytes(String testStr){
byte[] bytes=testStr.getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
return bytes;
}
输出结果位:
/usr/lib/jvm/jdk1.8.0_171/bin/java 我用的是linux系统,会输出相应的文件所在位置--
字节十进制 | 二进制 |
---|---|
97 | |
98 | right-aligned |
-28 | right-aligned |
-67 | right-aligned |
-96 | right-aligned |
-27 | right-aligned |
-91 | right-aligned |
-67 | right-aligned |
所以,你肯定看不懂这些数字,但它们就代表这句话:ab你好,但这只是字节数字的十进制,不是二进制,所以,我们需要将其转化位二进制:你若不相信,我们来测试看看:
如果你学过汇编语言就知道了。只不过java 、c、c++等是高级语言,它们内部封装了这种转换,所以,不用我们手动将firtsNum和secondNum转化为二进制了,同理,你也会明白为什么要将java文件转化为字节码文件了。如果,你学过编译原理也知道,每条语句都有相应的句柄,根据句柄进行相应的数据操作。
整形减
代码还是上面的代码,只不过将加号变成了减号。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99258.html