java基础day8笔记
字符串
1.不可变2.底层是byte数组3.可以共享 字符串不用new,但依然是对象
3+1种创建方式,1.无参构造,2.参数是字符数组3.参数是字节数组。 直接等于“”
底层string的成变value是byte数组类型的
- 基本类型比较的是数值
- 引用类型比较的是地址值
- 常量池
- “”直接写的在常量池
- new的不在常量池
- 注意:并不是变量名直接指向字符串,而是指向字符串地址,字符串地址还指向真正的字符串
- new与“”不是一个字符串,不是一个地址值,“”是将字符串的地址存入常量池了,new是将字符串地址存入一个新的空间,都是在堆中
equals方法比较的字符串内容
不推荐”Hello“和str2换位置,因为若str2是null,会出现空指针异常。
构造方法的调用格式就是new,不需要与其他方法一样重新开辟空间
字符串同集合存自定义对象
数组没重写,字符串重写了,集合类重写了,自定义看你重写不
不重写自定义对象指的是,输出集合名,打印的是[@123,@234,…]
重写后打印的是[s1,s2]
string一些方法看笔记
静态:在方法区中,方法区中还有个静态区
- 在栈中用类名调用方法的话,直接去方法区中找,静态区是变量的值
- 静态代码块只执行一次,在构造方法之前
- 对象在堆中创建,对象的方法从方法区获取,类的方法也直接从方法区获取
工具类Arrays - Arrays中提供了一些静态的方法,来操作数组
- toString(数组):将数组变成字符串
- sort(数组):1.若是数值,按升序。2.若是字符串,则按字母顺序升序。3.若是自定义对象,则需要接口comparable和comparator