(一)方法的值传递

真诀:基本数据类型(包含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. python 程序设计思维_Python程序设计与算法思维
  2. Windows使用VNC连接ubuntu
  3. ios 处理WKContentView的crash
  4. Visual Studio 2010软件安装教程
  5. iptable 详解_最全的iptables防火墙详解.pdf
  6. Visual Studio 2019报4996错误的解决办法
  7. 软件工程导论 00章数据流图与数据字典
  8. Python办公自动化 - 4 PDF办公自动化
  9. NIO系列六:流行 NIO Framework netty 和 mina 性能测评与分析
  10. python基础(初识Python)
  11. 操作系统 读者-写者问题
  12. el图oracle,element-ui之el-image-viewer(图片查看器)
  13. 自学Shiro框架笔记
  14. 基于PHP的校园竞赛信息网站 毕业设计-附源码221230
  15. 小公司个人技术成长路线思考
  16. Spring Boot 快速入门(二)主配置文件、yml配置文件语法
  17. Comet OJ - Contest #5 D 迫真小游戏 (堆+set)
  18. python打印输出12星座_Python采集12星座信息,分析出12星座的各个特点
  19. TDK 小型冗余模拟 TMR 角度传感器。
  20. 什么是币圈跨链侧链?

热门文章

  1. 【线程、锁】Condition使用以及Condition原理分析
  2. 【智力题 01】猜凶手
  3. 深度 | 资深架构师教你一篇文看懂Hadoop(二)
  4. ActionForm本质
  5. 首师大附中OJ系统 0028 判断奇偶
  6. uniapp 使用秋云uCharts图表组件、echarts图表组件
  7. java网络编程 听_java网络编程 - 亲亲媛的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. NeurIPS22 | 分子图分布外泛化与因果不变性
  9. JAVA_多线程(硬件和软件多线程概念)
  10. erase怎么用c语言,C++ erase()函数使用时的注意点