java基础知识

毕业之,做了一个完整的项目,才发现自己的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文件转化为字节码文件了。如果,你学过编译原理也知道,每条语句都有相应的句柄,根据句柄进行相应的数据操作。

整形减

代码还是上面的代码,只不过将加号变成了减号。

你可能感兴趣的:(java)