详述如何创建String对象

  • 字符串创建对象的方式有两种:一种是直接赋值,一种是用new关键字构造方法
package com.baidu.cn;

public class Test {
	public static void main(String[] args) {
	    int a=12;
		Object obj2=new Object();
		

 

  • 首先,我们先引入==的关系运算符:如果在基本数据类型中,由于变量与值同在栈中,所以比较的是值是否相等;
  • 如果在引用类型中,因为变量存的是对象的地址,所以这时==比较地址是否相等;

  • 字符串创建对象的两种方式是有一定区别的:

a、直接赋值:对象存入常量池中;当JVM创建字符串对象前会先去常量池中找有没有一个字符串内容与当前字符串相同,有:将已有的地址赋值给变量;无,创建新的对象

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

String name="tom";
String name2="tom";
System.out.println(name==name2);
String name3="Tom";
System.out.println(name==name3);
String address=new String("河南郑州市高新区");
String address2=new String("河南郑州市高新区");	
System.out.println(name==address);
System.out.println(address2==address);

此时执行上述代码,可以得出代码的执行结果为


我们在形象地描述堆和栈,以及变量池时,可以有如下示意图,帮助我们更好理解

栈是先进后出;堆比栈大,是先进先出,常量池在堆中。

  • 引入StringBuffer

为什么要引出stringbuffer的概念

String names="1";
for (int i = 0; i < 50; i++) {
names=names+"om";
}

在上述代码中,每执行一次for循环,则就创建一个新的对象,此时java的内存区为其不断开辟空间,每次循环都新建的对象太占空间还没有效率

什么是stringbuffer及其用法

public static void main(String[] args) {
			StringBuffer names = new StringBuffer("T");
			for (int i = 0; i < 50; i++) {
			names.append("om");
			}

此时自始自终都只有一个stringbuffer对象

stringbuffer的其他常见用法

names = new StringBuffer("ABCDEFG");
			System.out.println(names.reverse());

上面插入的代码块中代码的作用就是将stringbuffer的对象倒序输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值