当前位置:主页 > java教程 > Java中的按值传递和按引用传递的代码详解

深度解析Java值传递和引用传递

发布:2020-03-14 19:16:22 54


给大家整理一篇Java相关的编程文章,网友卢咏思根据主题投稿了本篇教程内容,涉及到java、值传递、引用传递、Java中的按值传递和按引用传递的代码详解相关内容,已被215网友关注,涉猎到的知识点内容可以在下方电子书获得。

Java中的按值传递和按引用传递的代码详解

先使用int实验:

public class TTEST { 
  private static  List<UserEntity> mList = new LinkedList<UserEntity>();  
  public static void main(String[] args) { 
    int a = 0; 
    changeA(a); 
    System.out.println("a = "+a); 
  } 
   
  public static void changeA(int a){ 
    a = 1; 
  } 
}

输出:a = 0

这说明对于int值是按值传递。其他几个基本类型也是如此。

再使用自己定义的类UserEntity来实验:

public class UserEntity { 
  private String name; 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
} 

public class TTEST { 
  public static void main(String[] args) { 
    UserEntity userEntity = new UserEntity(); 
    userEntity.setName("猿猴"); 
    changeName(userEntity); 
    System.out.println("name = "+userEntity.getName()); 
  } 
  public static void changeName(UserEntity userEntity){ 
    userEntity.setName("忽必烈"); 
  } 
} 

输出:name = 忽必烈

我们再来使用一个linkedList<Object>来实验:

import java.util.LinkedList; 
import java.util.List; 
public class TTEST { 
   private static List<UserEntity> mList = new LinkedList<UserEntity>();  
  public static void main(String[] args) { 
    UserEntity userEntity = new UserEntity(); 
    userEntity.setName("石头"); 
    addUser(userEntity); 
    System.out.println("name = "+userEntity.getName()); 
  } 
  public static void addUser(UserEntity userEntity){ 
    mList.add(userEntity); 
    mList.get(0).setName("猿猴"); 
  } 
} 

输出:name= 猿猴

这说明在使用我们自己定义的类时,是按引用传递的。

接着,再来使用String实验:

public class TTEST { 
  public static void main(String[] args) { 
    String str= "开始的"; 
    changeStr(str); 
    System.out.println("str = "+str); 
  } 
  public static void changeStr(String str){ 
    str = "改变的"; 
  } 
} 

输出:str = 开始的

用Integer做实验也会发现没有改变。

说明我们按照java内置的对象也是值传递。因此我们可以做如下总结:

只要我们自己定义的类创建的对象,都是引用传递,系统内置的基本类型和对象都是指传递。

总结

以上所述是小编给大家介绍的Java中的按值传递和按引用传递,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!


参考资料

相关文章

  • Java应聘中到底啥是分布式系统开发经验

    发布:2019-08-03

    这篇文章主要介绍了分布式系统开发经验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • 实例讲解webpack进阶之插件篇

    发布:2020-02-05

    这篇文章主要介绍了详解webpack进阶之插件篇,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • 实例分析JavaScript实现的拼图算法

    发布:2020-02-21

    这篇文章主要介绍了JavaScript实现的拼图算法,结合实例形式分析了javascript图形拼接与判定算法相关操作技巧及注意事项,需要的朋友可以参考下


  • Java常用排序算法整理分享

    发布:2019-09-10

    在本文里我们给大家整理了关于Java常用排序算法以及实例代码分析,需要的朋友们跟着学习下。


  • Java current并发包超详细分析

    发布:2023-03-28

    current并发包、在JDK1.5之前Java并没有提供线程安全的一些工具类去操作多线程,需要开发人员自行编写实现线程安全,但仍然无法完全避免低性能、死锁、资源管理等问题。在JDK1.5时新增了java.util.current并发包,其中提供了许多供我们使用的并发编程工具类


  • 实例详解Java编程实现beta分布的采样或抽样

    发布:2020-02-04

    这篇文章主要介绍了Java编程实现beta分布的采样或抽样实例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下


  • Java企业级项目开发思想总结

    发布:2021-05-07

    Java企业级项目开发思想。偶遇,读有所得,遂分享给大家,本文不涉及案例,只谈思想和理念,需要的朋友可以参考。


  • 分享JavaScript 获取元素在父节点中的下标技巧

    发布:2020-02-12

    jQuery中直接通过$(this).index()即可得到当前元素的下标。下面通过实例给大家介绍JavaScript 获取元素在父节点中的下标,需要的朋友参考下吧


网友讨论