zoukankan      html  css  js  c++  java
  • 值传递和引用传递

    1、java中的数组类型:

      基本类型:byte short int float long double char boolean

      引用类型:类类型,接口类型,数组类型。

      基本类型的变量保存原始值,它代表的是数值本身,

      引用类型的变量保存引用值,“引用值”指向内存空间地址,代表某个对象的引用,而不是对象本身,引用值指向栈中存放的地址,而对象在堆中。

    2、基本类型和引用类型的区别

      基本数据类型在声明时系统就给它分配空间,这里面包括数据空间,引用类型不同,声明时只给变量分配引用空间,不分配数据空间。

    3、引用传递和值传递

      值传递:

      方法调用时,实际参数的值传给方法的形参,形参收到的只是实参的一个副本,实际参数的值没有变化,在方法中对形参的改变不影响实参的值。

      引用传递:

      也称为传地址。方法调用时,实际参数的地址传给形参,因此形参指向的对象和实参指向的对象相同,因此方法中对形参的改变会影响实参的值。

      例子:

      

    public class Object {
        public int b = 99;
    }

    分别传参基本数据类型和引用数据类型

    public class BasicAndObject {
        public void test1(int a){
            a=a++;
            System.out.println("test1方法中的:"+a);
        }
        public void test2(Object obj){
            obj.b = 100;
            System.out.println("test2方法中的:"+obj.b );
        }
        public static void main(String[] args) {
            BasicAndObject ba = new BasicAndObject();
            int a = 99;
            ba.test1(a);
            System.out.println("main函数中的"+a);
            
            Object o = new Object();
            ba.test2(o);
            System.out.println("main函数中的"+o.b);
        }
    }

    结果:

    test1方法中的:99
    main函数中的99
    test2方法中的:100
    main函数中的100

     

    从结果中,值传递没有改变原来实参的值,但是引用传递改变了原来对象的值。

      

  • 相关阅读:
    idea 导入spring 源码注意的问题
    如何在plsql/developer的命令窗口执行sql脚本
    使用babel把es6代码转成es5代码
    解决es6中webstrom不支持import的一个简单方法
    nodejs npm insttall 带不带-g这个参数的区别
    nodejs 喜欢报cannot find module .....的简单解决方案
    用npm安装express时报proxy的错误的解决方法
    angularjs的验证信息的写法
    Emacs as a Python IDE(转)
    消息摘要java.security.MessageDigest
  • 原文地址:https://www.cnblogs.com/qducn/p/8034554.html
Copyright © 2011-2022 走看看