String和StringBuilder

String、StringBuffer和StringBuilder的详解 1.值的可变性String内部的value值是final修饰的,所以,它是不可变类;因此,每次修改String的值,都会产生一个新的对象。StringBuffer和StringBuilder是可变类,它们在字符串变更的时候,不会产生新的对象。2.线程安全String是不可变类,所以它是线程安全的。StringBuilder不是线程安全的。StringBuffer是线程安全的,因为它的每个操作方法都加了synchronized同步关键字。单线程情况下,建议使用StringBuilder。 阅读详情

String 概述

String类在java.lang包下,所以使用是不需导包

String类代表字符串,java程序中所有字符串文字(例如"abc")都被实现为此类的实例,也就是说,java程序中所有的双引号字符串,都是String类的对象

字符串的特点

  • 字符串不可变,它们的值在创建后不能被更改
  • 虽然String的值不可变,但可被共享
  • 字符串效果上相当于字符数组(char[ ]),但底层原理是字节数组(byte[ ])
    注:JDK8及以前是字符数组,JDK9及以后是字节数组

String构造方法

在这里插入图片描述

String对象的特点

通过new创建的字符串对象,每一次new都会申请一个内存空间,虽内容相同,但地址值不同。

题1、统计字符次数

需求:键盘录入一个字符串,统计该字符串中大写字母字符、小写字母字符,数字字符出现的次数(不考虑其他字符)

 public static void main(String[]args) {
        //思路①、键盘录入一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String line = sc.nextLine();

       //思路②、要统计三种类型的字符个数,需定义三个统计变量,初始值为0
        int bigCount = 0;
        int smallCount = 0;
        int numberCount = 0;

        //思路③、遍历字符串,得到每一个字符
        for (int i=0;i<line.length();i++){
            char ch = line.charAt(i);

            //思路④、判断该字符属于那种类型,然后对应类型的统计变量+1
            //例如ch是一个字符,要判断它属于大写字母、小写字母、还是数字,直接判断该字符是否在对应的范围即可
            if (ch>='A' && ch<='Z') {
                bigCount++;
            }else if (ch>='a' && ch<='z') {
                smallCount++;
            }else if (ch>='0' && ch<='9'){
                numberCount++;
            }
        }
        //思路⑤、输出三种类型的字符个数
        System.out.println("大写字母:"+bigCount+"个");
        System.out.println("小写字母:"+smallCount+"个");
        System.out.println("数字:"+numberCount+"个");
    }

题2、拼接字符串

需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果,例如;数组为int[]arr = {1,2,3};执行方法的输出结果为:[1,2,3]

	public static void main(String[] args) {
 //思路①、定义一个 int 类型的数组,用静态初始化完成数组元素的初始化
        int[]arr = {1,2,3};

        //思路②、调用方法用一个变量接收结果
        String s = arrayToString(arr);
        //思路⑤ 输出结果
        System.out.println("S:"+ S);
    }
    //思路③、定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回
    /*两个明确:
    返回值类型:string
    参数:int[]arr
     */
    public static String arrayToString(int[]arr){
        //思路④、在方法中遍历数组,按照要求进行拼接
        String S = "";

        S += "[";

        for (int i=0;i<arr.length;i++){
            if (i==arr.length-1){
                S += arr[i];
            }else {
                S +=arr[i];
                S += ",";
            }
        }
        S += "]";
       return S;
    }

题3、字符串反转

需求:定义一个方法,实现字符串反转。键盘录入一个字符,调用该方法后,在控制台输出结果。例如:键盘录入abc,输出结果cba。

 public static void main(String[] args) {
        //思路①:键盘录入一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一个字符串:");
        String line = sc.nextLine();

        //思路④:调用方法,用一个变量接收结果
        String S = reverse(line);

        //思路⑤:输出结果
        System.out.println("s:"+ S);
     }
    //思路②:定义一个方法,实现字符串反转
    /*两个明确
    返回值类型:String
    参数:String s
     */
    public static String reverse(String s){
        //思路③:在方法中字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并返回
        String ss = "";
        for (int i=s.length()-1;i>0;i--){
            ss += s.charAt(i);
        }
        return ss;
    }

String Builder 概述

