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

 更新时间:2018年06月13日 10:17:01   作者:围城灬  
本文通过实例代码给大家介绍了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中的按值传递和按引用传递,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 如何实现bean初始化摧毁方法的注入

    如何实现bean初始化摧毁方法的注入

    这篇文章主要为大家介绍了如何实现bean初始化摧毁方法的注入详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java方法及数组相关原理解析

    Java方法及数组相关原理解析

    这篇文章主要介绍了Java方法及数组相关原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • java遍历读取xml文件内容

    java遍历读取xml文件内容

    这篇文章主要为大家介绍了java遍历读取xml文件内容,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • javaweb实现文件上传小功能

    javaweb实现文件上传小功能

    这篇文章主要为大家详细介绍了javaweb实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • SecurityUtils.getSubject().getPrincipal()为null的问题

    SecurityUtils.getSubject().getPrincipal()为null的问题

    这篇文章主要介绍了SecurityUtils.getSubject().getPrincipal()为null的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现

    java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现

    这篇文章主要介绍了java 地心坐标系(ECEF)和WGS-84坐标系(WGS84)互转的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • java(jdk)环境变量配置(XP、win7、win8)图文教程详解

    java(jdk)环境变量配置(XP、win7、win8)图文教程详解

    对于初学java的同学来说,第一件事不是写hello world,而是搭建好java开发环境,下载jdk,安装,配置环境变量。这些操作在xp、win7、win8不同的操作系统里面配置不太一样,下面通过本文给大家介绍如何在上面不同操作系统下配置
    2017-03-03
  • Java+Freemarker实现根据XML模板文件生成Word文档

    Java+Freemarker实现根据XML模板文件生成Word文档

    这篇文章主要为大家详细介绍了Java如何使用Freemarker实现根据XML模板文件生成Word文档,文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2023-11-11
  • Java中的logback标记日志过滤器MarkerFilter详解

    Java中的logback标记日志过滤器MarkerFilter详解

    这篇文章主要介绍了Java中的logback标记日志过滤器MarkerFilter详解,在logback-classic中存在一个全局过滤器TurboFilter,TurboFilter是与LoggerContext绑定,会在会在其它过滤器之前执行,需要的朋友可以参考下
    2023-11-11
  • SWT(JFace) 打印功能

    SWT(JFace) 打印功能

    SWT(JFace)体验之打印功能
    2009-06-06

最新评论