第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么字符串類是Final的?

標(biāo)簽:
Java

安全和性能考虑(字符串常量池)是String类不可变的主要原因。

案例

  1. 字符串对象被缓存在字符串池中,缓存的字符串被多个客户端共享,这时如果字符串可变。那么某个客户端修改了字符串的值会影响到其它的客户端。字符串的缓存从性能原因来考虑,设计为不可变又是非常重要的。

像下面这样字符串one和two都用字面量"something"赋值。它们其实都指向同一个内存地址。

String one = "someString";String two = "someString";

720

字符串线程池

  1. 字符串在许多java的类中被广泛使用。在网络连接中,你可以传递主机名和端口号作为字符; 在数据库连接中,你可以传递数据库地址作为字符串; 在File I/O中,你可以通过字符串文件名来打开任何文件。

这种情况下,如果字符串不是不可变的,将会导致严重的安全问题。一些人可以访问任何文件,一旦他有了授权,他可以故意的修改文件名,或者无意的获取到另外一个文件的访问权限。

  1. 在多线程编程中,因为String是不可变的,你就无需考虑字符串的同步问题。不可变性让字符串变的线程安全。

注意:SubString导致的内存泄漏,虽然不是线程问题,但是也要注意

面试题

  1. String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他们之间  ==  较的结果.

        String a = "abc";
        String b = "abc";
        String c = new String("abc");
        String d = "ab" + c;

        System.out.println("a == b?" + (a == b));
        System.out.println("a == c?" + (a == c));
        System.out.println("a == d?" + (a == d));
        System.out.println("b == c?" + (b == c));
        System.out.println("b == d?" + (b == d));
        System.out.println("c == d?" + (c == d));// 输出结果a == b?truea == c?falsea == d?falseb == c?falseb == d?falsec == d?false

附录

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
1.1萬
獲贊與收藏
1545

關(guān)注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消