String Builder是一个可变的字符串类,我们可以把它看成是一个容器
这里的可变指的是String Builder对象中的内容是可变的

String 和 String Builder的区别:

  • String :内容是不可变的
  • String Builder:内容是可变的

String Builder的添加和反转方法

在这里插入图片描述部分示例:

 /* sb.append("hello");
        sb.append("word");
        sb.append("java");
        
        */
        //链式编程
        sb.append("hello").append("word").append("java")
        System.out.println("sb:"+sb);
        
        // public StringBuilder reverse():返回相反的字符序列
        sb.reverse();
        System.out.println("sb:"+sb);

题1、拼接字符串升级版

需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果,例如;数组为int[]arr = {1,2,3};执行方法的输出结果为:[1,2,3]

 public static void main(String[]args) {
   //思路①:定义一个int类型的数组,用静态初始化完成数组元素的初始化
        int[]arr = {1,2,3};

    //思路④、调用方法用一个变量接收结果
        String s = arrayToString(arr);
    //思路⑤ 输出结果
        System.out.println("S:"+ s);
}
    //思路②、定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回
    /*两个明确:
    返回值类型:string
    参数:int[]arr
     */
    public static String arrayToString(int[]arr){
//思路③、在方法中用StringBuilder按照要求进行拼接,并把结果转成String返回
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i=0;i<arr.length;i++){
            if (i==arr.length-1){
                sb.append(arr[i]);
            }else {
                sb.append(arr[i]).append(",");
            }

        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }

题2、字符串反转升级版

需求:定义一个方法,实现字符串反转。键盘录入一个字符,调用该方法后,在控制台输出结果。例如:键盘录入abc,输出结果cba。

 public static void main(String[] args) {
        //思路①:键盘录入一个字符串,用Scanner实现
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一个字符串:");
        String line = sc.nextLine();

        //思路④:调用方法,用一个变量接收结果
        String S = myReverse(line);

        //思路⑤:输出结果
        System.out.println("s:"+ S);
    }
    //思路②:定义一个方法,实现字符串反转
    /*两个明确
    返回值类型:String
    参数:String s
     */
    public static String myReverse(String s){
        //思路③:在方法中用StringBuilder实现字符串的反转,并把结果转成String返回
        //String---StringBuilder---reverse()---String
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        String ss =sb.toString();
        return ss;
    }

String和StringBuilder相互装换

1、String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder

2、StringBuilder转换为String
public String toString():通过toString()就可以实现把StringBuilder转换为String

Java【String】【StringBuilder】【StringBuffer】 用法 Java 中提供的 StringBuilder 和 StringBuffer 这两个类大部分功能是相同的,这两个类有自己的一些方法是 String 类没有的(互补关系),具体在这里不多赘述了,感兴趣的可以自己查一下在线文档。但刚刚说过,字符串是不可修改的,所以这种方式的拼接,并不是对str本身进行修改,而是又 new 了不止一个临时对象,所以这种方式的对字符串的拼接,效率十分低下。 阅读详情

相关推荐

全面解析:时延扩展与相干带宽、多普勒扩展与相干时间——无线通信基础

时延扩展与相干带宽 多径时延扩展与多径衰落 接收机所接收到的信号是通过不同的直射、反射、折射等路径到达接收机。由于电波通过各个路径的距离不同, 因而各条路径中发射波的到达时间不同,造成多径时延扩展。距离不同所以到达接收机的相位也不相同,不同相位的多个信号在接收端叠加, 如果同相叠加则会使信号幅度增强, 而反相叠加则会削弱信号幅度。 这样,接收信号的幅度将会发生急剧变化,就会产生多径衰落。 ...

king阿金 4万+

StringBuilder和String的区别及简单的使用

这几天在力扣刷了一些题 然后对stringBuilder的使用重新学习了一遍 这篇博客大致介绍一下string和stringbuilder的区别和使用 string s1 = "orange"; string s2 = "red"; s1 += s2; 大家都知道字符串对象是“不可变的”, 对字符串进行操作的方法实际上返回的是新的字符串对象。 在前面的示例中,将 s1 和 s2 的内容连接起来以...

weixin_44302602的博客 5315

01 AUTOSAR CP标准文档阅读指南

01 AUTOSAR CP标准文档阅读指南

