@Java入门基础
1.比较String类和StringBuffer类
- 在Java中定义了String和StringBuffer两个类来封装字符串,并提供了一系列操作字符串的方法,它们都位于Java.lang包中,因此不需要导包就可以直接使用;
- String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度都可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类;
- String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法;
例如:
String s1 = new String(''abc'');
String s2 = new String(''abc'');
System.out.println(s1.equals(sb2));//打印结果为true
StringBuffer s1 = new StringBuffer(''abc'');
StringBuffer s2 = new StringBuffer(''abc'');
System.out.println(s1.equals(sb2));//打印结果为false
- String类对象可以用操作符+进行连接,而StringBuffer类对象之间不能;
String s3 = s2+s1; //合法
System.out.println(s3); //打印输出ab
StringBuffer s1 = new StringBuffer(''a'');
StringBuffer s2 = new StringBuffer(''b'');
StringBuffer sb3 = sb1+sb2;//编译出错
2.String类
(定义一个不可更改的常量)
- String类的初始化
1.使用一个字符串常量直接初始化一个String常量;
String str1 = “abc”;//创建并初始化String对象
- 使用String的构造方法初始化字符串对象
方法声明 | 功能描述 |
---|---|
String() | 创建一个内容为空的字符串 |
String(char[] value) | 根据指定的字符数组创建对象 |
String(String value) | 根据指定的字符内容创建对象 |
Example1:
public class Example1 {
public static void main(String[] args) {
String str1 = new String();
String str2 = new String("abcd");
char[] arr = new char[] {'D','E','F'};
String str3 = new String(arr);
System.out.println("a"+str1+"b");
System.out.println(str2);
System.out.println(str3);
}
}
运行结果:
- String类的常见操作
Example2:
public class test1 {
public static void main(String[] args) {
String s = "dfferghuklmbdfd";
System.out.println("str.length(): "+s.length());
System.out.println("str.charAt(0): "+s.charAt(0));
System.out.println("lastIndex(m): "+s.lastIndexOf('m'));
System.out.println("substring(2,4): "+s.substring(2,4));
System.out.println("indexOf(g): "+s.indexOf('g'));
}
}
运行结果:
3.StringBuffer类
*** (定义一个可更改的缓冲区)
由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串;为了便于对字符串的修改,在JDK中提供了一个StringBuffer类;
String和StringBuffer的最大区别在于它的内容和长度都是可以改变的
StringBuffer的常用方法:
方法声明 | 功能描述 |
---|---|
StringBuffer append(char c) | 添加参数到StringBuffer类中 |
StringBuffer insert(int offset,String str) | 将字符串中的offer位置插入字符串str |
StringBuffer deleteCharAt(int index) | 移除此序列指定位置的字符 |
StringBuffer delete(int start,int end) | 删除StringBuffer对象中指定范围的字符或字符串序列 |
StringBuffer replace(int start,int end,String s) | 在StringBuffer对象中替换指定的字符或字符串序列 |
void setCharAt(int index,char ch) | 修改指定位置index处的字符序列 |
String toString() | 返回StringBuffer缓冲区中的字符串 |
StringBuffer reverse() | 将此字符序列用反转形式取代 |
Example3:
编写一个程序,实现字符串大小写转换并倒序输出
public class Example3 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("HelloWorld");
sb.append("zzy");
System.out.println(sb.toString());
String s = "HelloWorld";
char[] arr = s.toCharArray();
for(int i=arr.length-1;i>=0;i--) {
if(arr[i]>=65&&arr[i]<=90) {
System.out.print(String.valueOf(arr[i]).toLowerCase());
}
if(arr[i]>=97&&arr[i]<=122) {
System.out.print(String.valueOf(arr[i]).toUpperCase());
}
}
}
}
运行结果: