【JAVA_SE学习笔记】String、StringBuffer和StringBuilder

JAVA中String与StringBuffer的区别 自己的学习笔记总结 JAVA中String与StringBuffer的区别 JAVA中String与StringBuffer的区别 自己的学习笔记总结 立即下载

【JAVA_SE学习笔记】String、StringBuffer和StringBuilder

String

String类:代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现;字符串一旦被赋值,其值不能再改变

String类常用的构造方法:

  1.String():表示一个空字符序列
  2.public String(byte[] bytes,Charset ch):默认字符集(编码格式):GBK,如果是GBK格式,可以不写第二个参数
  3.public String(byte[] bytes,int index,int length):将部分字节数组构造成一个字符串
  4.public String(char[] value):将字符数组构造成一个字符串
  5.public String(char[] value,int index,int length):将部分的字符数组构造成一个字符串
  6.public String(String original):通过字符串常量构造一个字符串对象
  7.public String(StringBuffer buffer):字符缓冲区到字符
  
编码解码:
  编码:把能看懂的东西转换成一个看不懂的东西:String—–>byte[]:public byte[] getBytes(String charsetName)
  解码:把当前的byte[]转成能看懂的东西(String):byte[]—–>String :public String(byte[] bytes,CharsetName ch)
  
题目:

public class Demo1 {

    public static void main(String[] args) {
        String str1 = "hello";
        String str2 = "hello";
        String str3 = new String("hello");
        String str4 = new String("hello");

        System.out.println("str1==str2?"+(str1==str2));                 //true      
        System.out.println("str2==str3?"+(str2==str3));                 //false  
        System.out.println("str3==str4?"+(str3==str4));                 // false  
        System.out.println("str2.equals(str3)?"+(str2.equals(str3)));  // true
        System.out.println("str3.equals(str4)?"+(str3.equals(str4)));  //true
        /*
         String类已经重写了Object的equals方法,比较的是两个字符串的内容是否一致,如果一致
         则返回true,否则返回false
         */
    }
}

这里写图片描述

面试题:
  String s = “hello”和String s = new String(“hello”) 两个有什么区别?分别创建了几个对象?
  第一个创建了一个对象
  第二个s创建两个对象(堆内存中有new String(),然后字符串常量池中也有这样一个字符串常量(开辟空间的地址))
  
字符串的一个特点:一旦被赋值,其值不能被改变(不可变的字符序列)
String类型作为形式参数和基本数据类型的效果一样

public class Demo3 {
    public static void main(String[] args) {
        String s = "hello" ;    // String s = "abc" ;       
/*      s += "world" ;
        System.out.println("s:"+s);//s:helloworld   
*/      
        change(s) ;     
        //输出字符串变量
        System.out.println("s:"+s);//s:hello
    }
    public static void change(String s) {//String类型作为形式参数和基本数据类型的效果一样
        s += "javaweb" ;
    }
}

字符串变量相加:先开辟空间,在相加
字符串常量相加:首先在字符串常量池找,有没有当前这个常量值,有,就直接返回,没有,需要创建!

public class StringDemo2 {

    public static void main(String[] args) {
        String s1 = "hello";  
        String s2 = "world";
        String s3 = "helloworld";
        System.out.println(s3 == s1 + s2);// false
        //System.out.println(s3 == (new StringBuilder(String.valueOf(s1))).append(s2).toString());
//      s1+s2 ====>new String("helloworld")
        System.out.println(s3.equals((s1 + s2)));//true , 

        System.out.println(s3 == "hello" + "world");//true
        System.out.println(s3.equals("hello" + "world"));//true

        /**
         * 通过反编译工具查看第三个输出语句:
         * System.out.println(s3 == "helloworld");
            System.out.println(s3.equals("helloworld"));
         * */
    }
}
String类常用方法

