4.1常用对象API(String类)
来源:互联网 发布:windows ftp命令详解 编辑:程序博客网 时间:2024/05/16 13:43
1.特点
1. 字符串对象一旦被初始化就不会被改变2. 字符串缓冲区(常量池),新建字符串时先去常量池找,有就把地址返回,没有就创建。
例子:1.String s = "abc"; //存储在字符串常量池中String s1 = "abc";System.out.println(s == s1); //true2.String s = "abc"; //在常量池中产生一个字符串对象,共享的String s1 = new String("abc"); //初始化"abc"字符串对象。新创建的字符串是"abc"的副本。s1特有 //就是在堆内存里面产生两个对象,一个new,一个字符串对象。System.out.println(s == s1); //flaseSystem.out.println(s.equals(s1)); //String类是Object的子类,它复写了equals()方法,这里比较的不是地址了,是内容。 //其实就是比较字符串内容,true
2.构造函数
例子:1.String s = new String(); //等效与String s = ""; 不等效String s = null;byte[] arr = {65,66,67,68};String s1 = new String(arr); //将字节数组变成字符串,ABCD2.char[] arr = {'C','z','q','G','s'};String s = new String(arr,0,3); //将字符数组指定部分变成字符串,这里从0开始,取3个,即Czq
3.方法:
按照面对对象的思想对字符串进行功能分类"abcd"1.获取: 1.1. 获取字符串中字符的个数。 int length(); 1.2根据位置获取字符。 char charAt(int index); 1.3根据字符/字符串 获取在字符串中第一次出现的位置。不存在返回-1 int indexOf(int ch); 从0开始 int indexOf(int ch, int fromIndex);从指定位置进行ch的查找,第一次出现的位置 int indeOf(String str); int indeOf(String str, int fromIndex); int lastIndexOf(int ch); 从最后一个开始 int lastIndexOf(int ch, int fromIndex); int lastIndeOf(String str); int lastIndeOf(String str, int fromIndex); 1.4获取字符串中的一部分字符串。也叫子串。 String substring(int beginIndex, int endIndex) 包含begin,不包含end String substring(int beginIndex)2.转换: 2.1将字符串变成字符串数组(字符串的切割):涉及到正则表达式 String[] split(String regex) regex - 定界正则表达式 String[] split(String regex, int limit) limit 切割成几段 2.2将字符串转换成字符数组。反过来用字符串构造函数。 或者使用静态方法:String copyValueOf(char[] data) String copyValueOf(char[] data,int offset, int count) String[] toCharArray(); 2.3将字符串变成字节数组 byte[] getByte(); 一个汉字两个字节,是负的 2.4将字符串中的字母转换成大小写 String toUpperCase() : 大写 String toLowerCase(): 小写 2.5将字符串中的内容进行替换 String replace(char oldChar, char newChar); 如果没有找到旧字符,就不新建字符串,直接在常量池中调用原字符串对象 String replace(CharSequence target, CharSequence replacement); 字符串替换,String类是CharSequence接口的子类。(它所有的子类都可以替换) 2.6将字符串两端的空格去掉,返回字符串的副本 String trim(); 2.7将字符串进行连接 String concat(String str) 如果str长度为0,则不创建新字符串,直接在常量池中调用原字符串对象 和 + 等效,但是上面的更专业。 2.8将基本数据类型将换成字符串,静态方法 String valueOf(boolean b) String valueOf(char c) String valueOf(char[] data) String valueOf(char[] data,int offset,int count) String valueOf(double d) String valueOf(float f) String valueOf(int i) String valueOf(long l) String valueOf(Object obj)3判断: 3.1两个字符串内容是否相同 boolean equals(Object obj) 区分大小写 boolean equalsIgnoreCase(String str) 忽略大小写 3.2字符串中是否包含指定字符串 boolean contains(String str) 3.3字符串是否以指定字符串开头/结尾 boolean startsWith(String); boolean endsWith(String);4.比较:按字典顺序比较。等于,返回0。小于,返回一个负数。大于返回一个正数 int compareTo(String anotherString)
4.intern方法:操作字符串池,如果字符串池中包含此字符串,则返回池中的字符串。如果池中没有,在则在池中新建一个并返回新的字符串对象。开发基本不用
String s1 = new String("abc"); //"abc"是在对象中被操作,池中没有String s2 = s1.intern(); //相当于将新的"abc"存到池里System.out.println(s1==s2); //falseString s1 = "abc"; 在池中新建String s2 = s1.intern();System.out.println(s1==s2); //true
5.StringBuffer:就是字符串缓存区。(内部就相当于数组,默认16个字符)
用于存储数据的容器。
特点:
1.长度可变 2.可以存储不同类型数据 3.最终要转成字符串进行使用。toString() 4.对字符串可以修改
具备的功能: 增删改查 C(create增)U(update改)R(read查)D(delete删)
1.添加: StringBuffer append(data); 追加到尾部 StringBuffer insert(int offset, data); 插入到指定位置2.删除: StringBuffer delete(int start, int end); 包含头,不包含尾 StringBuffer deleteCharAt(int index); 删除指定位置的元素 delete(0,sb.length()); 清空 3.修改: StringBuffer replace(start,end,string); 替换 void setChatAt(index, char); 替换一个字符 4.查找: char charAt(index); int indexOf(String); int lastIndexOf(String); 5.其他: 设置长度: void setLength(int ); sb.setLength(0); 清空(了解) 反转: StringBuffer reverse
注意:
可变长度数组: 容量不够就新建一个数组,把原来的元素复制过来,然后添加新的元素。容量是原来的一倍不等。 能确定容器容量时最好在初始化时就确定,效率高些。
- StringBuilder: jdk1.5以后出现了和StringBuffer一模一样的对象。
不同的是:StringBuffer是线程同步的。如果是单线程每次运行都要判断锁,效率低。安全,通常用于多线程。StringBuilder是线程不同步的。是补充的单个线程的等价类,单线程时优先使用StringBuilder,由于不执行同步,所以速度更快。
原理:
class StringBuffer { Object lock; public StringBuffer append(int x) { synchronized(lock) {} } public StringBuffer delete(int start, int end) { synchronized(lock) {} } }
阅读全文
0 0
- 4.1常用对象API(String类)
- String对象常用API
- 常用对象API(String类)和 StringBuffer
- 常用对象API(String类-特点)
- String类常用api
- 黑马程序员 常用对象API-- String类、Stringbuffer、StringBuilder总结
- 黑马程序员《常用对象API string类 stringbuffer、stringBuilder》
- 15-01-常用对象API(String类-特点)
- 15-02-常用对象API(String类-构造函数)
- 15-05-常用对象API(String类-常见功能-转换)
- 15-06-常用对象API(String类-常见功能-判断)
- 15-07-常用对象API(String类-常见功能-比较)
- 15-08-常用对象API(String类-intern方法)
- 01-常用对象API(String类-特点)1 2 02-常用对象API(String类-构造函数)
- 06-常用对象API(String类-常见功能-判断) 07-常用对象API(String类-常见功能-比较)
- JAVA学习第三十课(常用对象API)- String类:类方法练习
- JAVA学习第二十九课(常用对象API)- String类
- 【Java重新学习】常用API对象-String
- test
- HDU
- Java异常处理机制
- 【Halcon笔记1】基于Halcon软件的【摄像机标定】以及【内部参数】和【外部参数】的求解过程【原理细节详解】
- 从Xib文件加载UIView的5种方式
- 4.1常用对象API(String类)
- 创建空白精灵
- 对比S3C6410外部中断STM32外部中断
- 【Noip模拟】仔排
- UVA10375唯一分解定理运用
- elasticsearch项目踩坑记
- cf851d
- Lintcode搜索插入位置
- HDU