浅谈Java之String
字符串是常量,他们的值在创建之后不能修改字符串缓冲区支持可变的字符串,改变的只是引用的地址值。因为 String 对象是不可变的,所以可以共享。
例如:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder
(或 StringBuffer
)类及其 append
方法实现的。字符串转换是通过 toString
方法实现的,该方法由 Object
类定义,并可被 Java 中的所有类继承。
对于String类而言,一旦有必要改变原来的内容,每个String方法都返回一个新的String对象。若内容不需要改变,则方法返回指向原来的那个String的一个引用,这样做可以节省存储空间和系统开销。
StringBuffer是线程安全的可变字符序列。StringBuffer
上的主要操作是 append
和 insert
方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append
方法始终将这些字符添加到缓冲区的末端;而 insert
方法则在指定的点添加字符。
String和StringBuffer类的异同?
相同点:
1. 都是用来处理字符串的。
2. 都提供了以下方法,且用法相同。
length()、toString()、charAt()、subString()
3. 字符在字符串内索引的起始位置:0
4. subString(int beginIndex, int endIndex)截取字符串
范围:beginIndex~endIndex-1
字符个数:endIndex-beginIndex
不同点:
1. String不可变,StringBuffer可变。
2. String类重写了equeal方法,StringBuffer未重写。
3. 对toString()的重写不同
String:返回当前实例本身
StringBuffer:返回缓冲区中所用字符内容的新的String引用。
4. 字符串的连接不同:+ <=> .append(str)
StringBuffer比String在效率上更加优异,因为String在操作字符串时是一个一个new String()下去的,而StringBuffer是象一个容器一样连下去的。String类,一旦创建了实例,系统就分配内存空间,StringBuffer类可以不分配内存空间,在程序执行的时候再根据需要分配。
编程题:
1.写一方法String str1=“1357” String str2=“2468”,将str1,str2合并并输出“12345678”要求有输入和输出参数。
package ch02;
import java.util.Arrays;
public class StrTest {
public String orderingByMerge(String s1,String s2)
{
String s=s1+s2;
//将字符串转换为一个新的字符数组
char []c = s.toCharArray();
//对指定的 char 型数组按数字升序进行排序。
Arrays.sort(c);
//分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
//该字符数组的内容已被复制;后续对字符数组的修改不会影响新创建的字符串。
String str = new String(c);
retu str;
}
public static void main(String[] args) {
StrTest st = new StrTest();
String str1 = "1357";
String str2 = "2468";
String s = st.orderingByMerge(str1, str2);
System.out.println(s);
}
}
作者:haozh502
来源链接:https://blog.csdn.net/haozh502/article/details/4423776
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。