获取方法:
  1. int length():获取字符串的长度
  2. char charAt(int index):返回的是索引处对应的字符
  
  3. int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引
  int indexOf(String str):返回指定子字符串在此字符串中第一次出现的索引
  int indexOf(int ch,int fromIndex):返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
  int indexOf(String str,int fromIndex):返回在此字符串中第一次出现指定字符串处的索引,从指定的索引开始搜索
  
  4. String substring(int start):从指定位置开始截取字符串,默认截取到末尾
  String substring(int start,int end):从指定位置开始截取到指定位置结束,包前(start索引)不包后(end索引)
举例: 

public class Demo3 {
    public static void main(String[] args) {
        char [] ch=new char[]{'世','界','和','平','和','平'};
        String s=new String(ch);
        System.out.println(s.length());//6
        System.out.println(s.charAt(2));//和
        System.out.println(s.indexOf("和平"));//2
        System.out.println(s.indexOf("和平", 3));//4
        System.out.println(s.substring(1,3));//界和

    }
}

判断方法:
  1. boolean endsWith(String str):是否以指定字符串结束
  2. boolean isEmpty():是否长度为0,即是否为空
  String s = “” ;空字符
  String s = ” ” ;字符串”空格”
  String s = null ;当前字符串对象为空
  3. boolean startsWith():是否以指定字符串开始
  4. boolean contains (Char Sequences):是否包含指定的序列
  5. boolean equals (Object anObject):判断的内容是否一致
  6. boolean equalsIgnoreCase(String anotherString):忽略大小写比较是否一致
  举例:

public class Demo4 {
    public static void main(String[] args) {
        String s="helloWorldJava";
        String s2="HELLOWORLDJAVA";
        System.out.println(s.endsWith("ava"));//true
        System.out.println(s.isEmpty());//false
        System.out.println(s.startsWith("Ja"));//false
        System.out.println(s.contains("World"));//true
        System.out.println(s.equals(s2));//false
        System.out.println(s.equalsIgnoreCase(s2));//true
    }
}

转换方法:
  1. char [ ] toCharArray():将字符串转换为字符数组
  2. getBytes();转换为字节数组
  3. String valueOf():将其他数据类型或对象转为String
  举例:

import java.util.Arrays;
public class Demo5 {
    public static void main(String[] args) {
        String s="今天是个学习的好天气";
        char [] ch=s.toCharArray();
        System.out.println(Arrays.toString(ch));//[今, 天, 是, 个, 学, 习, 的, 好, 天, 气]
        byte [] by=s.getBytes();
        System.out.println(Arrays.toString(by));//[-67, -15, -52, -20, -54, -57, -72, -10, -47, -89, -49, -80, -75, -60, -70, -61, -52, -20, -58, -8]
        System.out.println(String.valueOf(ch));//今天是个学习的好天气
    }
}

其他方法:
  1. public String replace(char oldChar,char newChar):将字符串中某一个字符用新的字符替换
  public String replace(String oldStr,String newStr):将字符串中某一个子字符串用新的字符串去替代
  2. public String split(String regex):切割
  3. public String trim():去除字符串两端空格
  4. public int compareTo(String anotherString) 是Comparable接口中的方法(该接口可以实现一个自然排序)
  如果两个字符串比较前边都一样则返回两字符串长度的差值,否则则返回第一个两个不同字符的差值
  5. public String toUpperCase():转大写
  6. public String toLowerCase():转小写
  7. public String concat(String str):字符串拼接
  举例: 

public class Demo6 {
    public static void main(String[] args) {
        String s="This is great";
        String s2="     nihao    ";
        String s3="This is";
        String s4="Tgis is";
        System.out.println(s.replaceAll("great", "bad"));//This is bad
        System.out.println(s.toLowerCase());//this is great
        System.out.println(s.toUpperCase());//THIS IS GREAT
        System.out.println(s2.trim());//nihao
        System.out.println(s.compareTo(s3));//6  都相同返回字符串的差值
        System.out.println(s.compareTo(s4));//1  不相同则返回第一个两不相同字符的差值
        System.out.println(s.concat(s3));//This is greatThis is
    }
}

StringBuffer

