zoukankan      html  css  js  c++  java
  • java中关于String对象的解析

    java中的字符串是我们经常使用的,对于其创建的字符串对象往往很让人疑惑,下面做几点关键性说明:

      1. 首先我们要明确String final类,即创建的对象为最终态,即不能被修改。所以说String是一个常量,一旦创建,其值是不能被改变的。然后java中有一个字符串缓冲池(String pool)。当使用“+”拼接时会产生一个新的String对象,而不是向原有的对象追加内容。

      2. 创建字符串的两种方法(本人自己的叫法):

          1)字面赋值的方式: 如 String s = "aa";这样也是创建了一个对象。

          2)常规对象创建方式: 如 String s = new String("aa");

      3.java中有一个字符串缓冲池(String pool),位于栈中

          1)当通过字面赋值的方式创建String对象 s 时,会检查字符串缓冲池中是否有"aa"对像存在,如果有,则不创建新的对象,而是将已经存在的"aa"的对象的引用指向s。如果没有,则创建一个新的内容为"aa"的对象,并将其引用指向s。

          2)当通过常规对象创建方式创建对象s时,首先也会检查String pool中是否有"aa"对象存在,如果有,这直接在堆中再创建一个内容为"aa"的对象,并将其引用指向s,即 String s = new String("aa");只创建了一个对象,但实际是有两个内容为"aa"的对象。如果String pool中没有该对象"aa",那么会先在String pool中创建一个对象,并且之后会再次在堆(heap)中创建一个内容相同的对象并将其引用赋给s,即创建了两个引用不同的对象。所以,这种方式可能会创建一个或两个对象,但最终是存在两个内容相同引用不同的对象。

    坚持到底,学无止境javascript:__doPostBackjavascript:__doPostBack('rpSignature$ctl01$LinkButton1','')
  • 相关阅读:
    Java8部分新特性的学习
    SurfaceView的基本使用
    Android Apk的反编译和加密
    Notification的基本用法以及使用RemoteView实现自定义布局
    Anroid事件分发
    Xmpp学习之Asmack取经-asmack入门(一)
    android通过DialogFragment实现时间选择
    使用官方Android-support-v7在低版本上使用ActionBarActivity
    五一后总结
    Android在有存储卡和无存储卡情况下拍照后固定尺寸和压缩大小
  • 原文地址:https://www.cnblogs.com/chenliang901114/p/3290560.html
Copyright © 2011-2022 走看看