| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Java知识库 -> 【JavaSE基础】深入了解Java的传值和传引用 -> 正文阅读 |
|
|
[Java知识库]【JavaSE基础】深入了解Java的传值和传引用 |
🔑知识导航🔑 ??????????小题目?? ??小题目??
? ? ? ? ? ? 如果你能知道马上知道a输出的值仍然是10,说明你了解初步的传值引用,不过后面我讲细讲Java的传值引用。如果你觉得a是20的话,那就请更加认真观看后文,Java的传值引用,是非常基础且重要的东西,因为Java并没有C的指针,无法进行传址引用 ?🌳?1.什么是传值引用?? ? ? ? ?首先,大家肯定对形参和实参两个名词不陌生,肯定从开始接触编程就挺过,老师常说方法的参数列表就是形参。但是我们需要传入的参数肯定都遍布在计算机的各个位置,JVM编译的时候不可能到各个地方去寻找参数列表中的参数。对于每个需要进入到参数列表的参数不可能自己移动,于是乎每个参数都克隆出和自己一模一样的数据,去到一个地方排好队被JVM识别。这些原本的参数就是实参,被克隆出的数据就是形参,形参排队的地方就是栈内存区。 ????????这时候有同学就疑问了,你不是介绍什么是传值引用吗?怎么变成介绍形参和实参了?且听下框解释
? ? ? ?小题目中主方法中的a收到了test方法给出的邀请函,但由于实在a无法离开自己所在的岗位,于是乎克隆了一份和自己属性一样的数据去参加了test方法举办的宴会,结果最后被克隆的a被改变成了20。然后我们需要打印出a的值,被克隆的a被改变了,难道会改变原来a的值吗?当然不会,所以我们打印a出来还是10。 🌳2.Java如何实现传引用?????????🍋1.数组的值传递? ? ? ? 学习Java的同学大部分肯定都先接触过C语言,既然学习C语言那就一定绕不开指针,指针是什么呢?大家肯定都知道是地址,所以C语言是有按址传递的。难道Java没有传址的情况吗?当然有,看下列代码
? ? ? ?有的人看到输出答案为10,肯定觉得我上文说错了,你明明说传值引用不会改变原本的值,怎么数组arr的第一个元素1变成了10了?首先要明白,这里确实是传值引用,但是这个值是我们学过的基本数据类型吗?arr它是一个数组!有的人可能到现在还没明白问题出在哪,那我就再原文再加一行输出代码
????????🍋1.对象的值传递? ? ? ?传参除了传入基本数据类型和数组外,还可以传什么?很多人肯定会想到对象,没错,对于传入一个对象它又是什么情况呢?我们通过代码一端代码来看
? ? ? ? ? 如我们所料,果然student是一个地址,在方法外部和内部而且都是相同的地址,说明我们在test方法内部修改的对象正是外面的实例对象。传入实例对象原来就是传入该对象的地址。 🌳3.如何判断是传值还是传引用?? ? ? ? 其实很多人都把这种传数组和对象的情况叫做传引用,它并不是真正意义上的传址。
? ? ? ? 是必要但不是非要,首先我们要明白Java的思想,在Java中任何东西都是以类来生存,有的人马上反驳,不对啊,基本数据类型int,byte,char等等的基本数据类型不是啊。但很多人却不不知道与其对应的还有Integer,Byte,Character这三个类。这更加完美的为Java以类而生的思想提供佐证。有的人马上会觉得我跑题了,但这却是我们分辨传值还是传引用的基础。
? ? ? ? 我现在给上这段代码,很多人马上就能知道为什么a和b的值交换失败,可即使再牛的Java的大佬,在他初学阶段也难免写出过这样的代码。能一眼看出错误,正是源于我们平时的积累,多思考而不是去钻牛角尖,才是正确的学习方法。
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/15 17:21:29- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |