D0008-字符串

String类

String是Java API 提供的一个类,它表示字符串的意思。

1.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现.
    "abc"就是一个字符串对象
    
2.Java的字符串是常量,一旦创建不能更改。
	指的是字符串在内存中的值不能更改。字符串本身不可更改,但其所在地址内的东西是可以被替换的

使用构造方法创建String对象

     String str = "abc";
 等效于: 
     char data[] = {'a', 'b', 'c'};
     String str = new String(data);
 故我们在调用 String 里的方法时无需单独创建 String 类的对象
//创建一个空的字符串对象
String s1=new String();
System.out.println(s1); //什么也没有(看不见任何字符)

char[] chs={'a','b','c','e','f'};
//利用字符数组创建String对象
String s2=new String(chs);
System.out.println(s2); //abcdef

//利用字符数组的一部分创建一个新的字符串,从0索引开始,拿3个字符
String s3=new String(chs,0,3);
System.out.println(s3); //abc

System.out.println("-------------------");
//利用字节数组创建一个String对象
byte[] bs={97,98,99,100,101,102};
String s4=new String(bs);
System.out.println(s4); //abcdef

//利用字节数组的一部分创建string对象,从3索引开始,拿3个字节
String s5=new String(bs,3,3);
System.out.println(s5); //def

基本数据类型里只有 charbyte 数据类型的数组可以创建 String 对象

两种字符串对象的区别

String s1="abc";
String s2="abc";
System.out.println(s1==s2); //true,字符串常量存储在常量池中,s2会复用s1的地址

String s3=new String("abc");
String s4=new String("abc");
System.out.println(s3==s4); //false,每次new一个String对象,都会重新在堆内存开辟空间。

字符串的常见面试题

String s1="abc";
String s2="abc";
System.out.println(s1==s2); //true 

String s3="abcdef";
String s4=s2+"def"; //字符串 “变量” 左拼接,会生成一个新的字符串,对应的地址会改变
System.out.println(s3==s4); //false

String s5="abc";
String s6="a"+"b"+"c"; //在编译时 "a"+"b"+"c"转换为"abc"   字符串 “常量” 的拼接不会产生新的字符串
System.out.println(s5==s6);//true

字符串的常见方法

比较相等的方法

public boolean equals(Object anObject)//String类里的 equals 用于对比字符串的内容,==用于比较地址
    用来比较两个字符串的内容是否相等
public boolean equalsIgnoreCase(String anotherString) 
   用来比较两个字符串的内容是否相等,不考虑大小写。 

代码演示

String s1 = "helloworld";
String s2 = new String("helloworld");

//比较地址
System.out.println(s1 == s2); //false

//比较内容
boolean f1 = s1.equals(s2);
System.out.println(f1); //true
boolean f2 = s2.equals(s1);
System.out.println(f2); //true

字符串遍历

遍历字符串可以用到下面的几个方法。

public int length()
    获取字符串的长度
public char charAt(int index)
    获取字符串中指定索引位置的字符
public char[] toCharArray()
    把字符串转换为字符数组
public class StringDemo3{
    public static void main(String[] args){
        String s="键盘敲烂,月薪过万";
        //遍历方式1
        //快捷键:s.length().fori
        for(int i=0;i<s.length();i++){
            char ch= s.charAt(i);
            System.out.println(ch);
        }
        
        //遍历方式2
        char[] chs=s.toCharArray();
        for(int i=0;i<chs.length;i++){
            System.out.println(chs[i]);
        }
    }
}

字符串的截取

手机号码屏蔽,需要对号码进行截取。String类提供了对字符串进行截取的方法

public String substring(int index)
    从指定的索引位置截取到字符串的末尾
public String substring(int start,int end)
    从指定的开始索引位置截取到指定的结束索引位置。(包含头,不包含尾)
public class Test03 {
    public static void main(String[] args) {
        String s1="abc123ADF098";          //定义字符串
        String result1=s1.substring(3);    //123ADF098
        String result2=s1.substring(3,12); //123ADF098 第二个索引值对应的字符不输出,故未报错
    }
}

替换字符串

String类提供了对字符串进行替换的方法。可以用字符串替换的方法做敏感词过滤。

public String replace(String oldStr,String newStr)
    使用新的字符串替换旧的字符串
public class Test03 {
    public static void main(String[] args) {
        String s1="兄弟姐妹";
        String s2=s1.replace("弟姐妹","兄兄兄");
        System.out.println(s1);                //兄弟姐妹
        System.out.println(s2);                //兄兄兄兄
    }
}     //可以看出 s1 并没有改变,只是利用 s1 创建了一个新的字符串 s2

字符串的切割

String类提供了对字符串进行切割的方法。一个字符串切割之后,可以变成多个字符串,使用数组来存储。

public String[] split(String regex) 
    根据指定的字符串来切割字符串
    注意:不能使用"."进行切割,因为"."表示任意字符;
    	 如果真的需要用点进行切割,使用"\\."
public class StringDemo5 {
    public static void main(String[] args) {
        String str="www,itheima,com";

        //使用","对字符串进行切割
        String[] arr = str.split(",");
        
        //遍历字符串数组
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

StringBuilder类

StringBuilder是一个字符串缓冲区(理解成一个容器),它可以存储任意类型的数据,最终都会变成字符串。

public StringBuilder append(任意类型的数据)
    往缓冲区中添加任意类型的数据。返回StringBuilder容器本身
public String toString()
    把字符串缓冲区转换为字符串
public StringBuilder  reverse()
    对缓冲区的内容进行反转
public StringBuilder  repalce(int start,int end,String str)
    将指定区间的数据替换为指定字符串    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值