《String》
2018-02-28 12:36
106 查看
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出现的
相关文章推荐
- C++代码笔记(1)string搜索操作——find()
- C++学习笔记-----std::string的=,+,+=对int,char类型操作数的支持
- String数组转List,List转String数组---小笔记
- String to Integer (atoi)
- JSON的String字符串与Java的List列表对象的相互转换
- c++ 中 char 与 string 之间的相互转换问题
- String.ToCharArray()方法中的内存优化技巧
- c# string.split
- VC6 string注意
- LINQ to Entities 不识别方法“System.String ToString(System.String)”因此该方法无法转换为存储表达式
- 一个函数将int,float,double等类型转string
- char string void*的一些转换
- 关于在c++中的string操作题-杭电1004
- JAVA不可变类(immutable)机制与String的不可变性
- C++面试题模拟实现String
- 新建String对象小知识点
- Leetcode_string-to-integer-atoi(c++ version)
- android 保存和读取String到sdcard
- String-引用计数的写时拷贝
- java String字符串操作笔记