汽车软件工程师 | 好奇博主 | 处女座 1134

四、String和StringBuilder的区别

string 对象时恒定不变的,stringBuider对象表示的字符串是可变的。

weixin_57242877的博客 1923

Lama:基于傅立叶卷积的分辨率鲁棒性大掩模修复

为了缓解修复网络和损失函数都缺乏有效的感受野这个问题,提出了大掩模修复(LaMa)。LaMa基于一种新的修复网络架构,该架构使用快速傅立叶卷积(FFC),具有图像范围的感受野;高感受野感知损失;大型训练掩码,释放前两个组件的潜力。

qq_44926214的博客 1417

用Matlab机器人工具箱搞定六轴机械臂建模:从DH参数到3D可视化(附完整代码)

本文详细介绍了如何使用Matlab机器人工具箱进行六轴机械臂建模,从DH参数输入到3D可视化全流程解析。通过正运动学验证、逆运动学求解和交互控制等实战技巧,帮助工程师快速掌握机械臂建模核心方法,并提供完整代码示例解决常见问题。

weixin_27372101的博客 394

07Java成神之路

1. API API (Application Programming Interface) :应用程序编程接口 在Java中API指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可 2. String类 String类代表字符串,Java程序中所有字符串文字都是String类的实例,String类在java.lang包下,使用时不需要导包。 String类的特点: 字符串是不可变的,也就是它们的值在创建后是不能

qq_37044138的博客 261

Docker篇——Docker常用命令大全!史上最全面的Docker命令,涵盖常规命令、镜像基本命令、容器基本命令以及常用其他命令,一篇文章速通!

本篇文章介绍的关于DOcker的命令非常全面,Docker常见的命令介绍完毕,涉及到的命令比较繁杂,希望大家可以收藏并坚持学习。后续还会持续更新相关技术点,敬请期待

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 5746

Stringbuilder和String的区别,一文弄清String、StringBuilder、StringBuffer

String、StringBuilder、StringBuffer对于初学者来说并不是很了解他们有什么区别,String和StringBuilder、strnigbuffer各有各的优点,希望这篇文章能够帮助初学者理解他们之间的优劣以及关系

getture的博客 1564

Android 13.0 app进程保活白名单功能实现

在13.0的系统rom产品开发中,在某些重要的app即使进入后台,产品需求要求也不想被系统杀掉进程,需要app长时间保活,就是app进程保活白名单功能的实现, 所以需要在系统杀进程的时候不杀掉白名单的进程,接下来就看怎么样来实现这些功能

安卓兼职framework和app工程师的博客 3142

情感分析在金融领域的应用:舆情影响股价预测

我们都知道,股价的波动受到多种因素的影响,而大众的情绪和看法就是其中很重要的一部分。我们在日常生活中都有根据别人的评价来判断事物好坏的经验,在金融市场里,舆情就像是大众对某家公司的集体评价,它能反映出市场参与者的情绪和预期。学习这方面的知识,能帮助投资者更好地把握市场动态,做出更明智的投资决策,无论是个人投资者还是金融机构的分析师,都能从中受益。有一天,你看到某家知名企业被曝光了严重的产品质量问题,新闻铺天盖地,股民们也都在热议纷纷,负面情绪弥漫。这时,你会不会觉得这家公司的股价可能要下跌了呢?

AI 原生应用开发的博客 1147

String、StringBuffer和StringBuilder

