java 数组和字符串

wo-05 10-10 dfeixtay original

[size=large]java中的数组和字符串[/size]

早有耳闻说java中的字符串String类都是常量,结合在程序中遇到的数据引用的问题,今天把数组和字符串的声明存储引用等来龙去脉摸了一下。暂且记下。
首先是存储的不同,在java中,有栈存储和堆存储之分。基本类型变量和引用型变量的声明等是放在栈存储中的,这样一旦超出变量所在的作用域,即释放;而堆存储有些像之前分析类的static成员变量是提到的类的命名空间,重点是它是有[color=red][size=large]new运算[/size][/color]创建的对象和数组。
下面是引用型变量的定义,即使在栈内存中的变量,使其指向堆内存的首地址,则栈中的变量就成为了引用性变量。

值得一提有两点:一是,在new后,数组的每个元素都将获得默认值,以归零 or false为主;二是数组和对象是在堆内存中分配,在栈内存的引用型变量引用,故引用型变量超过作用域后释放,但是只要还有其他引用型指向该数组或对象,数组对象不释放,直到没有变量指向它为止,成为垃圾。这也就是程序中写的某些数组,在应用中总是释放不掉的原因。嗯嗯!


另外,java的二维或多维数组可以是不相同的长度,不必是n*m的。将高维变量看做是引用型变量指向低维的数组或对象即可解释。


关于字符串。
java字符串常量 和 字符串变量都是用 类 来实现的,也就是说,标准的能够反映其结构的声明都是要用new来创建的。如:
String xx;
xx = new String("字符串");
而我们通常简化写,
String xx = "字符串";

则知,
java中字符串是基于对象的引用型变量。

之前看过关于字符串常量的操作符“+”的讨论,由于String类是常量,创建即不可改变,在加操作中实质是创建了一个新的对象,指向它,在量大的情况下必然会影响其效率。

使用字符串变量,在代价明显的情况下,应使用StringBuilder类,或是StringBuffer类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值