zoukankan      html  css  js  c++  java
  • Java003-String字符串

    1.这两种定义有什么区别

    /***
         * 面试题:这两种定义方式有什么区别?
         * 如何证明?
         * @param args
         */
        public static void main(String[] args) {
            String str = "hello";//常量池
    
            String str1 = new String("hello");//在堆里开辟一块新的空间
        }
    

    2.String 常用方法

       public static void test(){
            String str = "Hello World";//常量的特点是定义了,就不会变,除非重新赋值
            int len = str.length();//字符串的长度
            boolean eq = str.equals("33333");//判断两个字符的值是不是相等
            char charStr = str.charAt(2);//将字符串转换为char类型
    
            boolean contains = str.contains("hello");//判断字符串是否包含这个字符串
            boolean startWith = str.startsWith("H");//判断字符串是否以这个字符串开始
            boolean endWith = str.endsWith("ddd");//判断字符串是否以这个字符串结尾
    
            boolean empty = str.isEmpty();//判断这个字符串是否为空的字符串,是"",不是null
    
            boolean eqIgnore = str.equalsIgnoreCase("HELLO WORLD");//不区分大小写的相等
            //rep = Hello java; str = Hello World
            //如果没有找到匹配的,则不做替换
            String rep = str.replaceAll("World","java");//替换全部的
            String rep1 = str.replace("H","e");//替换一个,传值的变量都是char
            String rep2 = str.replace("He","eeeee");//替换一个,传值的变量都是char
            System.out.println(rep);
            System.out.println(str);
            System.out.println(rep1);
            System.out.println(rep2);
    
    
            String[] strs = str.split(" ");//分割,分割后是变成数组
    
            String sub = str.substring(1,5);//截取,下标是从0开始,1--是开始下标,5--是截止下标
            System.out.println(sub);
    
            String upStr = str.toUpperCase();//转大写
            String lowStr = str.toLowerCase();//转小写
        }
    

    3.commons-lang3

    dependencies {
        compile('org.apache.commons:commons-lang3:3.10')
    }

    小练习

    public class Demo6 {
        //练习题:给定一个字符串,判断是否是一个回文(即正反都一样)
        //abcdefggfedcba
        public static void main(String[] args) {
            test1();
        }
    
        public static void test1(){
            String str = "abcdefgfedcba";
            String str1 = StringUtils.reverse(str);//将字符串反转
            System.out.println("str1 = " + str1);
            if (str.equals(str1)){
                System.out.println("该字符串时一个回文");
            }
        }
    }

    4.StringBuilder和StringBuffer

    StringBuffer多了一个synchronized 关键字,线程安全锁

    StringBuilder是线程不安全的

    StringBuffer是线程安全的

    但是一般情况下是在一个方法下使用,使用StringBuilder多点

    如果出现多线程调用时,再用StringBuffer

    //StringBuilder 的定义
    @Override
        public StringBuilder append(String str) {
            super.append(str);
            return this;
        }
    
    //StringBuffer的定义
    @Override
        public synchronized StringBuffer append(String str) {
            toStringCache = null;
            super.append(str);
            return this;
        }
    
    public static void test1(){
            String str = "a,b,c,d,e,f,g";
            String[] arr = str.split(",");
            String res = "";
            //这种情况是在不断的创建对象
            for (String key:arr){
                res += key + "*";
            }
            System.out.println("res = " + res);
        }
    
        public static void test2(){
            String str = "a,b,c,d,e,f,g";
            String[] arr = str.split(",");
            //StringBuilder相当于一个容器,不断的往容器里加内容
            StringBuilder res = new StringBuilder();
            for (String key:arr){
                res.append(key).append("*");
            }
            System.out.println("res = " + res);
        }
    
        public static void test3(){
            String str = "a,b,c,d,e,f,g";
            String[] arr = str.split(",");
            //StringBuffer多了一个synchronized 关键字,线程安全锁
            StringBuffer res = new StringBuffer();
            for (String key:arr){
                res.append(key).append("*");
            }
            System.out.println("res = " + res);
        }
    

     

  • 相关阅读:
    git clone失败
    矩阵相乘
    pandas中关于DataFrame 去除省略号
    Linux系统清除缓存
    Git 远程仓库 更新url
    看不到git远程分支
    c++
    undefined reference to symbol' pthread_create@@GLIBC_2.2.5'
    ssh 与远程机器保持心跳(linux)
    python 读取文件第一列 空格隔开的数据
  • 原文地址:https://www.cnblogs.com/cjxxl1213/p/14997996.html
Copyright © 2011-2022 走看看