字符串内容一旦创建,则不允许改变,如果一但改变就会创建一个新的字符串对象,如需改动字符串内容:可以使用字符串缓冲区
字符串缓冲区:存储字符串的集合容器
面试题: StringBuffer和String 的区别?
  StringBuffer会构造一个字符串缓冲区,从内存角度考虑,一般情况使用StringBuffer比较多(在单线程程序中使用StringBulider替代,StringBuffer:线程不安全,单线程单纯为了提供执行效率!)
  String:普通的一个字符串,从内存角度考虑,耗费空间!

StringBuffer的构造方法:

  1. public StringBuffer ()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
  2. public StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区
  3. public StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度
  面试题:使用StringBuffer无参的构造方法默认的初始化容量是多少?当容量不够用时自动增加多少?
  StringBuffer的底层是维护了一个字符数组,存储字符的时候实际上是往该字符数组中存储,而字符数组的初始容量是16,当容量不够时,自动增加一倍。
  举例:

public class Demo1 {
    public static void main(String[] args) {
        StringBuffer sb1=new StringBuffer();
        System.out.println("sb.length:"+sb1.length());//0  获取字符串长度
        System.out.println("sb.capacity:"+sb1.capacity());//16 获取字符缓冲区容量

        StringBuffer sb2=new StringBuffer("hello");
        System.out.println("sb.length:"+sb2.length());//5
        System.out.println("sb.capacity:"+sb2.capacity());//21  默认为初始容量16+当前字符串长度

        StringBuffer sb3=new StringBuffer(32);
        System.out.println("sb.length:"+sb3.length());//0
        System.out.println("sb.capacity:"+sb3.capacity());//32
    }
}
StringBuffer常用的方法:

  增:
  1. StringBuffer(“jack”)在创建对象时赋值
  2. public StringBuffer append(int/String/char/boolean/double/float….)在缓冲区的尾部增加新的文本对象,可以追加各种数据
  3. public StringBuffer insert(int offset,String str)在指定下标位置增加新的文本对象
  举例:

public class Demo2 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer("hello");
        System.out.println(sb.append("world"));//helloworld
        System.out.println(sb.append(true));//helloworldtrue  各种数据都可追加
        System.out.println(sb.insert(3,"JAVA"));//helJAVAloworldtrue
    }
}

  删:
  1. public StringBuffer delete(int start,int end)删除从指定位置开始到指定位置结束的字符,返回的是字符串缓冲区本身
  start开始,end-1结束
  2. public StringBuffer deleteCharAt(int index)删除指定位置处的字符,返回的是字符串缓冲区本身
  举例:

public class Demo3 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer("helloJAVA");
        System.out.println(sb.delete(2, 5));//heJAVA
        System.out.println(sb.deleteCharAt(4));//heJAA
    }
}

  查:
  1. public String toString(StringBuffer sb)返回这个容器的字符串
  2. indexOf(String str)返回第一次出现的指定字符串在该字符串中的索引
  3. lastIndexOf(String str)返回最后一次出现指定字符串的索引
  举例:

public class Demo4 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer("helloJAVAworldJAVA");
        System.out.println(sb.toString());//helloJAVAworldJAVA
        System.out.println(sb.indexOf("JAVA"));//5
        System.out.println(sb.lastIndexOf("JAVA"));//14
    }
}

  改:
  1. public String substring(int start):从指定位置默认截取到末尾,返回值是一个新的字符串
  public String substring(int start,int end):从指定位置开始截取到指定位置结束,包前不包后,返回一个新的字符串
  2. public StringBuffer replace(int start, int end,String str)从指定位置开始到指定位置结束的字符用str子字符串去替代
  3. setCharAt(int index,char ch)指定索引位置替换一个字符
  举例:

public class Demo5 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer("helloworld");
        System.out.println(sb.replace(5, sb.length(), "java"));//hellojava

        sb.setCharAt(5, '$');//返回值是void
        System.out.println(sb);//hello$ava
        System.out.println(sb.substring(0,5));//hello
    }
}

面试题: StringBuffer和数组的区别?
  共同特点:都属于容器类型的变量
  不同点:数组:只能存储同一种数据类型的元素,数组的长度是固定的
      StringBuffer:字符串缓冲区,可以存储任意类型的元素,可以不断的去给缓冲区中追加(append),字符串缓冲区中:在内存始终返回的字符串
