• 关于String StringBuffer 和 StringBulider


    关于String StringBuffer 和 StringBulider

     

    String是java中字符串中引用类型。

    1.关于==和equals,String字符串的==通常用来判断两个字符串在内存中的地址是否一致,equals用来判断字符串中存放的内容是否一致。

    复制代码
    public class Strings {
        public static void main(String[] args) {
            String str1 = "hello";
            String str2 = "hello";
            String str3 = new String("hello");
            String str4 = "he"+"llo";
            String str5 = "he";
            str5 = str5 +"llo";
            
            System.out.println(str1==str2);   //true;
            System.out.println(str1==str3);   //false;
            System.out.println(str1==str4);      //true;
            System.out.println(str1==str5);   //false;
            System.out.println("--------------------");
            System.out.println(str1.equals(str2));   //true;
            System.out.println(str1.equals(str3));   //true;
            System.out.println(str1.equals(str4));   //true;
            System.out.println(str1.equals(str5));   //true;
        }
    }
    复制代码

    2.关于字符串的运算效率问题。在字符串的多次循环叠加中直接使用"+"是非常耗费内存和时间的,因为每一次相加,系统都将创建一次对象。建议使用StringBuilder进行字符串运算,可以有效解决字符串相加效率不高的问题。

    复制代码
        private static String stringCal() {   //3486ms
            String s0 = "abcdefghijklmnopqrstuvwxyz";
            String s = "";
            for(int i=0;i<10000;i++) {
                s += s0;//s = s + s0;
            }
            return s;
        }
        
        private static String stringBuildCal() { //2ms
            String s0 = "abcdefghijklmnopqrstuvwxyz";
            StringBuilder s = new StringBuilder();
            for(int i=0;i<10000;i++) {
                s.append(s0);
            }
            return s.toString();
        }
        
    复制代码

     StringBuilder与 StringBuffer

        StringBuilder:线程非安全的

        StringBuffer:线程安全的

        当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

  • 相关阅读:
    Python: 编程遇到的一些问题以及网上解决办法?
    Python: Win7下使用 pip install lxml 无法安装lxml?
    Python:Pycharm下无法导入安装好的第三方模块?
    Python:如何删除文件中的空白行?
    Pycharm 快捷键
    Python读取二进制文件
    python实现grep
    Python学习笔记
    VBA批量查找和复制文件
    %~dp0是什么意思
  • 原文地址:https://www.cnblogs.com/lxsir/p/6930783.html
Copyright © 2020-2023  润新知