(一)方法的值传递

真诀:基本数据类型(包含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类型。

方法值传递和引用传递的过程重难点剖析相关推荐

  1. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  2. java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

    java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java编程语言只有值传递参数. 当一个对象实 ...

  3. 【Java】探究Java方法的参数传递是值传递还是引用传递

    测试思路 每个更改形参的方法,返回值都是void,不同方法的参数设置不同类型. 注意在方法内测地址的时候在改之前测一下,才能看出传入参数是不是传了地址.(注意反正OS的内存地址是虚拟的,JVM中的也是 ...

  4. java中的就近原则、方法中值传递和引用传递的区别、什么是构造方法、this关键字用法、什么是封装

    你知道java中的就近原则嘛? package com.Test.java; /*** * 在java里面有一个"就近原则"详情可以参照下面代码**/public class Ac ...

  5. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

    问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?  (下面内存图解:栈内存是先进后出的,画错了 ) 答:是值传递.Java ...

  6. C# 面向对象编程(杂2),类中可能出现的成分,字段,属性,方法,自动属性,权限(五种),其他类,值传递和引用传递,类ToString的问题

    C# 面向对象编程(杂2),类中可能出现的成分 1. 字段,属性,方法,自动属性 class Person1 {//字段private string _name;//字段对应的属性public str ...

  7. Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?

    来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...

  8. php值传递和java_Java的值传递和引用传递

    形参与实参 我们先来重温一组语法: 形参:方法被调用时需要传递进来的参数,如:func(int a)中的a,它只有在func被调用期间a才有意义,也就是会被分配内存空间,在方法func执行完成后,a就 ...

  9. c++值传递,指针传递,引用传递以及指针与引用的区别

    值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...

最新文章

  1. PADS Layout VX.2.3 修改层名
  2. spring-boot-mybatis
  3. 又一轮电邮中间人攻击来袭 企业如何自保?
  4. 《研磨设计模式》chap24 桥接模式bridge(2)场景应用
  5. 2020太湖杯 | Wp及复现
  6. 三角形最小路径和—leetcode120
  7. python socket清空接受区_原始Python服务器
  8. uva 11012——Cosmic Cabbages
  9. Zend Framework(一)概述介绍
  10. 矿井通风计算c语言_矿井主通风机的技术发展现状与未来发展趋势
  11. cmos图像传感器应用实例及其发展趋势分析
  12. php curl如何解决分页,一段PHP的分页程序,报错,该如何解决
  13. codeforces731E Funny Game(DP)
  14. web调用qq临时会话
  15. java架构师之路-并发编程
  16. java学术论文_java毕业设计论文-学术参考网
  17. 穷查理宝典_《穷查理宝典》(珍藏版)
  18. 格兰蒂亚3 详细剧情攻略
  19. ★☆★新书已经到手《Java程序员,上班那点事儿》正式销售纪念帖★☆★
  20. java中controller层是干嘛的?

热门文章

  1. Java解析wav文件基本格式信息
  2. 使用Vue封装图表组件
  3. 未来科技计算机作文600字,未来科技优秀作文600字
  4. [渝粤教育] 中南财经政法大学 生活中的管理会计 参考 资料
  5. 小米红米手机解锁刷机root权限
  6. 十六进制的ascii码 \u5929\u6cf0\u56fd\u9645 解码成unicode
  7. jsDOM模型详解一之DOM核心
  8. svn服务器 无线访问权限,SVN 服务器端权限管理
  9. 六种高质量外链,网络推广获得好seo排名
  10. 部门、同事间沟通技巧