练习:

public class StringBufferTest3 {

    public static void main(String[] args) {

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收
        System.out.println("请您输入一个字符串:");
        String str = sc.nextLine() ;

        //方式1:使用String类型进行拼接
        String result = myReverse(str) ;
        System.out.println("result:"+result);
        //方式2:使用StringBuffer的reverse()功能
        String result2 = myReverse2(str) ;
        System.out.println("result2:"+result2);
    }

    //StringBuffer的reverse()方法实现
    public static String myReverse2(String s){
        //创建字符串缓冲区对象h
        /*StringBuffer sb = new StringBuffer(s) ;
        //开始调用反转功能
        sb.reverse() ;
        //返回
        return sb.toString() ;*/

        //一步完成:
        return new StringBuffer(s).reverse().toString() ;
    }


    //String类型的方式进行反转
    public static String myReverse(String s){
        //定义空串
        String result = "" ;

        //可以字符组其转成字符数组
        char[] chs = s.toCharArray() ;

        //倒着遍历
        for(int x = chs.length-1 ; x >=0 ; x --){
            //空串进行拼接
            result += chs[x] ;
        }

        return result ;
    }
}
StringBuilder

StringBuilder与StringBuffer的方法是一样的
笔试题目: StringBuilder与StringBuffer的区别?
   相同点:都是字符串缓冲区,底层都是维护一个字符数组用于存储数据
   不同点:1.StringBuffer是线程安全的,操作效率低;StringBuilder是线程非安全的,操作效率高
       线程不安全:多线程中多人操作同一代码,可能执行会出现错误
       线程不安全:线程安全的代码在一个时间段内只能由一个线程去操作代码
   2.StringBuffer是jdk1.0出现的
    StringBuilder是jdk1.5出现的

一文搞懂 RC Correlation Scale Factor 的生成与应用 pre-route 用的是统计估算模型,post-route 用的是详细布线提取,signoff 用的是第三方 QRC 或 StarRC——三个工具,三套参数体系,结果自然天差地别。不同 RC corner(rc_worst/rc_best/rc_typical)对应不同的工艺角和温度环境,每个 corner 的 R/C 偏差比例不同,必须分别生成和应用各自的 scale factor。别被名字骗了,这个工具专门干一件事——统计拟合两组 SPEF 之间的偏差,自动推荐最优 scaling factor。 阅读详情

相关推荐

深入解析Pytest 底层源码

Pytest 的底层架构是一个基于 pluggy钩子机制的微内核架构。其核心流程是一个固定的链条,链条上的每个环节都通过钩子向外暴露,允许插件介入。这种设计使得 Pytest 极其灵活和强大。启动: 解析配置,加载所有插件(包括核心插件)。收集: 遍历文件系统,发现测试用例,并生成Item对象。执行: 对每个Item,依次执行setup->call->teardown协议。报告: 在整个过程中,通过不同的钩子收集信息,最终生成报告。

monk all the way 619

java eclipse中string_java学习第二十四天:使用eclipse,字符串构造方法,StringBuffer,StringBuilder...

一.使用eclipse的好处ctrl+/内部补全不需要你在使用javac工具编译精准报错,自动修复。(ctrl+1)二 如何导入工程。三 object类1.查看源代码的方式:方式一:按住ctrl键,单击所要查看的源代码。方式二:把光标移动到你需要查看代码地下按下F3。为什么我们要查看源代码:1..1查看源代码可以了解别人是如何写出这个技术的,让我们了解的更加深入。1.2 吸收大牛的思想。2.jav...

weixin_39534780的博客 697

微信h5 支付,已经获得weixin://wap/pay?prepayid,但是无法调起微信客户端支付

结果几个接口,最终获得到到一直包含调起微信客户端的支付链接 但是直接打开这个页面,却不能调起微信客户端支付,原因是,在打开新页面的时候,需要设置a.rel = "noreferrer"; <body> <a href="javascript:void(0)" onclick="openNewWindowNoreferrer(this)">点击支付</a&...

