zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    
  • 相关阅读:
    LeetCode 121. Best Time to Buy and Sell Stock
    LeetCode 221. Maximal Square
    LeetCode 152. Maximum Product Subarray
    LeetCode 53. Maximum Subarray
    LeetCode 91. Decode Ways
    LeetCode 64. Minimum Path Sum
    LeetCode 264. Ugly Number II
    LeetCode 263. Ugly Number
    LeetCode 50. Pow(x, n)
    LeetCode 279. Perfect Squares
  • 原文地址:https://www.cnblogs.com/DemoLi/p/15640439.html
Copyright © 2011-2022 走看看