07月15日 JavaOOP复习笔记

String StringBuilder StringBuffer

String 基于char数组[jdk8]的实现,一旦定义好,长度就不可改变
基于byte数组[jdk11]的实现
当进行字符串拼接的时候,每次都需要创建新的数组,来存放数据

StringBuilder与StringBuffer 长度可变字符串

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

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

包装类
每一种基本类型都对应有一个包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

    Integer
    整数对象的创建
    Integer  t  =  100;
    Integer  t=  new  Integer(100);
    Integer  t2  =  new  Integer("1234");

    Integer类中的方法大多都是static方法
          String  s  =  toString(int);
          String  s  =  toString(int,进制);
          String  s  =  toBinaryString(int);
          String  s  =  toOctalString(int);
          String  s  =  toHexString(int);

          int  t  =  Integer.parseInt(String);
          int  t  =  Integer.parseInt(String,进制);

-123的二进制:
先得到123的原码:00000000 00000000 00000000 01111011
取得反码: 11111111 11111111 11111111 10000100
+1 11111111 11111111 11111111 10000101

自动装箱和自动拆箱
自动装箱:基本类型的数据可以自动打包成对应的引用类型
自动拆箱:引用类型的数据可以自动出对应的基本类型


Random
Math
Date
Time
LocalTime
Calendar

=============================================================

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

    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.52=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



    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
	
	123456
	1.23456

下节数据结构:
数组[ArrayList Stack Vector]
链表[LinkedList LinkedBlockingQueue]
队列 [LinkedList,PriorityQueue]
散列[HashSet,HashMap,HashTable]
映射[HashMap TreeMap]
树[TreeSet TreeMap]

你可能感兴趣的:(Java,OOP学习)