第二次总结

  1. String StringBuilder  StringBuffer
  2. 包装类
  3. 负数十进制转二进制
  4. 浮点数的二进制表示方式:

  1. String StringBuilder  StringBuffer

String 基于char数组[jdk8]的实现,一旦定义好,长度就不可改变
基于byte数组[jdk11]的实现

StringBuilder与StringBuffer 长度可变字符串

StringBuilder的性能要高于StringBuffer
StringBuilder是线程不安全的
StringBufer是线程安全的

由于StringBuffer需要进行线程的同步操作,其性能要比StringBuilder差
StringBuffer适用于多线程的并发操作。

 


  一、包装类

  1.每一种基本类型都对应有一个包装类

  1. byte Byte
  2. short Short
  3. int Integer
  4. long Long
  5. float Float
  6. double Double
  7. char Character
  8. boolean Boolean

  2. 整数对象的创建

    Integer t=100;
        Integer t1=new Integer(100);
        Integer t2=new Integer("1234");

 

Integer类中的方法大多都是static方法

  String s = toString(int);
  String s = toString(int,进制); //将十进制的数字转换成其它进制的数字,用字符串表示

  String s=Integer.toString(123,2);
      System.out.println(s);

 

输出结果:

  String s = toBinaryString(int);  //转成二进制

String s=Integer.toBinaryString(123);
        System.out.println(s);

 

输出结果:

  String s = toOctalString(int);  //转成八进制

  String s=Integer.toOctalString(123);
        System.out.println(s);

 

输出结果:

 

 

 


  String s = toHexString(int);  //转成十进制

 

 String s = Integer.toHexString(123);
        System.out.println(s);

 

 

 

输出结果:

 

 

 

int t = Integer.parseInt(String);  //将字符串转成数字

 int s = Integer.parseInt("123");
        System.out.println(s);

int t = Integer.parseInt(String,进制); //其它进制转成十进制

int num2 = Integer.parseInt("7b", 16);    
        System.out.println(num2);

//String要符合转换进制的格式

 


 

-123的二进制

先得到123的原码:00000000 00000000 00000000 01111011

取得反码:     11111111 11111111 11111111 10000100
               +1 11111111 11111111 11111111 10000101


 

浮点数的二进制表示方式:

 float f1 = 20.5F;
        double d1 = 20.5;
        System.out.println(f1==d1);


        float f2 = 20.3F;
        double d2 = 20.3;
        System.out.println(f2==d2);

 

输出结果:

20.5 = 205*10的-1次方 = 205E-1

1.将整数部分转换成二进制

除以2,取余数
20/2=10...0
10/2=5...0
5/2=2...1
2/2=1...0
1/2=0...1
20的二进制:10100

2.将小数部分转成二进制
乘以2,取整数部分
0.5*2=1.0 1
0.0*2=0 0
0.5的二进制:10

3.将整数部分和小数部分整合到一起
20.5的二进制:10100.10

4.将20.5的二进制用科学计数法表示,只保留一个整数位
10100.10 = 1.010010E4

5.将4次方也用二进制表示
4的二进制:100
20.5的二进制采用科学计数法:1.010010E100


6.准备存储

float的存储
float是32位的,第1位是符号位,表示正负
接下来8位是指数位
最后23位表示尾数位
a.存符号位,20.5是一个正数,符号位是0
b.存指数位 float在存储指数位的时候需要先加127,在存储
100+1111111 = 10000011
c.存尾数位 由于尾数部分的整数永远是1,所以1是不存储的,只存储小数部分
010010
如果小数部分不够23位,就在后面补0

符号位[1] 指数位[8] 尾数位[23]
0 10000011 01001000000000000000000

float 20.5的二进制: 01000001101001000000000000000000

double的存储
double是64位的 第1位是符号位,表示正负
接下来11位是指数位
最后52位表示尾数位
a.存符号位,20.5是一个正数,符号位是0
b.存指数位,double的指数位需要先+1023,在保存
100+1111111111 = 10000000011
c.存尾数位 由于尾数部分的整数永远是1,所以1是不存储的,只存储小数部分
010010
如果不够52位,就在后面补0

符号位[1] 指数位[11] 尾数位[52]
0 10000000011 0100100000000000000000000000000000000000000000000000

double的20.5的二进制:0100000000110100100000000000000000000000000000000000000000000000

取出float
符号位 0
取指数位,先减去127,得到真实指数
10000011-1111111=100
取得尾数部分 01001000000000000000000,在整数部分加1
1.01001000000000000000000
拼接成一个科学计数法表示的数字
1.01001000000000000000000E100

去除科学计数法
10100.1000000000000000000

将小数点前面的部分取出,还原成整数 10100 --> 20

将小数点后面的部分还原成整数
0.10000000 ->0.5000000

拼接到一起20.5

当小数位为3或其他无限循环的小数时  

0.3*2=0.6   0
0.6*2=1.2    1
0.2*2=0.4    0
0.4*2=0.8    0
0.8*2=1.6    1
0.6*2=1.2    1
0.2*2=0.4    0

 

10100.010011001100110011001100110011001...

1.0100010011001100110011001100110011001...E100

 

float   0 10000011 01000100110011001100110
double    0 10000000011 01000100110011001100110

 

posted @ 2020-07-15 19:37  Zc小白  阅读(267)  评论(0)    收藏  举报