String的坑
2018-12-24 09:09:29来源:博客园 阅读 ()
想必大家在熟悉不过了,不错今天就遇到了这个万年坑,哪怕喜欢翻源码的人,也不屑一顾翻它的源码,良言相劝最好翻下源码。
1. String为啥被定义为final ?
2. String是线程安全的么 ?
3. String的设计思想是什么 ?
4. 偏移量是什么 ?
在不看下面解释的时候自己想想,是不是真的了解,每天都能遇见的String这个对象 ???
先说String是线程安全的么?
答:是线程安全的,都定义final(不可变)了,这都不安全什么才算安全,必须要看到 synchronized ?
再说String为啥被定义为final?
答:因为这样有助于共享,提高性能,可以将字符串对象保存在字符串常量池中以供与字面值相同字符串对象共享。如果String对象是可变的,那就不能这样共享,因为一旦对某一个String类型变量引用的对象值改变,将同时改变一起共享字符串对象的其他 String类型变量所引用的对象的值。String本质是个char数组. final修饰的字段创建以后就不可改变,String设成final禁止继承,避免被其它类继承后破坏。
/** The value is used for character storage. */ private final char value[];
String的设计思想是什么?
答:java程序语言的许多特性依赖于不可变的String对象,若String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能
偏移量是什么?
答:就是在数组中(int[] ary={1,2,3})。变量名(ary)保存的是数组的首地址,数组实际的内存是一块连续的内存区域。所以ary[i]就是相对数组首地址的便宜量,即就是根据首地址和偏移量([i])就可以知道偏移后的地址,这也是为什么在java中你可以用ary[i]访问元素的根本原因。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- java里面main方法中的String[]args 2020-06-07
- String 也能做性能优化,我只能说牛逼! 2020-06-03
- java.lang.String 的 + 号操作到底做了什么? 2020-05-22
- 我说我精通字符串,面试官竟然问我Java中的String有没有长度 2020-05-20
- Java String和Date的转换 2020-05-19
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash