- 简单的符号位并不能区分正负数,如:+0、-0。为了避开+0、-0,负数补码的符号位不变,其余按位取反后+1
- 枚举类:一个类固定了对象的个数,不能通过其他方式新建,比如:new方式
- 字符串底层是char类型的基本数组
- String xx=""; 占用内存,空的字符串并不是空的,有\0,因为在c语言中 char aa[]={ 'a','b','c','\0'};
- 字符串算法:
- 获取子字符串(字符串截取,substring(,) )

- 替换字符串(所有的“发艾克”都被替换,replace(,) )
- 判断是否是一个字符串的子串(如果输出为-1,则不是子串,输出为其他数字,则代表从哪开始有这个子串;indexof() )

- 字符串拼接(输出结果为xx字符串后面加上23;3333)


- 字符串切分(split() 切分结果用逗号表示)


Syetem.out.println(ww.replace(" ","")); 意思是将空格替换成空字符串,输出结果为

- 不可变字符串(原地址内存的数据不变)
- 字符串的值发生变化,不在原来的地方进行修改,而是申请新的空间。
- 若原来的空间足够大,为什么不用原来的空间?

将aaa改成kk,需要两个边界,不然读出来的数据是kka,两个边界比较麻烦。所以原来的空间是不能用的。
- 字符串常量池

字符串常量池在
堆中,常量池内没有被指向的数据空间不会被
回收,清掉。

基本类型==基本类型,比较的是
值是否相等,输出结果为true。

引用类型==引用类型,比较的是
指向是否相同。如果是一个单等于号,意思是保持指向相同。

new方法创建的对象不在字符串常量池中,并且k5,k6有自己独立的空间和地址,即使k5和k6的数据一样。除非String k7=k6,这样k7和k6指的是同一块内存,同一块地址。
- 检测字符串的值是否相等
equals 本身就相当于== 比较
地址指向是否相同 ,在
字符串类中重写了,String里面的equals只比较
字面值


- null串不占空间,没有任何指向,不消耗空间;"" 空字符串占用空间,有指向,消耗空间(面试点)
- 码点(编码值)与代码单元(存储单位,2B)

码点,输出的数字为哈的编码值
- 字符串包括:汉字、字母、数字、几何图形(%)、换行、空格
- 字符串拼接

使用StringBuilder拼接速度更快