JAVA中值传递,引用传递
刚在写一个用例,需要在方法中改变传递的参数的值,可是java中只有传值调用,没有传址调用。所以在java方法中改变参数的值是行不通的。但是可以改变引用变量的属性值。
可以仔细理解一下下面几句话:
1、对于基本类型参数,在方法体内对参数进行重新赋值,并不会改变原有变量的值。
2、对于引用类型参数,在方法体内对参数进行重新赋予引用,并不会改变原有变量所持有的引用。
3、方法体内对参数进行运算,不影响原有变量的值。
4、方法体内对参数所指向对象的属性进行操作,将改变原有变量所指向对象的属性值。
也就是说,对于基本数据类型,实现的是传值,只是个形参,不会改变原有值。对于引用数据类型,对这个引用进行操作,其实也是相当于对形参的操作,不会改变原来的引用。但是,当对这个引用的属性进行操作的时候,相当于CPP中的传址调用,可以改变这个引用的属性的值。
举个例子:
public class Main {  
    private static void getMiddleOne(boolean b, Boolean boo, Boolean[] arr){
        b = true;  //形参,不会改变原有值
        boo = new Boolean(true);  //引用变量的直接操作相当于值传递,不会改变原来的引用变量
        arr[0] = true;  //引用变量的属性的操作,会改变原有引用的属性,相当于传址调用
    }  
    //测试
    public static void main(String[] args) {
        boolean b = false;
        Boolean boo = new Boolean(false);
        Boolean[] arr = new Boolean[]{false};  
        getMiddleOne(b, boo, arr);  
        System.out.println(b);
        System.out.println(boo.toString());
        System.out.println(arr[0]);  
        /**
         * output:
         *      false
         *      false
         *      true
         */
    }
}
JAVA中值传递,引用传递的更多相关文章
- Java中参数的引用传递和值传递
		1.一些定义 值传递:把实际传入参数的值,在内存中赋值一份 引用传递:传入的是实际参数的地址 2.传递基本类型的参数 因为Java是值传递,那就不难理解下面的代码不交换任何值 swap(Type ar ... 
- Java中String是“引用”传递
		如题,在java中这是一个典型的问题. 在stackoverflow上已经有很多相似的问题被提问,并且有很多不正确或不完整的答案.如果你不往深处想,这是一个很简单的问题.但如果深入思考,它却很让人迷惑 ... 
- Java中String的 "引用" 传递
		1.来看一段有趣但又让人困惑的代码片段 public static void main(String[] args){ String x = new String("ab"); c ... 
- 理解--->Java中的值传递&引用传递
		转自:http://url.cn/5tL9F5D 值传递和引用传递 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际 ... 
- java面试3-对于java中值传递的理解(Hollis)
		这是根据Hollis的直面java内容习得(有兴趣的可以加他微信公众号) 对于初学者来说,要理解java中的值传递很难理解,为什么说java只有值传递?那引用传递呢? java中的错误理解: 错误理解 ... 
- 对象引用 方法传参 值传递 引用传递 易错点 MD
		Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ... 
- Java基础_0310:引用传递
		引用传递 引用传递是Java之中最让初学者费解的概念,而在实际的开发之中,引用传递又有着非常重要的作用: 引用传递的核心在于同一块堆内存空间被不同的栈内存所指向: 范例:第一道引用传递范例 class ... 
- C++之值传递&指针传递&引用传递详解
		C++之值传递&指针传递&引用传递详解 目录 C++之值传递&指针传递&引用传递详解 1.函数基础 2.值传递 3.指针传递 4.引用传递 1.函数基础 一个函数由以下 ... 
- java对象Integer不能引用传递
		java对象Integer不能引用传递 /** * The value of the <code>Integer</code>. * * @serial */ private ... 
- JAVA中值类型和引用类型的不同(面试常考)
		转载:https://www.cnblogs.com/1ming/p/5227944.html 1. JAVA中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个 ... 
随机推荐
- 2019-2-27-win10-uwp-去掉-Flyout-边框
			title author date CreateTime categories win10 uwp 去掉 Flyout 边框 lindexi 2019-02-27 17:48:46 +0800 201 ... 
- Vue仿网易云PC端的网页
			贴个网址:https://github.com/wangjie3186594/-PC- 声明一下:这个网页没做完!没做完!没做完! 本人新人一枚,按照的是我当前的学习进度做的项目,很多效果未 ... 
- CP防火墙升级和打补丁
			CP防火墙的升级和打补丁可以在命令行下操作,也可以在web ui下进行,CP的升级首先得升级Deployment Agent软件 Step1:升级Deployment Agent ========== ... 
- boostrap-非常好用但是容易让人忽略的地方【7】:list-unstyled  list-inline
			无样式列表 list-unstyled:去掉ul的默认样式 内联列表 list-inline:将ul子元素放置于同一行 
- 17.python内置函数2
			python内置函数1:https://www.cnblogs.com/raitorei/p/11813694.html # max,min高级玩法 # l=[1,3,100,-1,2] # prin ... 
- 一篇文章带你了解 ZooKeeper 架构
			上一篇文章,我们讲解了 ZooKeeper 入门知识,这篇文章主要讲解下 ZooKeeper 的架构,理解 ZooKeeper 的架构可以帮助我们更好地设计协同服务. 首先我们来看下 ZooKeepe ... 
- Rxjava2 介绍与详解实例
			目录 前言 RX介绍 Rx模式 Rx使用依赖: Rxjava的入门基础 1. Observable 2. Flowable 3. Single 4. Completable 5. Maybe 6. S ... 
- Spring Boot 整合 slf4j+log4j 实现日志管理
			一:首先新建一个jar项目,如下图: 二:添加log4j的依赖,如下pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0 ... 
- 洛谷$P$2575 高手过招 博弈论
			正解:博弈论 解题报告: 传送门! 阿西$gql$又双叒被题意杀辣,,,再不好好学语文吃枣药丸$TT$ 然后在$get$规则之后还有什么问题嘛,,, 就和这题差不多了,一个$easy$的阶梯问题罢辽, ... 
- pyspider遇到的第一个坑:Active Tasks成功,Results无内容
			#!/usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2020-01-04 16:30:27# Project: HomeWork fr ... 
