首页 > 编程语言 >java值传递

java值传递

时间:2022-11-23 17:56:08浏览次数:36  
标签:java 传递 user pass print main public User

java是值传递还是引用传递

值传递

是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数

引用传递

是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数

情况一:

  • 基本数据类型:
public class TestJavaPass {
    public static void main(String[] args) {
        TestJavaPass tj = new TestJavaPass();
        int i=10;
        tj.pass(i);
        System.out.println("print in main, i is "+i);
    }
    public void pass(int j){
        j=20;
        System.out.println("print in pass, j is "+j);
    }
}
  • 结果
print in pass, j is 20
print in main, i is 10
  • 结论

    传入基本数据类型时,为值传递不会改变其本身

情况二:

  • 传入对象并改变其自身属性

    public class TestJavaPass {
        public static void main(String[] args) {
            TestJavaPass tj = new TestJavaPass();
    //        int i=10;
    //        tj.pass(i);
    //        System.out.println("print in main, i is "+i);
            User user = new User();
            user.setName("hollis");
            user.setGender("Male");
            tj.pass(user);
            System.out.println("print in main , user is "+user);
        }
        public void pass(int j){
            j=20;
            System.out.println("print in pass, j is "+j);
        }
        public void pass(User user){
            user.setName("hollischuang");
            System.out.println("print in pass , user is "+user);
        }
    }
    
  • 结果

    print in pass , user is User{name='hollischuang', gender='Male'}
    print in main , user is User{name='hollischuang', gender='Male'}
    
  • 结论

    传入为引用类型时,对象的属性改变

情况三:

  • 传入对象的引用,不改变对象的属性

    public class TestJavaPass {
        public static void main(String[] args) {
            TestJavaPass tj = new TestJavaPass();
    //        int i=10;
    //        tj.pass(i);
    //        System.out.println("print in main, i is "+i);
            User user = new User();
            user.setName("hollis");
            user.setGender("Male");
            tj.pass(user);
            System.out.println("print in main , user is "+user);
        }
        public void pass(int j){
            j=20;
            System.out.println("print in pass, j is "+j);
        }
        public void pass(User user){
            user = new User();
            user.setName("hollischuang");
            System.out.println("print in pass , user is "+user);
        }
    }
    
  • 结果

    print in pass , user is User{name='hollischuang', gender='null'}
    print in main , user is User{name='hollis', gender='Male'}
    
  • 结论

    方法pass中形参user首先指向main方法中的user,然后再新建user类的时候会重新指向新建的user,后续改变新建user,main方法中的user并未改变,这里是值传递,传递的是对象的引用

结论:

java是值传递,基本数据类型传递复制的对象,引用数据类型传递其引用,如果在方法中提供了修改引用对象的方法则会修改其对象,否则不会修改

标签:java,传递,user,pass,print,main,public,User
From: https://www.cnblogs.com/yufou/p/16919212.html

相关文章

  • 【转载】Java stream对List对象进行分组聚合操作:求和、平均值、最大值、最小值,BigDeci
    packagecom.kabka.test;importcn.hutool.json.JSONUtil;importlombok.extern.slf4j.Slf4j;importorg.junit.jupiter.api.Test;importjava.math.BigDecimal;importjav......
  • Java特性和优势
    简单性与C语言不同,Java是一种面向对象编程的语言,他的底层借鉴了C++语言但又不是完全相同,Java语言并不支持多继承、指针、goto语句、操作符重载、头文件等,但其语法基于C语......
  • java web开发(和vue联合开发)
        前面我们谈到了很多次vue,也说到了vue的很多优点。比如说,vue实现了mvc中全部v的功能,也就是view的部分。这样,后端开发就变得很简单,前后端之间只要实现json数据的......
  • Java + Lua = 王炸!!
    我们写东西的时候总会遇到lua中要调用java代码,当然这个用JNI肯定是可以做到的,但是有更加方便的办法—LuaJavaBridge。一、luaj主要特征*可以从Lua调用JavaClassS......
  • Java 注解和反射(一)注解
    一,注解(Annotation)顾名思义,注解,注释解释什么是注解?··Annotation是从JDK5.0开始引入的技术··Annotation的作用:1.不是程序本身,可以对程序做出解释(这一点和注释......
  • java web开发(aop编程)
        刚开始看到aop的时候,了解到它是面向切片,觉得还是挺拗口的。不知道应该怎么去理解怎么这么一个概念。后来想了一想,不如先看范例,直接从实例去理解aop或许更容易一......
  • java web开发(mysql开发)
        选择了java作为项目开发语言,一般就不再会选择商业数据库了,比如说sqlserver,oracle之类的,除非是项目有特殊需求。大多数情况下,开发者都会选择mysql作为应用数据......
  • java web开发(第一个spring程序)
        提到javaweb编程,好像spring就躲不开了。一般认为,spring有两个特征,分别是ioc、aop。两个英文单词的中文解释都比较拗口,一个称之为控制反转,一个是面向切面。对于......
  • java web开发(servlet传递数据给jsp)
        实际开发中,servlet多用于controller,jsp多用于view。之前,我们谈过了怎么把数据从jsp传递给servlet,即采用form+action的方法来完成这一目标。今天可以继续讨论下,s......
  • java web开发(jsp传递数据给servlet)
        有了servlet,有了jsp,其实就已经可以做很多的事情了。比如说表单的制作等等。在实际项目中,表单、表格都是很常见的输入选项。一个常见的场景,就是客户在输入数据之......