【Java SE】基础知识回顾——【4.String类】

String类

String类常用方法

方法描述例子
length()返回字符串的长度。str.length()
charAt(int index)返回指定索引处的字符。str.charAt(0)
substring(int beginIndex, int endIndex)返回字符串的一个子串**(左闭右开)**。str.substring(1, 4)
contains(CharSequence s)检查字符串是否包含指定的字符序列。str.contains("abc")
equals(Object another)比较两个字符串的内容是否相同。str.equals("anotherString")
equalsIgnoreCase(String anotherString)类似于equals,但不考虑大小写。str.equalsIgnoreCase("AnotherString")
startsWith(String prefix)检查字符串是否以指定的前缀开始。str.startsWith("abc")
endsWith(String suffix)检查字符串是否以指定的后缀结束。str.endsWith("xyz")
toLowerCase()将字符串转换为全部小写。str.toLowerCase()
toUpperCase()将字符串转换为全部大写。str.toUpperCase()
trim()去除字符串两端的空白字符。str.trim()
replace(char oldChar, char newChar)替换字符串中的字符。str.replace('a', 'b')
split(String regex)根据正则表达式分割字符串。str.split(",")
indexOf(int ch)返回指定字符首次出现的索引。str.indexOf('a')
lastIndexOf(int ch)返回指定字符最后一次出现的索引。str.lastIndexOf('a')

字符串创建

package Demo01;

/**
 * @author 270
 * java.lang.String类代表字符串
 * API当中说,JAVA程序中的所有字符串字面值(如"abc")都作为此类的实例表现
 * 也就是说,程序当中所有双引号字符串都是String类的对象(就算没有new,也照样是)
 *
 * 字符串的特点:
 * 1.字符串的内容永不可变【重点】
 * 2.正因为字符串不能改变,所以字符串可以共享使用
 * 3.字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
 *
 * 创建字符串的3+1种方式:
 * +1:直接创建
 * String str = "Hello";
 * 3种构造方法:
 * public String():创建一个空白字符串,不含有任何内容
 * public String(char[] array):根据字符数组的内容,来创建对应的字符串
 * public String(byte[] array):根据字节数组的内容,来创建对应的字符串
 */
public class Demo03String {
    public static void main(String[] args) {
        //空参构造
        String str1 = new String()System.out.println("第一个字符串是:"+str1);

        //根据字符数组创建字符串
        char[] charArray = {'A','B','C'};
        String str2 = new String(charArray);
        System.out.println("第二个字符串是:"+str2);

        //根据字节数组创建字符串
        byte[] byteArray = {97,98,99};
        String str3 = new String(byteArray);
        System.out.println("第三个字符串是:"+str3);
    }
}

字符串常量池(3/30)

2021 3 30
    package Demo01;

/**
 * @author 270
 * 字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
 * <p>
 * 对于基本类型来说,==是进行数值的比较
 * 对于引用类型来说,==是进行【地址值】的比较
 * <p>
 * 【注意】:
 * 1.对于引用类型来说,==进行的是地址值的比较
 * 2.双引号直接写的字符串在常量池当中
 * 如——String str1 = "abc";
 * 而new的不在池当中
 * 如——char[] charArray = {'a','b','c'};
 * String str3 = new String(charArray);
 */
public class Demo01StringPool {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";

        char[] charArray = {'a', 'b', 'c'};
        String str3 = new String(charArray);

        System.out.println(str1 == str2);
        System.out.println(str1 == str3);
        System.out.println(str3 == str2);

    }

}

字符串比较

2021 3 30
    package Demo01;

/**
 * @author 270
 * ==是进行字符串的地址值比较。如要进行字符串内容比较,可以使用以下两个方法
 * <p>
 * public boolean equals(Object obj):参数可以是任何对象
 * 【备注】:任何对象都能用Object进行比较
 * 且只有参数是一个字符串并且内容相同才会给true,否则返回false
 *
 * 注意事项:
 * 1.任何对象都能用Object进行接受
 * 2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
 * 3.如果比较的双方一个常量一个变量,推荐把常量字符串写在前面
 * 【推荐】:"abc".equals(str)  【不推荐】:"str.equals("abc")
 * public boolean equalsIngoreCase(String str),忽略大小写,进行内容比较
 */
