String类_StringBuffer_StringBuilder_list
Posted zenyang-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String类_StringBuffer_StringBuilder_list相关的知识,希望对你有一定的参考价值。
String类
属于不可变字符串,是字符串常量
equal方法
比较两个对象的内容是否相同,==是比较两个对象的内
存地址是否相同常量都是存在jvm,方法区的常量池当中
String str1 = "123";
String str2 = "123";
System.out.println(str1.equals(str2));//true
System.out.println(str1 == str2);//true
String str3 = new String("123");
String str4 = new String("123");
System.out.println(str3.equals(str4));//true
System.out.println(str3 == str4);//false
构造方法
String s6 = new String("abc");//创建String对象,字符串内容为abc
byte[] bys = new byte[]{97,98,99,100};
// 创建String对象,把数组元素作为字符串的内容//
String s2 = new String(bys);
// 创建String对象,把一部分数组元素作为字符串的 内容,
// 参数offset为数组元素的起始索引位置,参数l ength为要几个元素
String s3 = new String(bys, 1, 3);
System.out.println(s2);//abcd
System.out.println(s3);//bcd
char[] chs = new char[] {‘a‘,‘b‘,‘c‘,‘d‘,‘e‘};
//创建String 对象,把数组元素作为字符串的内容
String s5 = new String(chs);
//创建S tring对象,把一部分数组元素作为字符串的内容,
// 参数offset为数组元素的起始索引位置,参数count为要几个元素
String s7 = new String(chs, 0, 3);
System.out.println(s5);//abcde
System.out.println(s7);//abc
//2.public int compareTo(String anotherString)
//按字典顺序比较两个字符串。 由该String对象表示的字符序列按字典顺序与由参数字符串表示的字符序列进行比较。
//若两个需要比较的字符串存在包含关系 则比较字符串长度 this.length()-anotherString.length()
//若两个不存在包含关系 则从首个索引的值开始按ASCII表进行相减 this.charAt(k)-anotherString.charAt(k)
String str02 = "abcde";
int a = str02.compareTo("abc");
int i = str02.compareTo("012340");
int a12 = str02.compareTo("a2");
System.out.println(a);//5-3=2
System.out.println(i);//97-48=49
System.out.println(a12);//98-49=48
//3.public int compareToIgnoreCase(String str) 和compareTo相似 但此方法忽略大小写
//4.public boolean contains(CharSequence s) 判断字符串内是否包含s 若包含则返回true
//5.public boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结尾。
//6.public boolean startsWith(String prefix,int toffset) 测试此字符串是否以指定的前缀开头
7.public boolean equals(Object anObject) 重写object父类 判断内容是否相等
//8.public byte[] getBytes() 使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中。
//字符串截取
String str = "abcde";
//public String substring(int beginIndex)
String s1 = str.substring(1);
//返回一个新 字符串,为指定索引后的内容
//public String substring(int beginIndex,int endIndex)
String s2 = str.substring(2, 4);//返回一个 新字符串,内容为指定位置开始到指定位置结束所有字 符[2,4)
System.out.println(s1);//bcde
System.out.println(s2);//cd
int i = 10;
boolean b = true;
String s = String.valueOf(i);
String s1 = String.valueOf(b);
System.out.println(s); // 字符串10
System.out.println(s1);//true
/Buffer 缓存
/*
stringBuffer类 线程安全的(同步),是一个字符串缓冲区,可以支持
插入、修改、添加、删除等操作
和stringBuffer类同级别的是stringBuilder类,支持和stringBuffer类相同的操作
线程不安全(异步),但效率高
对于空的stringBuffer缓存区容器,初始容量是16个字符,如果内部缓冲区
溢出,则会自动变大
*/
public class StringBufferDemo {
public static void main(String[] args) {
method01();
}
private static void method01() {
StringBuffer sb = new StringBuffer();
//append 支持添加多种类型的值 ,在容器末尾添加一个元素
sb.append("张三");
System.out.println(sb);//张三
sb.append("李四");
//capacity返回缓冲区容量
int capacity = sb.capacity();
System.out.println(capacity);// 没超默认16
//insert() 插入
sb.insert(1, 2);
System.out.println(sb);//张2三李四
char c = sb.charAt(1);
System.out.println(c);//2
//codePointAt()返回指定索引处的字符(Unicode代码点)。
int i = sb.codePointAt(2);
System.out.println(i);
CharSequence charSequence = sb.subSequence(1, 3);
//public StringBuffer delete(int start,int end) 删除
StringBuffer delete = sb.delete(2, 3);
System.out.println(delete);//张2李四
}
}
list(有序的序列)
特点:1.有序 存放的顺序和取出的顺序是一致的
2.与集合不同,列表通常允许重复的元素
3.可以通过索引访问元素
ArrayList 可调整大小的数组 此实现不同步
List<String> list = new ArrayList<String> ();
//添加
list.add("李雷");
list.add("韩梅梅");
//插入 插入前["李雷","韩梅梅"]
list.add(1, "隔壁老王");
//插入元素后的集 合["李雷","隔壁老王","韩梅梅"]
list.remove(2);//删除
// 删除元素后的集合["李 雷","隔壁老王"]
list.set(1, "隔壁老张");//修改
// 修改元素后的集 合["李雷","隔壁老张","韩梅梅"] //通过索引获取
String str = list.get(0);//获取李雷
遍历(和数组相同)
for(int i = 0; i < li.size(); i++){
System.out.println(li.get(i));
}
for(String str : li){
System.out.println(str);
}
以上是关于String类_StringBuffer_StringBuilder_list的主要内容,如果未能解决你的问题,请参考以下文章