Java当中的String数据类型

 我来答
户如乐9318
2022-10-17 · TA获得超过6639个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:137万
展开全部

  java中String数据类型

  对于字符串对象来说 虽然在参数传递的时候也是引用传递 但是java虚拟机在函数内部对字符串对象进行了特殊处理 视String对象为常量(final) 所以对传进来的引用地址所引用的string对象比能直接进行修改 而是产生一个副本对其进行操作 对其进行的操作不会影响原来的值

  下面我们看一例子(sun认证试题)来证明这一点

   public class X {

   public static void main (String[]args) {

   string s = new string ( Hello );

   modify(s);

   System out printIn(s);

   }

  

   public static void modify (String s) {

   s += world! ;

   }

   }

  你说它会打印出什么结果?是Helloworld?可能大部分人会说是这个答案吧 哈哈结果却是Hello 为什么呢?再仔细分析一下上边所说的吧 视String对象为常量(final) 这是问题的关键!在modify()方法中传进了string对象 虽然是引用传递 上边我们说了视String对象为常量(final) 它不会修改原来地址所引用的值 而是生成一个副本对其进行操作 所以打印结果应该为Hello!下面再讲一讲java中对常量(final)是怎样处理优化的 以便更深入的理解上面的问题

  java中的final变量 java编译器是进行了优化的 每个使用了final修饰的变量的地方都不会通过连接而进行访问 比如说Test类中使用了Data类中一个final的int数字fNumber= 这时候 java编译器会将 这个常数编译到Test类的指令码或者常量池中 这样 每次Test类用到fNumber的时候 不会通过引用连接到Data类中进行读取 而是直接使 用

  我们再来举个例子说明这一点

  public class TestFinal(){

  public static void main(string s[]){

  System out println(FinalData date);

  }

  public class FinalData(){

  public static final data= ;

  }

  }

  运行上面的TestFinal类结果为

lishixinzhi/Article/program/Java/hx/201311/26692

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式