String类

String类

字符串概述
  • java.long.String类代表字符串0

  • API当中说,Java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现

    其实就是说:程序当中所有的双引号字符串,都是String类的对象。(就算没有new,也照样是)

字符串特点
  1. 字符串内容永不可变化
  2. 正式因为字符串不可改变,所以字符串是可以共享使用的
  3. 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组
字符串的构造方法
  • 创建字符串的常见3+1种方式

    • 三种构造方法:

    public String( ): 创建一个空白字符串,不含任何内容

    public String(char[] array): 根据字符数组的内容,来创建对应的字符串

    public String(byte[] array): 根据字节数组的内容,来创建对应的字符串

    • 一种直接创建: String str = “Hello”; //右边直接用双引号

注意:直接写上双引号,就是字符串对象

字符串的常量池
  1. 对于引用类型来说,==进行的是地址值的比较
  2. 双引号直接写的字符串在常量池当中,new的不在池当中
字符串的比较
  • ==是对象的地址值比较,如果非要进行字符串的内容比较,可以使用两个方法

    • public boolean equals (Object obj):参数可以是任意对象,只有参数是一个字符串并且内容相同时才会给true,否则返回false

    注意事项:

    1. 任何对象都能被Object进行接收

    2. equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样

    3. 如果比较双方一个常量一个变量,推荐把常量字符串写在前面

      推荐“abc".equals(str) 不推荐 str.equals(“abc”)

    • public boolean equalsignoreCase(String str):忽略大小写,进行内容比较
package Demo02;

import com.sun.org.apache.xalan.internal.xsltc.dom.SimpleResultTreeImpl;

public class Demo02 {
    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)); //true
        System.out.println(str2.equals(str3)); //true
        System.out.println(str3.equals("Hello")); //true
        System.out.println("Hello".equals(str3)); //true

        String str4 = "hello";
        System.out.println(str1.equals(str4)); //false

        String str5 = null;
        System.out.println("abc".equals(str5)); //推荐,false
        //System.out.println(str5.equals("abc")); //不推荐:报错,空指针异常
        System.out.println("================");


        String strA ="Java";
        String strB = "java";
        System.out.println(strA.equals(strB)); //false 严格区分大小写
        System.out.println(strA.equalsIgnoreCase(strB)); //true  不区分大小写

    }
}
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值
package Demo02;

public class Demo03 {
    public static void main(String[] args) {
        //获取字符串的长度
        int length = "hoiohohsohosidhoahdasdoa".length();
        System.out.println("字符串长度:" + length);

        //拼接字符串
        String str1 = "Hello";
        String str2 = "World";
        String str3 = str1.concat(str2);
        System.out.println(str1); //Hello
        System.out.println(str2); //World
        System.out.println(str3); //HelloWorld
        System.out.println("==============");

        //获取指定索引位置的单个字符
        char ch = "Hello".charAt(1);
        System.out.println("在索引位置的字符是:" + ch);

        //查找参数字符串在本来字符串当中出现的第一次索引位置
        //如果根本没有,返回-1值
        String original = "HelloWorldHelloWorld";
        int index = original.indexOf("llo");
        System.out.println("第一次索引值是:" + index); //2
        System.out.println("HelloWorid".indexOf("abc"));  //-1;



    }
}
字符串的截取方法
  1. public String sudstring(int index):截取从参数位置一直到字符末尾,返回新字符串

  2. public String substring(int begin,int end):截取从begin开始,一直到end结束,中间的字符串

    备注:[begin,end),左闭右开

package Demo02;

import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;

public class Demo04 {
    public static void main(String[] args) {
        String str1 = "HelloWorld";
        String str2 = str1.substring(5);
        System.out.println(str1); //HelloWorld,原封不动
        System.out.println(str2); //World,新字符串
        System.out.println("============================");

        String str3 = str1.substring(4,7);
        System.out.println(str3); //oWo
        System.out.println("=============");
        
        //下面这种写法,字符串的内容是没有改变的
        //下面有两个字符串:"Hello","Java"
        //strA当中保存的是地址值
        //本来地址值是Hello的0x666
        //后来地址值变成了Java的0x999
        String strA = "Hello";
        System.out.println(strA); //"Hello"
        strA = "Java";
        System.out.println(strA); //"Java"
    }
}
字符串的转换相关方法:String当中与转换相关的常用方法有:
  1. public char[] toCharArray(): 将当前字符串拆分成字符数组作为返回值

  2. public byte[] geyBytes(): 获得当前字符串底层的字节数组

  3. public String replace (CharSequence oldString,CharSequence newString): 将所有吹出现的老字符串替换成为新的字符串,返回替换之后的结果新字符串

    备注:CharSequence意思就是说可以接受字符串类型。

