第十章:常见类(2)

三、String类

1.获取字符串的方式

(1) String str1 = "hello";

这种获取字符串的方式,在串池中完成字符串对象

创建,有-不再创建

(2) String str2 = new String("world");

这种获取字符串的方式,先在堆空间中创建一个字符串对象,再查看字符串串池中是否存在该对象,存在-无需创 建,不存在-再次创建

字符串:由一个或是多个字符组成,用双引号引起来,底层为 字符数组进行存储(char[] value),具有下标,默 认从0开始,依次为1、2、3、.....

2.常见的方法:

String str = "Hello";
// 根据下标获取对应字符
// 指定合理的下标范围,否则:java.lang.StringIndexOutOfBoundsException
char c = str.charAt(2);
System.out.println(c);//e
System.out.println(str.length());//5
// 遍历字符串
for(int i=0;i<str.length();i++){
System.out.println(str.charAt(i));
}//h e l l  o
System.out.println(str.indexOf("elle"));//0
// 获取字符在当前字符串出现的第一个字符下标,没有,返回-1
System.out.println(str.contains("ell"));//1
//判断指定字符串是否在当前字符串中存在
System.out.println(str.toLowerCase()); // 大写- >小写
System.out.println(str.toUpperCase()); // 小写-》大写
System.out.println(str.startsWith("he"));// 判断是否以xx开头
System.out.println(str.endsWith("o"));// 判断是否以xx结尾
String str2 = " he llo";
System.out.println(str2);
System.out.println(str2.trim()); // 去除前后空格
String str1 = new String("Hello");
String str2 = new String("hello");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));// 判断字符串内容
System.out.println(str1.equalsIgnoreCase(str2));// 判断字符串内容,忽略大小写
String str = "hello-world-java";
String[] strs = str.split("-");
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
}
//hello   world   java
String str3 = "he89weHfyfs9gguFYFYFY";
// 统计以上字符串中大写字母的个数,并打印输出
int count = 0;
for(int i=0;i<str3.length();i++){
char c = str3.charAt(i);
if(c >='A' && c<='Z'){
count++;

    }
}
System.out.println(count);//7

3.不可变性:String字符串是常量,创建之后不可改变;字符串字面值存储在串池中,可以共享

4.可变长的字串:

(1)StringBuffer:可变长字符串,JDK1.0,线程安全,运行效率慢。

(2)StringBuilder:可变长字符串,JDK5.0,线程不安全,运行效率快

解释: StringBuffer 上的主要操作是 appendinsert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。

例如,如果 z 引用一个当前内容为 "start" 的字符串缓冲区对象,则此方法调用 z.append("le") 会使字符串缓冲区包含 "startle",而 z.insert(4, "le") 将更改字符串缓冲区,使之包含 "starlet"。通常,如果 sb 引用 StringBuilder 的一个实例,则 sb.append(x)sb.insert(sb.length(), x) 具有相同的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值