Object类
Object类是所有类的终极父类,任何一个类都继承了object类
Java是开源的,源代码是公开的
Object方法:
1. toString返回该对象字符串表示 完整类名+@+对象哈希吗
2. Equals方法用于比较两个对象的内存地址,判断两个对象是否为同一个对象
3. Hashcode返回该对象的哈希码值
字符串
“==”用于比较引用数据类型数据的时候比较的是两个对象的内存地址
“equals”默认方法比较也是两个对象的内存地址
在String中重写了equals把字符串转换成字符数组,然后一个一个的比较
String s = “hello”
这种方式创建字符串的时候,jvm首先会检查字符串常量池中是否存在该字符串对象,如果已经存在,那么就不会在字符串常量池中再创建,直接返回该字符串在字符串常量池中的内存地址,如果该字符串还不存在字符串常量池中,那么就会在字符串常量池中创建该字符串的对象,然后再返回
String s1 = new String(“hello”)
这种方式创建的字符创对象的时候,jvm首先会检查字符串常量池中是否存在“hello”的字符串,如果已经存在,则不会在字符串常量池中创建了,如果还不存在,那么就会在字符串常量池中创建“hello”字符串对象,然后还会去到堆内存中再创建一份字符创的对象,把字符串常量池中“hello”内容拷贝致对内存中的字符创对象,然后返回堆内存中字符串对象的内存地址。
注意:使用字节数组或者字符数组都可以构建一个字符串对象
String方法:
1. length() 获取字符串的长度
2. charAt(int index) 获取特定位置的字符
3. indexOf(String str) 获取特定字符的位置 如果没有出现 -1表示
4. Lastindexof(int char) 获取最后一个字符的位置 如果没有出现 -1表示
字符串是常量,他们的值在创建之后不能修改,字符串的内容一旦发生了变化,那么马上就会创建一个新的对象
String缓冲类
如果需要频繁修改字符串的内容,使用Stringbuffer,Stringbuffer就是一个存储一个字符的容器。
Stringbuffer:底层是依赖一个字符数组才能储存字符数据的,该字符串数组默认的初始容量为16,如果字符数组长度不够使用时,自动增长1倍+2。
Stringbuilder:跟Stringbuffer兼容的api,功能与Stringbuffer一样的,比Stringbuffer运行更快。
Stringbuffer与Stringbuilder相同处
1. 两个类都是字符串缓冲类
2. 两个类的方法都是一致的
Stringbuffer与Stringbuilder不同处
1. Stringbuffer是线程安全的操作效率低,Stringbuilder是线程不安全的操作效率高
2. Stringbuffer是jdk1.0出现的,Stringbuilder1.5出现的