String

Posted tyrion4396

tags:

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

String概述

String类的特点

  • 字符串不可改变、它的值在创建后不可更改

  • 虽然值不可改变、但是值可以被共享使用

String类常见构造方法

public String()                   // 创建一个空白字符串对象,不含任何内容
public String(char[] chs)        // 根据字符数组的内容,来创建字符串对象
public String(String original)  // 根据传入的字符串内容,来创建字符串对象
public s = "abc"               // 直接赋值的方式创建字符串对象,内容就是abc

String类构造方法创建字符串对象的特点

构造方法每创建一次对象,都会在堆内存中开辟不同的对象空间,所以每new一次,都是不同的对象

直接定义字符串变量的方式特点

直接定义的字符串内容会存储到堆内存中的常量池里,字符串内容如果相同,则直接共享使用

字符串的比较

==号的功能

==号如果比较的是基本数据类型,比较的是具体的值
==号如果比较的是引用数据类型,比较的是对象的地址值

字符串内容比较

equals(String s) : 比较字符串内容是否相同,严格区分大小写
equalsIgnoreCase(String s) : 比较字符串内容是否相同,忽略大小写

用户登录案例

   
public static void main(String[] args) {
        String useName = "亚索";
        String password = "eqeqeqfr";
        for (int i = 1; i <= 3 ; i++) { // 设置3次机会
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入您的用户名");
            String scUseName = sc.nextLine();
            System.out.println("请输入您的密码");
            String scPassword = sc.nextLine();
            if (scUseName.equals(useName) && scPassword.equals(password)) {
                System.out.println("登录成功"); // equals 比较字符串是否相同
                break; // 登录成功后停止循环
            } else {
                if (i==3) {
                    System.out.println("您的机会已用完,请明天再试");
                } else {
                    System.out.println("登录失败,你还剩下"+(3-i)+"次机会");
                }
            }
        }
    }

字符串的遍历

第一种方法

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入");
        String sChar = sc.nextLine();
        char[] chars = sChar.toCharArray();
        for (int i = 0; i < sChar.length(); i++) {
            System.out.println(chars[i]);
        }
    }

第二种方法

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入");
        String sChar = sc.nextLine();
        for (int i = 0; i < sChar.length(); i++) {
            char ch = sChar.charAt(i);
            System.out.println(ch);
        }
    }
}

统计字符的个数

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入");
    String s = sc.nextLine();
    int bigCount = 0; // 定义三个计数器
    int smallCount = 0;
    int numCount = 0;
    char[] chars = s.toCharArray();
    for (int i = 0; i < chars.length; i++) { // 遍历字符串
        char c = chars[i];
        if (c >= ‘A‘ && c <= ‘Z‘) {
            bigCount++;
        }else if(c >= ‘a‘ && c <= ‘z‘){
            smallCount++;
        }else{
            numCount++;
        }
    }
    System.out.println("大写字母的个数为:"+bigCount);
    System.out.println("小写字母的个数为:"+smallCount);
    System.out.println("数字字母的个数为:"+numCount);
}

字符串截取(手机号屏蔽)

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入手机号:");
        String tel = sc.nextLine();
        String start = tel.substring(0, 3);//截取字符串前三位
        String end = tel.substring(7);//截取字符串最后四位
        System.out.println(start + "****" + end);
    }

字符串替换(敏感词替换)

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入");
        String s = sc.nextLine();
        String result = s.replace("TMD", "***");
        System.out.println(result);
    }

字符串切割

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生信息:"); // 张三 23
        String stu = sc.nextLine();
        String[] sArr = stu.split(",");
        System.out.println(sArr[0]);
        System.out.println(sArr[1]);
    }

String方法小结

public boolean equals(Object anObject) // 比较字符串的内容,严格区分大小写
public boolean equalsIgnoreCase(String anotherString) // 比较字符串的内容,忽略大小写
    
public int length() // 返回此字符串的长度
    
public char charAt(int index) // 返回指定索引处的 char 值
public char[] toCharArray() // 将字符串拆分为字符数组后返回

public String substring(int beginIndex, int endIndex) // 根据开始和结束索引进行截取,得到新的字符串(包含头,不包含尾)
public String substring(int beginIndex) // 从传入的索引处截取,截取到末尾,得到新的字符串

public String replace(CharSequence target, CharSequence replacement) // 使用新值,将字符串中的旧值替换,得到新的字符串
public String[] split(String regex) // 根据传入的规则切割字符串,得到字符串数组

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

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

Failed to convert property value of type ‘java.lang.String‘ to required type ‘int‘ for property(代码片段

面试常用的代码片段

21个常用代码片段

js常用代码片段

java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段