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();
        }
    }
    
  • 相关阅读:
    关于Spring MVC跨域
    Linux(Debian) 上安装tomcat并注册服务开机自启动
    fastjson SerializerFeature详解
    Mysql group_concat函数被截断的问题
    eclipse中show whitespace characters显示代码空格,TAB,回车 导致代码乱恶心
    Oracle数据库之动态SQL
    tomcat日志报Invalid message received with signature的解决办法
    用HttpClient发送HTTPS请求报SSLException: Certificate for <域名> doesn't match any of the subject alternative names问题的解决
    高可用集群架构的演进
    database disk image is malformed
  • 原文地址:https://www.cnblogs.com/DemoLi/p/15640439.html
Copyright © 2011-2022 走看看