public class Demo02StringEquals {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Hello";
        char[] charArray = {'H', 'e', 'l', 'l', 'o'};
        String str3 = new String(charArray);

        System.out.println(str1.equals(str2));
        System.out.println(str1.equals(str3));
        System.out.println(str2.equals(str3));
        System.out.println("Hello".equals(str3));
        String str4  = "aaa";
        String str5 = "AAA";
        System.out.println("aaa".equals(str4));
        //推荐
        System.out.println(str4.equals("aaa"));
        //不推荐,如果str4是null,则报错,空指针异常:NullPointerException
        System.out.println(str4.equals(str5));
        System.out.println(str4.equalsIgnoreCase(str5));

    }

}

获取字符串

/**
 * @author 270
 * String与获取相关的方法:
 * 1.public int length():获取字符串含有的字符个数,拿到字符长度
 * 2.public String concat(String str):将当前字符串和参数字符串拼接成为返回值新的字符串。
 * 3.public char charAt(int index)获取指定索引位置的单个字符(索引从0开始)
 * 4.public int indexOf(String str):查找参数字符串在本字符当中首次出现的索引位置,如果没有返回-1值
 */
public class Demo02StringGet {
    public static void main(String[] args) {
        //获取长度
        int length = "asdafdfasfdgfdgs".length();
        System.out.println("字符串长度为:"+length);

        //拼接字符串
        String str1 = "Hello";
        String str2 = "World";
        String str3 = str1.concat(str2);
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        //这里的str3是新的字符串
        //【注意】:字符串一旦创建就不会改变,所谓的删除,截取,拼接都是换上了新的字符串

        char ch = "tseveno".charAt(5);
        System.out.println("在字符串‘tseveno’中5号索引位置的字符是"+ch);
        System.out.println("==============");

        String ori = "bnatianyin272520shi";
        int index1 = ori.indexOf("an");
        int index2 = ori.indexOf("a");
        System.out.println("第一次出现'an'的位置为"+index1);
        System.out.println("第一次出现'a'的位置为"+index2);
    }
}

字符串的截取方法:

package Demo02;

/**
 * @author 270
 * 字符串的截取方法:
 *
 * public String substring(int index):截取从参数位置一直到末尾,返回新的字符串
 * public String substring(int begin,int end)截取从begin开始到end结束的中间的字符串
 * 【备注】:[begin,end),包含左边不包含右边
 */
public class Demo01SubString {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = str1.substring(5);
        System.out.println(str1);
        System.out.println(str2);
        System.out.println("============");

        String str3 = str1.substring(4,7);
        System.out.println(str3);
        System.out.println("==============");


        //这里虽然两次打印的字符串内容不一样
        //但是str中保存的是地址值
        //两次System.out.println打印的对象是不同的地址值
        //字符串本身的内容是没用变化的
        String str = "Hello";
        System.out.println("str");
        str = "Java";
        System.out.println("str");

    }

字符串的转换相关方法

package Demo02;

/**
 * @author 270
 * String当中与转换相关的常用方法有:
 * <p>
 * public char[] tocharArray():将当前字符串拆分成字符数组作为返回值
 * public byte[] getBytes():获得当前字符串底层的字节数组。
 * public String replace(CharSequence oldString,CharSequence newString)
 * 将所有字符串替换成为新的字符串,返回替换之后的结果新字符串
 * 【备注】:CharSequence意思就是说可以接受字符串类型
 */
public class Demo03StringConvert {
    public static void main(String[] args) {
        char[] ch = "Hello".toCharArray();
        System.out.println(ch.length);
        for (int i = 0; i < ch.length; i++) {
            System.out.println(ch[i]);
        }
        System.out.println("==============");
        //转换为字节数组
        byte[] bytes = "abc".getBytes();
        System.out.println(bytes);//显示bytes指向的地址
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]);//bytes数组显示的是a,b,c对应的ASCI码值
        }
        System.out.println("==============");

        //替换字符串内容生成新的字符串
        String str1 = "What's your name ?";
        String str2 = str1.replace("a","t");
        System.out.println(str1);
        System.out.println(str2);

        System.out.println("==========");


    }
}