qq_31683775的博客 4万+

eclipse小tips之:快速使用stringbuilder

stringbuilder比直接用 “+”的好处在哪,就不多说了;但如果之前用了+号的话,如果 要改成用stringbuilder的话,则可以用如下的方法实现: 比如有: String foo = "This" + "is" + "Sparta"; 1 鼠标点住要变为stringbuilder的 字符串,这里就是点foo了,然后按“CTRL+1(数字1)” 2 然后在弹出的菜...

jackyrongvip的专栏 297

手把手教你配置UEFI Secure Boot:从密钥生成到系统验证(附避坑指南)

本文详细介绍了如何配置UEFI Secure Boot,从密钥生成到系统验证的全过程,包括PK、KEK等关键密钥的生成方法,以及常见问题的解决方案。通过实战案例和避坑指南,帮助用户有效提升系统启动安全性,防止恶意软件植入。

weixin_30776273的博客 341

Wireshark教程:解密HTTPS流量

Wireshark教程:如何解密HTTPS流量

nuan444979的博客 1万+

【Java】String、StringBuilder、StringBuffer的介绍和区分

介绍StringBuilder、StringBuffer的常用方法和String、StringBuilder、StringBuffer三者的区别。

trong_ 的烂笔头 1205

大数据运营可视化:Tableau+PowerBI数据看板搭建教程

当企业数据量从“GB级”跃升到“TB级”,运营人员面临的最大挑战不再是“如何收集数据”,而是“如何让数据说话”。数据看板作为“运营指挥中心的仪表盘”,能将零散的用户行为、业务指标、流量趋势浓缩成可快速解读的视觉语言。本文结合Tableau(自由探索的“数据瑞士军刀”)与PowerBI(微软生态的“组合家具”)两大工具,从需求分析→数据准备→指标设计→视图搭建→ dashboard 组合,一步步教你搭建符合业务逻辑的运营看板。

AI智能探索者的博客 1364

【Java SE】 String、StringBuffer和StringBuilder

本期内容主要讲解String类的不可变性,介绍查看反编码的具体步骤,和StrignBuffer和StringBuilder的区别与用法。

爱编程爱运动的博客 4690

硬件工程师笔试面试高频考点汇总——(2025版)

《硬件工程师笔试面试知识汇总》一文系统梳理了硬件领域的核心知识体系,涵盖电子器件、模拟电路、数字电路等模块。文章详细解析了电阻、电容、电感等基础元件的选型与应用,深入探讨了三极管、MOS管等半导体器件的工作原理,并对比分析了DCDC与LDO等电源方案。在电路设计方面,提供了滤波器、放大器等实用电路的设计方法与仿真案例,同时包含UART、I2C等通信协议的实现要点。文章还整合了戴维宁定理等电路分析理论,并附有美团、联想等名企真题解析。通过器件特性、电路设计、企业真题三维度内容,为硬件工程师构建了完整的知识框架

XU157303764的博客 1万+

goahead(嵌入式Web服务器)之openssl 应用篇

1、环境配置 在me.h文件里修改以下宏定义 ME_COM_MBEDTLS 0 ME_COM_MATRIXSSL 0 ME_COM_NANOSSL 0 ME_COM_OPENSSL 1 2、添加 goahead-openssl.c goahead-openssl.c这个文件在有些goahead源码中是没有的,后面的章节中会提供openssl应用测例 3、依赖的库 goahead的openssl 应用需要依赖libssl.a与libcrypto.a(libssl.so与libcrypto.so)两个库,做好

weixin_40732273的博客 2089

Java中String,StringBuilder和StringBuffer的区别

可以证明,字符串操作是计算机程序设计中最常见的行为。       Java对象的引用,用来操纵内存元素。例如:String s;//创建一个String类型的引用对象的引用与对象关联——初始化,例如:s = "abc";//Java语言特性,String可以用带引号的文本初始化。

huaye502的专栏 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java中的String、StringBuffer和StringBuilder

