《Java编程思想》读书笔记 第十三章 字符串

简介:

《Java编程思想》读书笔记 第十三章 字符串

不可变String

String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修改后的字符串内容,而最初的String对象则丝毫未动

换句话说:任何对String的改变都会引发新的对象的生成

StringBuilder和StringBuffer

StringBuilder:线程不安全的

StringBuffer:线程安全的,要维持同步锁,因此效率低

public static void testString() {
        long start = System.currentTimeMillis();
        String str = null;
        for (int i = 0; i < 200000; i++)
            str = str + i + ",";
        System.out.println(System.currentTimeMillis() - start);
    }

    public static void testStringBuffer() {
        long start = System.currentTimeMillis();
        StringBuffer sbf = new StringBuffer();
        for (int i = 0; i < 200000; i++)
            sbf.append(i + ",");
        System.out.println(System.currentTimeMillis() - start);
    }

    public static void testStringBuilder() {
        long start = System.currentTimeMillis();
        StringBuilder sbl = new StringBuilder();
        for (int i = 0; i < 200000; i++)
            sbl.append(i + ",");
        System.out.println(System.currentTimeMillis() - start);
    }

    public static void main(String[] args) {
        testString();
        testStringBuffer();
        testStringBuilder();
    }

结果
可以很明显的看出来:效率:StringBuilder > StringBuffer > String

三者使用情景:

  • 如果要操作少量的数据 --> String
  • 单线程中,在字符串缓冲区下操作大量数据 --> StringBuilder
  • 多线程中,在字符串缓冲区下操作大量数据 --> StringBuffer
目录
相关文章
|
1天前
|
安全 Java
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第11天】在Java并发编程中,线程安全和性能优化是两个重要的主题。本文将深入探讨这两个方面,包括线程安全的基本概念,如何实现线程安全,以及如何在保证线程安全的同时进行性能优化。我们将通过实例和代码片段来说明这些概念和技术。
2 0
|
1天前
|
Java 调度
Java并发编程:深入理解线程池
【5月更文挑战第11天】本文将深入探讨Java中的线程池,包括其基本概念、工作原理以及如何使用。我们将通过实例来解释线程池的优点,如提高性能和资源利用率,以及如何避免常见的并发问题。我们还将讨论Java中线程池的实现,包括Executor框架和ThreadPoolExecutor类,并展示如何创建和管理线程池。最后,我们将讨论线程池的一些高级特性,如任务调度、线程优先级和异常处理。
|
1天前
|
存储 Java 索引
【JAVA基础篇教学】第十一篇:Java中字符串操作详解
【JAVA基础篇教学】第十一篇:Java中字符串操作详解
|
2天前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
20 4
Java并发编程学习11-任务执行演示
|
2天前
|
Java
代码实例演示Java字符串与输入流互转
代码实例演示Java字符串与输入流互转
|
2天前
|
存储 安全 Java
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
|
2天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
3天前
|
缓存 Java 数据库
Java并发编程中的锁优化策略
【5月更文挑战第9天】 在高负载的多线程应用中,Java并发编程的高效性至关重要。本文将探讨几种常见的锁优化技术,旨在提高Java应用程序在并发环境下的性能。我们将从基本的synchronized关键字开始,逐步深入到更高效的Lock接口实现,以及Java 6引入的java.util.concurrent包中的高级工具类。文中还会介绍读写锁(ReadWriteLock)的概念和实现原理,并通过对比分析各自的优势和适用场景,为开发者提供实用的锁优化策略。
4 0
|
3天前
|
JavaScript 小程序 Java
基于java的少儿编程网上报名系统
基于java的少儿编程网上报名系统
11 2
|
3天前
|
存储 安全 算法
掌握Java并发编程:Lock、Condition与并发集合
掌握Java并发编程:Lock、Condition与并发集合
11 0