string 操作 java_Java中String类的一些常见问题

String类在java.lang包中,Java使用String类创建一个字符串变量,字符串变量属于对象。

String类为什么是final的

确保不在子类中改变语义,final意味着不允许定义String子类,String对象只读,可以共享(指字符串常量池共享)

2)效率上,JVM不用在虚函数表中查询,直接定位String类方法,提高效率,共享带来的效率更高,保证java.lang.String。

String, StringBuilder, StringBuffer区别

String字符串常量,StringBuffer字符串变量(线程安全),StringBuilder字符串变量(非线程安全),String和StringBuffer主要区别,String是不可变对象,对String对象改变相当于新生成String对象,而StringBuffer是对原对象操作,频繁改变时StringBuffer效率高,StringBuffer与StringBuilder兼容,但不保证同步(synchronized关键字修饰保证同步,所以StringBuffer的线程安全也是有一定性能开销的)。

String类的编码

GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。

UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8 节省空间。另外,如果是外国人访问你的GBK网页,需要下载中文语言包支持。访问UTF-8编码的网页则不出现这问题。可以直接访问。

GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。

经常有人问网页编写UTF-8和GBK哪个编码好,根据个人需要,如果你主要做中文程序的开发,客户也主要是中国人的话就用GBK吧,因为UTF-8编码的中文使用了三个字节,用GBK节省了空间。

如果做英文网站开发,还是用utf-8吧,因为utf-8中英文只占一个字节。 GBK中英文也是两个字节的,并且国外客户访问GBK要下载语言包。

如果你的网站是中文的,但国外用户也不少,最好也用UTF-8的吧。

String a=”abc”,String b=”abc”,String c=”ab”+”c”,String d = new String(“abc”)用==比较结果

==比较的是对象地址值,equals比较的是对象值,以上a,b,c用==比较返回true,与d比较返回false。要注意绝大多数类重写了equals方法,未重写时比较的是对象地址值。以上由于内存中存在常量池,属于方法区(JDK8后移动到了堆区)中的一部分,创建一个对象后,第二次直接使用,使用new String(“abc”)时,”abc”在常量池中,d所在地址为堆中地址所以返回false。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值