String、StringBuffer 和 StringBuilder 都是处理字符串的类型,但是它们之间有很大的不同。String 是不可变的,而 StringBuffer 和 StringBuilder 是可变的。StringBuffer 和 StringBuilder 类似,但是 StringBuffer 是线程安全的,而 StringBuilder 不是。如果你需要对字符串进行频繁的修改操作,并且在多线程环境中使用,那么就应该使用 StringBuffer;

青山师 1420

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【Java SE】StringBuffer、StringBuilder详解

在String类中,每个字符串对象都是常量。当创建一个字符串对象,之后对其内容进行"增删改"时,实际上原来的字符串对象已经丢弃了。JVM在底层会重新创建一个字符串对象,并令其指向新的数据空间所以,问题就来了:如果多次进行"增删改"的操作,会导致大量副本字符串对象遗留在内存中,降低效率。应该如何解决这个问题呢?这便引出了类类,指可变字符序列,用于构造字符串对象。其内部使用自动扩容的数组来存放字符串数据。类属于java.lang包下,其继承关系图如下:可以看到,类并没有像。

m0_55908255的博客 980

计算机控制技术及应用

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

String, StringBuilder,StringBuffer的区别和功能

本文将来简单讲解一下String ,StringBuffer和StringBuffer这三者之间的区别,功能以及联系

2503_91154453的博客 595

String、StringBuffer 、StringBuilder 方法大全

详细列举了StringBuilder,StringBuffer,String的方法,以及他们之间的区别。

2201_75445857的博客 1071

探秘Java中String、StringBuilder以及StringBuffer(万字长文)

相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。

YonminMa的博客 1080

String、StringBuffer、StringBuilder三者的异同

结论 String:不可变的字符序列;效率最低;底层使用char[]存储StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储 String String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 Str...

m0_58052874的博客 1129

String、StringBuilder 和 StringBuffer 的详解

String、StringBuilder 和 StringBuffer 的详解String 类深入理解 StringStringBuilder 类 和 StringBuffer 类总结 String 类 字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。 需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。 String类是final类,

廷赫斯的博客 306

String、StringBuffer、StringBuilder

【前言】 本篇博客将为大家介绍一下String、StringBuffer与StringBuilder的应用和它们之间的区别。 【内容】 1、String、StringBuffer与StringBuilder类关系 CharSequence 是java.lang包下的一个接口,此接口对多种不同的char访问的统一接口,像String、StringBuffer、StringBuilder类都是CharSequence的子接口; CharSequence类和Stri...

冯瑞姣 652

探秘Java中的String、StringBuilder以及StringBuffer

在String类中,intern方法是一个本地方法,在JAVA SE6之前,intern方法会在运行时常量池中查找是否存在内容相同的字符串,如果存在则返回指向该字符串的引用,如果不存在,则会将该字符串入池,并返回一个指向该字符串的引用。这里面虽然将b用final修饰了,但是由于其赋值是通过方法调用返回的,那么它的值只能在运行期间确定,因此a和c指向的不是同一个对象。1)的效率比2)的效率要高,1)中的"love"+"java"在编译期间会被优化成"lovejava",而2)中的不会被优化。

耕耘——从菜鸟到高手的蜕变 246

String、StringBuffer和StringBuilder的区别

String、StringBuffer和StringBuilder的区别

m0_46084322的博客 535

【JAVA SE】第十章 String类、StringBuffer类和StringBuilder类

【JAVA SE】第十章 String类、StringBuffer类和StringBuilder类

2022年毕业的萌新程序猿,输出一下自己的学习内容~ 392

java SE String类及StringBuilder/StringBuffer类

要点提示:String对象是不可改变的。字符串一旦创建,内容不能再改变。 通过学习字符串,我们知道字符串可以通过charAt(index)方法从字符串中得到某个指定位置的字符。length()方法返回字符串的大小,substring方法返回字符串中的子串,indexof 和lastIndexOf方法返回第一个或者最后一个匹配的字符或者子字符串。 Sting类中有13个构造方法以及40多个处理字符串...

yanllele的博客 275
上一篇: 【JAVA_SE学习笔记】Scanner类
下一篇: 【JAVA_SE】作业练习1029
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值