String

键盘录入字符串

public class demoscanner {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入");
        //调用nextLine方法接收字符串
        //ctrl + alt + v :快速生成方法的返回值
        String s = sc.nextLine();
        System.out.println(s);
    }
}
  • sc.nextLine()是接收字符串 结束标志是回车换行符
  • sc.nextInt()是接收数字
  • sc.next()录入数据时遇到空格 和 tab键就不再录入数据了
  • 建议sc.next()和sc.nextLine()一起使用

String

  • 字符串是常量;它们的值在创建之后不能更改。

String常见构造方法

ou0V1K.png

public class StringConstrutor {
    public static void main(String[] args) {
        //1
        String s1 = new String();
        //2
        char[] chs = {'a','b','c'};
        String s2 = new String(chs);
        //3
        String s3 = new String("1232");
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

创建字符串对象的区别对比

  • 以“ ”方式给出的字符串,只要字符序列相同(顺序和大小写) ,无论在程序代码中出现几次JVM都只会建立一个String对象 并在字符串常量池中维护
  • 字符串常量池:(在JDK7版本开始,从方法区挪到了堆内存)
    • 当使用双引号创建字符串对象的时候,系统会检查该字符是否在字符串常量池中存在
      • 不存在:创建
      • 存在:不会重新创建,而是直接用
  • 双引号创建的字符串对象,在字符串常量池中存储 通过构造方法创建的字符串对象 在堆内存中存储

String字符串的特点

ouDjpt.png

  • 注意变量和字符串拼接 与 字符串之间的拼接

字符串的比较

  • 字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法是equals()
    • public boolean equals(Object anObject): 将此字符串与指定对象进行比较。由于我们比较的是字符串对象。所以参数直接传递一个字符串
public class Demo1Equals {
    public static void main(String[] args) {
        String s1 = "abc";
        String s2 = "ABC";
        System.out.println(s1.equals(s2));
        System.out.println(s1.equalsIgnoreCase(s2));
    }
}

登录案例

package com.demoli.Login;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        //1
        String username = "admin";
        String psd = "123456";
        Scanner sc = new Scanner(System.in);
        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入账号:");
            String scUsername = sc.nextLine();
            System.out.println("请输入密码");
            String scPsd = sc.nextLine();

            if(username.equalsIgnoreCase(scUsername) && psd.equals(scPsd)){
                System.out.println("登录成功");
                break;
            }else {
                if(i==3){
                    System.out.println("明天再来屌毛");
                }else {
                    System.out.println("登录失败,还有"+(3-i)+"次机会");
                }

            }
        }

    }

}

遍历字符串

ousxeS.png

ouy2kQ.png

package com.demoli.StringTest;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String s = sc.nextLine();
        for (int i = 0; i < s.length(); i++) {

            char c = s.charAt(i);
            System.out.println(c);
        }
    }
}
package com.demoli.StringTest;

import java.util.Scanner;

public class test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String s = sc.nextLine();

        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }

    }
}
  • char[] chars = s.toCharArray();
  • char c = s.charAt(i);

统计三种类型的字符次数

package com.demoli.StringTest;

import java.util.Scanner;

public class test3 {
    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 if (c>='1' && c<= '9'){
                numCount++;
            }
        }
        System.out.println("大写字母字符个数为"+bigCount);
        System.out.println("小写字母字符个数为"+smallCount);
        System.out.println("数字字符个数为"+numCount);
    }
}

手机号屏蔽

//字符串截取

package com.demoli.substring;

public class demo1 {
    public static void main(String[] args) {
        /*
        截取字符串:
            String substring(int beginIndex):
                从传入的索引位置处  向后截取到末尾,得到新的字符串并返回
            String substring(int beginIndex,int endIndex)
                从beginIndex索引开始位置开始截取  截取到endIndex索引位置 得到新字符串并返回(包含头 不含尾)
         */
        String s = "limadawdsad";
        String s1 = s.substring(2);
        System.out.println(s1);
        String substring = s.substring(0, 2);
        System.out.println(substring);


    }
}

oug8O0.png

import java.util.Scanner;

public class test {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入手机号:");
        String telString = sc.nextLine();

        String start = telString.substring(0, 3);
        String end = telString.substring(7);
        System.out.println(start+"****"+end);
    }
}
请输入手机号:
17191199811
171****9811

敏感词替换

ou2ej1.png

package com.demoli.Test;

import java.util.Scanner;

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

切割字符串

ou27vR.png

package com.demoli.Test;

import com.demoli.domain.Student;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String s = sc.nextLine();
        String[] stu_arr = s.split(",");
       // String name = stu_arr[0];
       // String age = stu_arr[1];
        Student student = new Student(stu_arr[0], stu_arr[1]);
        String age1 = student.getAge();
        String name1 = student.getName();
        System.out.println(name1+"的年龄是"+age1);
    }
}

ouW36A.png

ouWUk8.png

StringBuilder概述

  • StringBuilder是一个可变的字符串类 我们可以把它看成是一个容器

  • 作用:提高字符串操作效率

  • 是一个可变的字符串类 可以看做是一个容器

  • ou7ise.png

  • ou7AZd.png

  • package com.demoli.stringbuilder;
    
    public class test {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            
            sb.append("红色").append("蓝色").append("绿色");
            System.out.println(sb);
            sb.reverse();
            System.out.println(sb);
            System.out.println("sb中字符个数为:"+ sb.length());
    
            String s = sb.toString();
            System.out.println(s);
        }
    }
    

    ouHLNR.png

区别

  • String:内容是不可变的
  • StringBuilder : 内容是可变的

对称字符串

package com.demoli.stringbuilder;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        String s = sc.nextLine();
        StringBuilder sb = new StringBuilder(s);
        StringBuilder reverse_sb = sb.reverse();
        String s1 = reverse_sb.toString();
        if (s.equals(s1)){
            System.out.println("是");
        }else {
            System.out.println("否");
        }
    }
}

String和StringBuilder的互相转化

ouqdQf.png

拼接字符串

package com.demoli.stringbuilder;

public class Test3 {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        String s = arrayToString(arr);
        System.out.println(s);
    }
    public static String arrayToString(int[] arr){

        StringBuilder sb = new StringBuilder("[");

        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length-1){
                sb.append(arr[i]).append("]");
            }else {
                sb.append(arr[i]).append(",");
            }
        }
        return sb.toString();
    }
}
原文地址:https://www.cnblogs.com/DemoLi/p/15640439.html