zoukankan      html  css  js  c++  java
  • Java中String数据类型

      广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,本月基础强化营火热报名中,欢迎有志之士电话或者咨询。

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

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

      1. public class X {

      2. public static void main (String[]args) {

      3. string s = new string (“Hello”);

      4. modify(s);

      5. System.out.printIn(s);

      6. }

      7.

      8. public static void modify (String s) {

      9. s += “world!”;

      10. }

      11. }

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

      java中的final变量,java编译器是进行了优化的。每个使用了final修饰的变量的地方都不会通过连接而进行访问。比如说Test类中使用了Data类中一个final的int数字fNumber=77,这时候,java编译器会将77这个常数编译到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=8;

      }

      }

      运行上面的TestFinal类结果为:8

      但是你把FinalData类中的data=88,编译后再运行TestFinal类结果还是8,这是因为编译器把data的副本保存TestFinal类中,所以在重新编译TestFinal类之前,TestFinal类一直把data认为是8而不是88,是不是证明了上面所讲述的每个使用了final修饰的变量的地方都不会通过连接而进行访问!结合这个例子,再深入的想一想第一个问题是不是就理解的更加清晰了

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。技术知识沉淀深厚的老师,让你感受Java的魅力,激发你对于编程的热爱,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,成为真正的技术高手;通过大量全真企业项目疯狂训练,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!时间不等人,赶紧联系我们吧!疯狂java培训中心地址:广州天河区车陂沣宏大厦3楼。

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。疯狂软件开设了java课程,ios课程,android课程,为你提供一个学习java技能的好机会,疯狂软件特大优惠活动,加疯狂软件微信号(疯狂软件),抢优惠,优惠100元+赠送iOS教材一本 详情请看疯狂java培训官网。IT从业着仍是社会所需要的高端人才,广州疯狂软件之力于培养企业所需要的中高端IT人才,让你成为备受企业青睐的人才。

  • 相关阅读:
    多维数组,转化为一维数组多种解决方案
    word-wrap与word-break的区别,以及无效情况
    重温前端基础之-js排序算法
    重温前端基础之-css浮动之怪异现象
    重温前端基础之-css浮动与清除浮动
    重温前端基础之-css盒模型
    C# 应用
    C# 应用
    C# 应用
    C# 应用
  • 原文地址:https://www.cnblogs.com/gojava/p/3462550.html
Copyright © 2011-2022 走看看