package Demo02;

public class Demo05 {
    public static void main(String[] args) {
        //转换成为字符数组
        char[] chars = "Hello".toCharArray();
        System.out.println(chars[0]); //H
        System.out.println(chars.length); //5
        System.out.println("==========");

        //转换成字节数组
        byte[] bytes = "abc".getBytes();
        for (int i = 0; i < bytes.length; i++) {
            System.out.println(bytes[i]); //97,98,99
        }
        System.out.println("=================");

        String str1 = "How do you do?";
        String str2 = str1.replace("o","*");
        System.out.println(str1); //How do you do?
        System.out.println(str2); //H*w d* y*u d*?
        System.out.println("========");

        String lang1 = "会不会玩啊,你大爷的!";
        String lang2 = lang1.replace("你大爷的","****");
        System.out.println(lang2); //会不会玩啊,****!

    }
}
字符串的分割
  1. public String[] split(String regex): 按照参数的规则,将字符串切分成为若干部分

注意事项:

split方法的参数其实是一个”正则表达式“,今后学习。今天要注意:如果按照英文句点”.“进行切分,必须写” \ \ .“(两个反斜杠加一个点)

package Demo02;

public class Demo06 {
    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]);

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

        String str3 = "XXX.YYY.ZZZ";
        String[] array3 = str3.split("\\.");
        //注意事项
        System.out.println(array3.length); //0
        for (int i = 0; i < array3.length; i++) {
            System.out.println(array3[i]);

        }
    }
}
练习:拼接字符串
  • 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。格式参照如下[Word1#Word2#Word3]

分析:

  1. 首先准备一个Int[]数组,内容是:1,2,3

  2. 定义一个方法,用来将数组变成字符串

    三要素:

    返回值类型:String

    方法名称‘:fromArratyToString 随便

    参数列表:int[ ]

  3. 格式: [Word1#Word2#Word3]

    用到:for循环,字符串拼接,每个数组元素之前都有word字样,分割使用的是#,区分一下是不是最后一个

  4. 调用方法,得到返回值,并打印字符串

    package Demo02;
    
    public class Demo07 {
        public static void main(String[] args) {
            int[] array = {1,2,3};
    
            String result = fromArratyToString(array);
            System.out.println(result);
        }
        public  static  String fromArratyToString(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;
        }
    }
练习2 字符串的数量统计
  • 题目:键盘输入一个字符串,并且统计其中各种字符出现的次数

    ​ 种类有:大写字母,小写字母,数字,其他

    思路:

    1. Scanner
    2. 键盘输入的是字符串,那么:String str = sc.next()
    3. 定义四个变量:分别代表四种字符各自的出现次数
    4. 需要对字符串一个字,一个字检查,String–?char[], 方法就是toCharArray()
    5. 遍历char[]字符数组,对当前字符的种类进行判断。并且用四个变量进行++动作
    6. 打印输出四个变量,分别代表四种字符出现次数
package Demo02;

import java.util.Scanner;


public class Demo08 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String imput = sc.next(); //获取键盘输入的一个字符串

        int countUppor = 0; //大写字母
        int countLower = 0; //小写字母
        int countNumber = 0; //数字
        int countOther = 0; //其他

        char[] charArray = imput.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            char ch = charArray[i]; //当前单个字符
            if ('A' <= ch && ch <= 'Z'){
                countUppor++;
            }else if ('a'<= ch && ch <= 'z' ){
                countLower++;
            }else if ('0'<= ch && ch <= '9'){
                countNumber++;
            }else{
                countOther++;
            }

        }
        System.out.println("大写字母有:" + countUppor);
        System.out.println("小写字母有:" + countLower);
        System.out.println("数字有:" + countNumber);
        System.out.println("其他有:" + countOther);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值