Java传值还是传引用

Ref: http://ivan-pig.iteye.com/blog/422891
一.预备知识 
     在Thinking in Java的第二章里,提到了Java将
对象存放到了哪里。这里主要看栈和堆。 
     看下面几行代
码的区别。 
Java代码 
  1. int i = 1;  
    String str = new String("Hello");  
     从第二行代码里又可以引申如一个经典的面试题,这里创建了几个String对象。这里不做讨论。 
     大家都知道左
边的是引用,指向了右边的实际的值。但是在Java里面这两段有区别吗?看图。 
图上可以看出,栈里的每个值又可以看成是一个个的键值对。 
    对于 
Java代码 
  1. int i = 1;  
    来 说,键就是变量 i,而 值就是 1。 
    而
对于  
Java代码 
  1. String str = new String("Hello");  
    来 说,键是变量 str,而 值是 new String("Hello");在堆里的地址。(在Java中所有new出来的 东东都在堆里面)  
     二.
传值还是传引用?  
     好,知道了上面的区
别,对于传值和传引用的理解就很有帮助了。  
     看下面的代
码。  
Java代码
  1. public class Change {  
        public void change(int i){  
            i = 2;  
        }  
        public void change(String str){  
            str = "Ivan";  
        }  
    
        public void change(StringBuffer str){  
            str.append(" World");  
        }  
     那么将上面的i和str传入如下的三个方法中是否有作用呢?(这里添加了一个StringBuffer,是因为你无法改变String) 
     再来看下Java中的方法如何 执行的。在 Thinking in Java第七章中,提到了一点。 方法的 执行是将参数压入栈中,跳至方法代码处执行方法,然后跳回并清理栈中的参数,处理返回值。 这里可以知道,方法的参数在栈里面也有对应的存储空间,而值就是传入的 i和str在 栈中所对应的值。 也就是 说,是 i和str的一个拷 贝。  
     那么来看上面的三个方法。 
    
对于第一个方法,从上面可以知道,这里的 i和原来的i已 经不是同一个 i了,所以 这里操作的是完全不同的东东。  
     第二个方法和第一个相似,根据前面知道,
这里的 str持有的是指向"Hello"的引用。但是 这里直接将这个引用改成了指向 "Ivan"的,原来的str 还是指向 "Hello", 对原来的 str没有一点影响。 
     第三个方法是是直接操作了str所指向的那个"Hello",因
为原来的 str指向同 样的 "Hello",所以 这就会改变原来 str的 值了。  

    三.
总结  
    从上面可以知道,Java是将
栈里的值拷贝了一份作为参数传到了方法里面。对于基本类型就是传的值了,而对于对象类型就是引用了。不管传的是值还是引用,都是栈里的拷贝。记住这一点应该就不会再有什么疑问了

    四.关于数
 
   
继续看 Thinking in Java,关于数 组一节的介绍,有这么一句。 论使用的是哪种类型的数组,数组标示符其实只 是一个引用,指向在堆中 创建的一个真实对象,这个(数组)对象用以保存指向其他对象的引用。  
    再
结合上面的内容,下面两个方法能否改变值应该能知道吧
public void change(int[] i){  
        i[0]=1;  
    }  
    public void change(String[] str){  
        str[0]="Ivan";  
    } 

在探索智慧旅游的新纪元中,一个集科技、创新与服务于一体的整体解决方案正悄然改变着我们的旅行方式。智慧旅游,作为智慧城市的重要分支,旨在通过新一代信息技术,如云计算、大数据、物联网等,为游客、旅游企业及政府部门提供无缝对接、高效互动的旅游体验与管理模式。这一方案不仅重新定义了旅游行业的服务标准,更开启了旅游业数字化转型的新篇章。 智慧旅游的核心在于“以人为本”,它不仅仅关注技术的革新,更注重游客体验的提升。从游前的行程规划、信息查询,到游中的智能导航、个性化导览,再到游后的心情分享、服务评价,智慧旅游通过构建“一云多屏”的服务平台,让游客在旅游的全过程中都能享受到便捷、个性化的服务。例如,游客可以通过手机APP轻松定制专属行程,利用智能语音导览深入了解景点背后的故事,甚至通过三维GIS地图实现虚拟漫游,提前感受目的地的魅力。这些创新服务不仅增强了游客的参与感和满意度,也让旅游变得更加智能化、趣味化。 此外,智慧旅游还为旅游企业和政府部门带来了前所未有的管理变革。通过大数据分析,旅游企业能够精准把握市场动态,实现旅游产品的精准营销和个性化推荐,从而提升市场竞争力。而政府部门则能利用智慧旅游平台实现对旅游资源的科学规划和精细管理,提高监管效率和质量。例如,通过实时监控和数据分析,政府可以迅速应对旅游高峰期的客流压力,有效预防景区超载,保障游客安全。同时,智慧旅游还促进了跨行业、跨部门的数据共享与协同合作,为旅游业的可持续发展奠定了坚实基础。总之,智慧旅游以其独特的魅力和无限潜力,正引领着旅游业迈向一个更加智慧、便捷、高效的新时代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值