方法值传递和引用传递的过程重难点剖析
(一)方法的值传递
真诀:基本数据类型(包含String类型,String是引用类型),方法的形参的改变不会影响实参。传递的是字面量。
基本数据类型是指:byte、short、int、long、float、double、char、boolean。然后在加上一个引用数据类型String
案例:
public class MethodDemo1 {
public static void main(String[] args) {
int a = 5;
change(a);
System.out.println("a的值:"+a);
}
public static void change(int a){
System.out.println("方法执行了……");
a *= 10;
System.out.println("方法里的a的值:"+a);
System.out.println("方法执行完毕了……");
}
}
结果:
方法执行了……
方法里的a的值:50
方法执行完毕了……
a的值:5
通过结果,我们很容易发现a的值并没有发生改变。
分析:
看图说话
a的值之所以没有改变,是因为a,传递给方法的是值。换句话说就是,复制a的值,在传给方法。而方法修改的仅仅只是复制的值。
所以,值传递不会改变实参的值。
二、方法的引用传递
真诀:引用数据类型(不包含String):形参的改变会影响实参。因为传递的是地址。
引用数据类型:数组、类、接口。但不包括String(String本质是一个类)
案例:
public class MethodDemo2 {
public static void main(String[] args) {
int[] a = {1,2,3};
change(a);
System.out.println("a的值:"+a);
for (int i : a) {
System.out.print(i+" ");
}
}
public static void change(int[] a){
System.out.println("方法执行了……");
for (int i = 0; i < a.length; i++) {
a[i] *= 3;
}
System.out.println("方法里的a的值:"+a);
}
}
分析:看图说话
通过,图片我们可以看出,引用数据类型开辟了堆内存。这是因为我们使用了new关键字。虽然int[] a = {1,2,3};,
但它的完全格式是为int[] a = new int[]{1,2,3};
引用传递,之所以可以让数据改变,是因为引用数据类型传递的是地址。通过传递地址,获得堆内存的首地址,然后通过索引,进行修改内容。此外,应注意这里的引用数据类型,不包括String类型。
方法值传递和引用传递的过程重难点剖析相关推荐
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java编程语言只有值传递参数. 当一个对象实 ...
- 【Java】探究Java方法的参数传递是值传递还是引用传递
测试思路 每个更改形参的方法,返回值都是void,不同方法的参数设置不同类型. 注意在方法内测地址的时候在改之前测一下,才能看出传入参数是不是传了地址.(注意反正OS的内存地址是虚拟的,JVM中的也是 ...
- java中的就近原则、方法中值传递和引用传递的区别、什么是构造方法、this关键字用法、什么是封装
你知道java中的就近原则嘛? package com.Test.java; /*** * 在java里面有一个"就近原则"详情可以参照下面代码**/public class Ac ...
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? (下面内存图解:栈内存是先进后出的,画错了 ) 答:是值传递.Java ...
- C# 面向对象编程(杂2),类中可能出现的成分,字段,属性,方法,自动属性,权限(五种),其他类,值传递和引用传递,类ToString的问题
C# 面向对象编程(杂2),类中可能出现的成分 1. 字段,属性,方法,自动属性 class Person1 {//字段private string _name;//字段对应的属性public str ...
- Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?
来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...
- php值传递和java_Java的值传递和引用传递
形参与实参 我们先来重温一组语法: 形参:方法被调用时需要传递进来的参数,如:func(int a)中的a,它只有在func被调用期间a才有意义,也就是会被分配内存空间,在方法func执行完成后,a就 ...
- c++值传递,指针传递,引用传递以及指针与引用的区别
值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...
最新文章
- PADS Layout VX.2.3 修改层名
- spring-boot-mybatis
- 又一轮电邮中间人攻击来袭 企业如何自保?
- 《研磨设计模式》chap24 桥接模式bridge(2)场景应用
- 2020太湖杯 | Wp及复现
- 三角形最小路径和—leetcode120
- python socket清空接受区_原始Python服务器
- uva 11012——Cosmic Cabbages
- Zend Framework(一)概述介绍
- 矿井通风计算c语言_矿井主通风机的技术发展现状与未来发展趋势
- cmos图像传感器应用实例及其发展趋势分析
- php curl如何解决分页,一段PHP的分页程序,报错,该如何解决
- codeforces731E Funny Game(DP)
- web调用qq临时会话
- java架构师之路-并发编程
- java学术论文_java毕业设计论文-学术参考网
- 穷查理宝典_《穷查理宝典》(珍藏版)
- 格兰蒂亚3 详细剧情攻略
- ★☆★新书已经到手《Java程序员,上班那点事儿》正式销售纪念帖★☆★
- java中controller层是干嘛的?