Java基础其他

 

进制就是进位制,常见的有二进制、十进制、十六进制等

 

在进制中,可用符号的数量称为基数,基数为n就称为n进制,逢n进一位:

二进制:0 1 

十进制:0 1 2 3 4 5 6 7 8 9  

十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F   

 

任何一个数都可以使用不同的进制表示,比如十进数9,在二进制中表示为1001,在十六进制中表示为9

 

计算机内部使用二进制进行运算和存储

 

二进制只有0和1两个符号,容易用现实中物体的两个稳定状态表示,比如电路中有无电流、晶体管是否导通、磁盘磁体有无磁性等

 

而且二进制在运算时也较简单

 

一组重要的数

 

2的次幂        十进制           二进制

20                  1                   1

21                  2                   10

22                  4                   100

23                  8                   1000

24                  16                 1 0000

25                  32                 10 0000

26                  64                 100 0000

27                  128               1000 0000

28                  256               1 0000 0000

29                  512               10 0000 0000

210                 1024             100 0000 0000

 

 

二进制数转为十进制

 

把二进制数分解成多项,把每项转换为十进制数然后求和

 

1001(2) --> 1000(2) + 1(2) --> 8(10) + 1(10) -->9(10)

 

十进制数转二进制

 

二进制和十六进制相互转换

 

二进制从0到1111正好是16个数,可以和十六进制的16个符号一一对应

 

二进制数              十六进制数

0                          0

1                          1

10                        2

11                        3

100                      4

101                      5

110                      6

111                      7

1000                    8

1001                    9

1010                    A

1011                    B

1100                    C

1101                    D

1110                    E

1111                    F

 

二进制 --> 十六进制:从右至左每四位一组(不够四位的在前面补0)

1100100(2) --> 0110 0100(2) --> 6(16) 4(16) --> 64(16)

 

十六进制 --> 二进制:把每个基数转换为四位二进制数即可

64(16) --> 0110(2) 0100(2) --> 1100100(2)

 

 

整数在计算机中的表示

 

在计算机中,一个0或者1称为一个比特位(bit)

 

整数有正负,计算机为了可以表示正负整数,把一个二进制数分为两部分:开头1位符号位,后面的是数值位。如果符号位为0则表示正整数,为1则表示负整数。而且计算机在表示负整数时,还需要经过反码、补码的转换

 

Java中定义了若干基本类型来表示整数,比如byte、short、int、long,由于所占的位数不同,可以表示的整数的范围也不同

 

byte(字节)     8bit(1个符号位和7个数值位)                 [-27 , 27-1]、[-128 , 127]

short             16bit(1个符号位和15个数值位)             [-215 , 215-1]、[-32768 , 32767]

int                 32bit(1个符号位和31个数值位)             [-231 , 231-1] 、最大值21亿多一些

long              64bit(1个符号位和63个数值位)             [-263 , 263-1]

 

2. 字符编码

我们在屏幕上看到的文字,在计算机内部其实是一串二进制的数据。

每个字符都有一个编码,比如'A'的编码为65,在内存、文件中存储的就是这些编码的二进制形式(比如0100 0001),当文本处理程序遇到65时,就会在屏幕上显示A

 

ASCII字符集

 

最基本的字符编码表(字符集)是ASCII,规定了128个字符(编码从0到127),包括基本的英文标点符号、阿拉伯数字、英文大小写字母、还有一些不能显示的控制字符

Java基础其他

 

在计算机中1byte(8位)可表示的整数范围是[-128 , 127] ,可以容纳所有的ASCII字符,所以就使用1byte的存储空间来存储、表示一个ASCII字符,而且ASCII字符编码都是正整数

 

需要记住的字符的编码

'A' -- 65

'a' -- 97

 

 

其他字符集

 

其他字符集都基于、兼容ASCII,常见的有GB2312、BIG5、GBK、Unicode、UTF-8等

 

GB2312是简体中文字符集,主要包含六千多个常用的汉字。在GB2312中,ASCII字符还是使用一个字节存储,其他汉字使用两个字节存储,并且这两个字节的符号位都是1(为了避免和ASCII字符混淆),比如 '中' 这个字符的编码是 -42, -48

 

Big5是繁体中文字符集,主要包括一万多个繁体汉字,港澳台地区用的较多

 

GBK是GB2312的扩展,主要包含两万多个汉字,涵盖了大部分简、繁汉字

 

Unicode是全世界统一的字符集,包含了世界各地的语言文字。Unicode经过了很长时间的发展,有多个版本,本身很庞大也很复杂。在程序中直接使用Unicode会降低程序的执行效率,也很占用较多的存储空间和网络带宽,所以Unicode只用来给文字编码,实际使用时,一般使用UTF-8,它可以把Unicode字符转换为尽可能简短的形式。

 

UTF-8会使用尽可能少的字节数来表示Unicode字符,以便提高程序处理效率等。在UTF-8中,有的字符使用一个字节存储,有的使用两个、三个或者四个字节,比如 '中' 在UTF-8中的编码是 -28, -72, -83

 

3. JVM内存结构

JVM在运行时把从操作系统申请到的内存分为若干区域,主要有栈、堆和方法区,方便Java程序使用

 Java基础其他

堆内存

使用new关键字创建出来的对象都存储在堆内存中

 

方法区

被加载的类的信息存储在方法区中,包括类声明、字段、方法等信息

 

栈内存

其实Java程序中的每个线程都有自己的栈内存

栈内存用来存储方法执行时创建的局部变量

方法每执行一次,就会在栈内存中开辟一块内存空间,称为栈帧,方法执行结束后,这个栈帧随即被销毁回收

 

public class Test1 {
    public static void main(String[] args) {
        int age1 = 16;
        Dog dog1 = new Dog();
        User user1 = new User();
        user1.setAge(age1);
        user1.setDog(dog1);
    }
}
class Dog {
}
class User {
    private int age;
    private Dog dog;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Dog getDog() {
        return dog;
    }
    public void setDog(Dog dog) {
        this.dog = dog;
    }
}
View Code

相关文章:

  • 2021-06-25
  • 2022-01-04
  • 2022-02-19
  • 2021-05-23
  • 2021-05-27
  • 2022-12-23
  • 2021-06-23
猜你喜欢
  • 2021-08-12
  • 2022-12-23
  • 2021-11-08
  • 2021-08-23
  • 2022-12-23
  • 2021-06-17
相关资源
相似解决方案