详述如何创建String对象

本文详细讲解了在Java中如何创建String对象,包括直接赋值和使用new构造方法,强调了常量池的概念。同时介绍了使用StringBuffer的原因和优势,以及其常用方法,如append、length和reverse,帮助优化内存使用。
摘要由CSDN通过智能技术生成

在讲如何创建String对象前,先讲解一下==。与C语言中一样,==是关系运算符,用来判断值是否相等

(1)、如果在基本数据类型中,由于变量与值同在栈中,所以比较的是值是否相同

(2)、如果为引用类型,因为变量中存的是对象的地址,所以==比较的是地址是否相同

用图来解释会更加清晰易懂 

 

 如何创建String对象

字符串创建对象方式有两种:

1、直接赋值:    String name1 = "Tom"

对象存入常量池中;当JVM创建字符串对象前会先去常量池中找有没有一个字符串内容与当前字符串相同,

有:将已有的地址赋值给变量;无:创建新的对象

(补:常量池存在于堆中)

2、new构造方法 String address1 = new String("河南郑州高新区");

直接存入堆内存;每new一次就会创建一个新的对象

public class Test {
    public static void main(String[] args) {
        String name1 = "Tom";
        String name2 = "Tom";
        String name3 = "Tim";
        System.out.println(name1==name2);
        System.err.println(name1==name3);//err结果是红色
    	
        String address1 = new String("河南郑州高新区");
        String address2 = new String("河南郑州高新区");
        System.out.println(address1==address2);
    }
}

运行结果及分析:

(需要注意:当输出address1时,即System.out.println(address1);时结果并不是地址,这是需要考虑到底层代码,后续会讲到)

StringBuffer讲解

1、为什么会用到StringBuffer

首先先了解一下新建对象的内存问题    

        String name = "Tom";//内存中有一个String类型对象
        String name = "T"+"om";//+字符串连接符,"Tom"      内存中有一个String类型对象

        String name = new String(“Tom”);等同于下面两行
        String a = "Tom";
        String name = new String(a);//内存中有两个:常量池中一个,堆中一个

然后看一段代码

String names = "a";
for (int i = 0; i < 50; i++) {//每执行一次就会创建一个新的对象
	names = names+"i";
}

这样的话,没执行一次就会创建一个新的对象总共会创建50个对象,但是大部分对象是没有实质意义的,还会占用很多的内存,这样对内存极其不好,所以为了解决这个问题,就有了StringBuffer

2、怎么用StringBuffer

看下列代码

StringBuffer names = new StringBuffer("1");
	for (int i = 0; i < 50; i++) {//自始至终只有一个StringBuffer对象
	names.append("om");
}

这样就大大节省了内存

3、StringBuffer常用方法

(1)、上面用到的StringBuffer  append(各类型参数)    作用是将将参数的数据加入到缓冲区的末尾

(2)、int length( )      作用确定 StringBuffer 对象的长度

(3)、StringBuffer reverse()       作用是反转 StringBuffer 对象中的字符串

附:(以下内容会在后续讲到)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值