打印结果
5
H
e
l
l
o
==============
[B@48140564
97
98
99
==============
What's your name ?
Whtt's your ntme ?
==========

 

字符串分隔方法

package Demo02;

/**
 * @author 270
 * 分割字符串的方法:
 * public String[] split(String regex):按照参数的规则,将字符串切分成若干部分
 *split方法其实是一个"正则表达式";,今后学习
 * 【注意】:如果要按照英文句点,"."进行切分必须写\\.(两个反斜杠)
 * 因为"."在正则表达式中有特殊含义
 */
public class Demo04StringSplit {
    public static void main(String[] args) {
        String str1 = "aaa,bbb,ccc";
        String[] array1 =  str1.split(",");
        for (int i = 0; i < array1.length; i++) {
            System.out.println(array1[i]);
        }
        System.out.println("==============");
        String str2 = "aaa bbb ccc";
        String[] array2 = str2.split(" ");
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);
        }
        String str3 = "XXX.YYY.ZZZ";
        String[] array3 = str3.split(".");
        System.out.println(array3.length);
        for (int i = 0; i < array3.length; i++) {
            System.out.println(array3[i]);
        }
        System.out.println("=========");
        String[] array4 = str3.split("\\.");
        for (int i = 0; i < array4.length; i++) {
            System.out.println(array4[i]);
        }

    }
}————输出结果:
aaa
bbb
ccc
==============
aaa
bbb
ccc
0
XXX
YYY
ZZZ

字符串练习1

package Demo3;

/**
 * @author 270
 *
 * 定义方法,将数组{1,2,3}按照指定格式拼接成一个字符串:
 * 格式为[word1#word2#word3]
 */
public class Demo01StringTest {
    public static void main(String[] args) {
        int[] array = {1,2,3};
        //定义数组
        //调用方法
        String str1 = arrayToString(array);
        System.out.println("=================");
        String str2 = arrayChange(array);
        System.out.println(str2);
    }

       //错误方法:打印结果一样,但是没用产生相应的字符串

    public static String arrayToString(int[] array){
        System.out.print("[");
        for (int i = 0; i < array.length; i++) {
            if (i==array.length-1){
                System.out.print("word"+array[i]);
            }else{
                System.out.print("word"+array[i]+"#");
            }
        }
        System.out.println("]");
      return new String();
    }
   public static String arrayChange(int[] array){
        String str = "[";
       for (int i = 0; i < array.length; i++) {
           if(i == array.length-1){
               str += "word"+array[i]+"]";
           }else{
               str += "word"+array[i]+"#";
           }
       }
       return str;
   }

}
打印结果——————
    [word1#word2#word3]
=================
[word1#word2#word3]
    

字符串练习二

package Demo3;

import java.util.Scanner;

/**
 * @author 270
 * 从键盘输入字符串,统计各种字符出现的次数
 * 种类有:大写,小写,数字,其他
 *
 * 思路:
 * 1.键盘打印,用到Scanner
 * 2.定义四个变量代表次数
 * 3.需要将字符串转换为char[]数组 toCharArray()
 * 4.遍历char[]数组
 * 5.打印变量
 */
public class Demo02StringTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String input = sc.next();
        char[] sample = input.toCharArray();
        int A =0;
        int a =0;
        int num =0;
        int other =0;
        for (int i = 0; i < sample.length; i++) {
            char ch = sample[i];
            //设置当前字符
            if(ch>='A'&&ch<='Z'){
                A++;
            }
             else if(ch>='a'&&ch<='z'){
                a++;
            }
            else if(ch>='0'&&ch<='9'){
                num++;
            }else{
                other++;
            }
        }
        System.out.println(input+"中的大写字母有"+A+"个");
        System.out.println(input+"中的小写字母有"+a+"个");
        System.out.println(input+"中的数字有"+num+"个");
        System.out.println(input+"中的其他字符有"+other+"个");

    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值