在java中String、StringBuffer和StringBuilder都可以对字符串进行操作,但各自具有不同的应用场景。 (1)String和StringBuffer String是不可变类,也就是说String一旦被创建,其值就不能够被修改,因此其在那些不需要修改的共享变量中比较适合;StringBuffer则是可以改变的。 String初始化方式有两种方式,分别是赋值(Strin...

LMR的博客 9248

高并发网络爬虫实践(欧赔、亚盘、大小指数数据爬取)

本文通过对一个实战化的高并发网络爬虫脚本进行深度模块化剖析,展示了如何构建一个兼具性能、健壮性和易用性的数据采集工具。核心设计思想总结模块化与单一职责: 每个函数都专注于解决一个特定问题,无论是网络请求、数据解析还是文件操作。并发与效率: 通过ThreadPoolExecutor实现了高效的并发抓取,极大缩短了总耗时。健壮性与容错: 强大的重试机制、细致的异常处理和线程安全的文件写入,保证了程序在复杂网络环境下的稳定运行。断点续传: 精心设计了进度记录与恢复机制,使得大规模抓取任务变得轻松可控。

猫敷雪 481

String和StringBuilder的区别

在 C# 中,string 和 StringBuilder 都用于表示字符串,但它们有一些关键的区别,主要体现在可变性、性能和用途等方面。

Dreamer0221的博客 828

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

String和StringBuffer及StringBuilder的区别

String和StringBuffer及StringBuilder的区别 1、String类的内容是不可改变的。能改变的只是其内存指向。 2、String对象不可修改指的是对象本身不可修改,而不是引用不可修改。 3、StringBuffer类的对象内容是可以修改的。 4、String可以直接通过赋值的方式实现对象实例化,而StringBuffer只能通过构造方法的方式对象实例化。 5、StringBuffer在处理字符串的时候,不会生成新的对象。从内存这个角度来说,StringBuffer要比String更

qq_57181249的博客 5813

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

String和Stringbuffer和Stringbuilder的区别

JAVA 中String和Stringbuffer和Stringbuilder的区别** java 中String和StringBuffer与StringBuilder的区别及使用方法 String 类  String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。 String a = “a”; //假设a指向地址0x0001 a = “b”;//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不

bxl1998720的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

String和StringBuffer和StringBuilder的区别

1:StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。 2: HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。 3: StringBuffer和StringBuilder类的区..

Java后端技术栈 1万+

String、StringBuilder 和 StringBuffer 详解

本篇文章主要描述了 String 、StringBuilder 和 StringBuffer 的主要特性,String、StringBuilder 和 StringBuffer 的底层构造是怎样的,StringBuilder 和 StringBuffer 的扩容特性等。

zrulin的博客 4423

String 、StringBuilder和StringBuffer

1 String 、StringBuilder和StringBuffer String StringBuilder StringBuffer 底层 final byte[] value; byte[] value; byte[] value; 线程安全 安全 不安全 安全 超类 Object(顶层类) AbstractStringBuilder(抽象类) AbstractStringBuilder(抽象类) 可变性 不可变 可变 可变 拼接效率 低 高 较高(相比于Str

qq_46329780的博客 226

c#中的string和StringBuilder的区别

string和StringBuilder的区别 解析c#中的string和StringBuilder的区别,只有非常了解后我们才能更好的编程和灵活使用。 区别 1、类 String 表示字符串, 比如“ abc ”。 类 StringBuilder 表示可改变大小的字符序列( sequence of characters ),多个字符组成字符序列,字符序列和字符串是同一个意思。二者的区别在于, String 类型的字符串是常量,字符串创建出来后不允许修改。而 StringBuilder 类型的字符串是可修改

opencv220的博客 3715

String和StringBuilder和StringBuffer

本文对比分析Java中String、StringBuilder和StringBuffer的特性与适用场景。String具有不可变性,线程安全但性能较差;StringBuilder线程不安全但性能最优,适合单线程拼接;StringBuffer线程安全但性能稍逊。源码层面,String在JDK9+改用byte[]存储以节省空间,字符串拼接通过编译器优化为StringBuilder操作。StringBuilder/StringBuffer基于可扩容char[]实现,后者通过synchronized保证线程安全。

NingMaoKing的博客 1024

StringBuilder和String区别

String和StringBuilder区别

guliudeng的博客 5153

String、StringBuffer和StringBuilder的区别

String、StringBuffer和StringBuilder 我们为什么要引入StringBuffer和StringBuilder? String的局限性: String不是基本数据类型,在创建的字符串属于对象,一种是new()创建对象,一种是创建String类对象的引用变量。 但是,String是被final修饰的,它的值是不可改变的,这导致每次对String字符串进行操作,都会生成新的String对象,然后再将指针指向新的String对象,这样不仅导致效率低下,还会浪费内存空间。 我们来看下St

qq_49180959的博客 441

十七、String 和 StringBuilder

java String

追梦的土豆的博客 927
上一篇: 【实用的微缩版 初级开发面试题】
下一篇: 集合基础/Arraylist
筱筱_2022_
博客等级 码龄4年 1粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值