类String

Posted wurengen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类String相关的知识,希望对你有一定的参考价值。

String类概述

java.lang.String 类代表字符串。Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例。类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。

字符串的特点:

  • 字符串不变:字符串的值在创建后不能被更改。
  • 因为String对象是不可变的,所以它们可以被共享。
  • 字符串效果上相当于char[]字符数组,例如:"abc" 等效于 char[] data= ‘a‘ , ‘b‘ , ‘c‘ 。但是底层原理是byte[]数组。

查看构造方法(创建字符串对象的方式)

  • public String() :初始化新创建的 String对象,以使其表示空字符序列。
  • public String(char[] value) :通过当前参数中的字符数组来构造新的String。
  • public String(byte[] bytes) :通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。

直接写上字符串也是字符串实例,例如: String s = "adc";

package demo01;

public class Demo01String 
    public static void main(String[] args) 
        // 方式一:无参构造创建空字符串
        String str1 = new String();
        System.out.println(str1);
        // 方式二:通过字符数组构造
        char chars[] = ‘a‘, ‘b‘, ‘c‘;
        String str2 = new String(chars);
        System.out.println(str2);//abc
        // 方式三:通过字节数组构造
        byte bytes[] = 97, 98, 99;
        String str3 = new String(bytes);
        System.out.println(str3);//abc
        //方式四 :直接写上
        String str4 = "abc";
        System.out.println(str4);//abc
    

字符串常量池

双引号直接写的字符串会进入到常量池中,通过new出来字符串对象不再池中。 当我们创建一个新的字符串的时候,会首先进入常量池中进行寻找,如果此对象存在,则共享使用。不在创建新的对象。所以我们可以得出结论:直接写的字符串可以共享使用,而new 一次就会创建一个新的字符串对象。

字符串常用方法

判断功能的方法

  • public boolean equals (Object anObject) :将此字符串与指定对象进行比较。参数字符串与此字符串完全相同,才会返回true
  • public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写。
package demo01;

public class Demo02String 

    public static void main(String[] args) 
        // 创建字符串对象
        String s1 = "hello";
        char[] chars = ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘;
        String s2 = new String(chars);
        String s3 = "HELLO";
        // boolean equals(Object obj):比较字符串的内容是否相同
        System.out.println(s1.equals(s2)); // true
        System.out.println(s1.equals(s3)); // false
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
        //boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
        System.out.println(s1.equalsIgnoreCase(s2)); // true
        System.out.println(s1.equalsIgnoreCase(s3)); // true
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
    

注意:

  • 如果比较双方有常量参与,建议常量写在前面。例如: "a".equals(b)
  • 参数为Object 对象,可以接收任何对象
获取功能的方法:
  • public int length () :返回此字符串的长度。
  • public String concat (String str) :将指定的字符串连接到该字符串的末尾。
  • public char charAt (int index) :返回指定索引处的 char值。
  • public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
package demo01;

public class Demo03String 
    public static void main(String[] args) 
        //创建字符串对象
        String s = "Hello world 我爱中国";
        // int length():获取字符串的长度,其实也就是字符个数
        System.out.println(s.length());//16
        System.out.println("‐‐‐‐‐‐‐‐");
        // String concat (String str):将将指定的字符串连接到该字符串的末尾.
        String s2 = s.concat("2019");
        System.out.println(s2);//Hello world 我爱中国2019
        // char charAt(int index):获取指定索引处的字符
        System.out.println(s.charAt(0));//H
        System.out.println(s.charAt(1));//e
        System.out.println("‐‐‐‐‐‐‐‐");
        // int indexOf(String str):获取str在字符串对象中第一次出现的索引,没有返回‐1
        System.out.println(s.indexOf("爱"));//13
        System.out.println(s2.indexOf("2019"));//16
        System.out.println(s.indexOf("家"));//-1


    

截取功能的方法

  • public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
  • public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
package demo01;

public class Demo04String 
    public static void main(String[] args) 
        String s = "少小离家老大回2019";
        // String substring(int start):从start开始截取字符串到字符串结尾
        System.out.println(s.substring(0));//少小离家老大回2019
        System.out.println(s.substring(5));//大回2019
        System.out.println("‐‐‐‐‐‐‐‐");
        // String substring(int start,int end):从start到end截取字符串。含start,不含end。
        System.out.println(s.substring(0, s.length()));//少小离家老大回2019
        System.out.println(s.substring(3, 8));//家老大回2
    
转换功能的方法
  • public char[] toCharArray () :将此字符串转换为新的字符数组。
  • public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
  • public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。
package demo01;

public class Demo05String 
    public static void main(String[] args) 
        //创建字符串对象
        String s = "举头望明月";
        // char[] toCharArray():把字符串转换为字符数组
        char[] chs = s.toCharArray();
        for (int x = 0; x < chs.length; x++) 
            System.out.print(chs[x]);//举头望明月
        

        // byte[] getBytes ():把字符串转换为字节数组
        byte[] bytes = s.getBytes();
        for (int x = 0; x < bytes.length; x++) 
            System.out.print(bytes[x] + " ");//-28 -72 -66 -27 -92 -76 -26 -100 -101 -26 -104 -114 -26 -100 -120 
        
        System.out.println("");
        //打我 替换为 骂我
        String str = "我是国宝 不服来打我啊";
        String replace = str.replace("打我", "骂我");
        System.out.println(replace);//我是国宝 不服来骂我啊

    

注意:CharSequence 是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。

分割功能的方法
  • public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。参数是一个正则表达式
package demo01;

public class Demo06String 
    public static void main(String[] args) 
        //创建字符串对象
        String s = "aa1bb1cc";
        String[] strArray = s.split("1");
        for (int x = 0; x < strArray.length; x++) 
            System.out.print(strArray[x] + " "); // aa bb cc
        
    

统计字符个数

键盘录入一个字符,统计字符串中大小写字母及数字字符个数
package demo01;

import java.util.Scanner;

public class Demo07String 

    public static void main(String[] args) 
        //键盘录入一个字符串数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串数据:");
        String s = sc.nextLine();
        //定义三个统计变量,初始化值都是0
        int bigCount = 0;
        int smallCount = 0;
        int numberCount = 0;
        //遍历字符串,得到每一个字符
        for (int x = 0; x < s.length(); x++) 
            char ch = s.charAt(x);
            //拿字符进行判断
            if (ch >= ‘A‘ && ch <= ‘Z‘) 
                bigCount++;
             else if (ch >= ‘a‘ && ch <= ‘z‘) 
                smallCount++;
             else if (ch >= ‘0‘ && ch <= ‘9‘) 
                numberCount++;
             else 
                System.out.println("该字符" + ch + "非法");
            
        
        //输出结果
        System.out.println("大写字符:" + bigCount + "个");
        System.out.println("小写字符:" + smallCount + "个");
        System.out.println("数字字符:" + numberCount + "个");
    

 

 

 

 

以上是关于类String的主要内容,如果未能解决你的问题,请参考以下文章

如何将代码片段存储在 mongodb 中?

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

片段内的网格适配器不起作用

如何理解这段代码片段中的两对括号?

从Asynctask ONPostExecute调用片段方法

elasticsearch代码片段,及工具类SearchEsUtil.java