首页 » 排名链接 » 备战秋招丨IT大厂JAVA笔试题精讲(第1期)(方法参变量引用数据类型调用)

备战秋招丨IT大厂JAVA笔试题精讲(第1期)(方法参变量引用数据类型调用)

admin 2024-10-31 07:53:37 0

扫一扫用手机浏览

文章目录 [+]

接下来一段日子,我们会为大家整理IT大厂招聘中常见的笔试题,并提供详尽的讲解。
本期为第一期,大家可以赶快分享给自己的同学,大家一起备战秋招。

备战秋招丨IT大厂JAVA笔试题精讲(第1期)(方法参变量引用数据类型调用) 排名链接
(图片来自网络侵删)

很多公司在笔试中,都会出现函数调用的程序运行题目,这类题目的考点,最终都会落到参数传递上。
我们来看下面这道题。

class Values{

public int i = 15;

}

public class TestValue{

public static void main(String argv[]){

TestValue t = new TestValue();

t.first();

}

public void first(){

int i = 5;

Values v = new Values();

v.i = 25;

second(v, i);

System.out.println(v.i);

}

public void second(Values v, int i){

i = 0;

v.i = 20;

Values val = new Values();

v = val;

System.out.println(v.i + "," + i);

}

}

提问

Qustions

&

解答

Answers

问题:以上题目,运行结果是多少呢?

答案:

15 0

20

解析:

不知道各位同学做得怎么样?如果没做出来,说明你对java方法调用参数方面的知识点掌握得不够牢靠哦,要加强哦!

那么,这道题该如何解答呢?首先,让我们来回顾一下java方法调用参数的基础知识点。

Java中方法配有参数列表,我们在方法定义时设计好形参,在方法的调用阶段我们传递实参,参数的传递方式即值传递。

调用方法时,会把实参的值拷贝传递给形参,方法内部其实是在使用形参,所谓值传递,即当参数是基本类型时,传递参数的值,如传递a=1,真实传参时,把a变量的值1赋值给了形参。

当参数是引用数据类型,如对象、数组时,传递的是对象地址值。
而形参实际上可看作是方法内部的一个局部变量,伴随方法的调用诞生,方法执行完毕弹栈而清除。
对比其他方法内局部变量而言,形参不需要初始化,因为在方法被调用时,一定会先给形参赋值,其他同一般的方法内局部变量一致。

基本类型当做方法的形参时:

public static void main(String args[]){

int x = 1;

int y = 2;

max(x,y);

}

public int void max(int x ,int y)

1. main方法是程序入口,先分配实参(main函数内的局部变量x,y)的内存空间并初始化值1,2;

2. 再用max方法,将max方法压栈,并分配其形参的内存空间(max方法的x,y;由于是两个方法栈所以虽然都是x,y,但是没有冲突和影响);

3. 将实参的值赋给对应的顺序的形参(main的x值拷贝给max的x,main的y值拷贝个max的y);

4. 执行max方法体后弹栈释放形参的内存空间;

5. main函数继续执行,当main函数执行完毕释放内存。

基本类型&引用类型

基本类型

引用类型

以上即java函数调用的一般过程。
作为实参,基本数据类型和引用数据类型最大的区别,就在于基本类型传的是值,引用数据类型传的是地址值。

再回头看所考的题目:

1.生成Test类型对象,调用first方法

2.first方法声明局部变量i:5

3.创造Value对象v,v的i属性:15

5.传入v的引用和局部变量的值给second方法的形参

4.v的i属性值改为25

6.second方法的形参值从传入的5改成了0,

形参v通过first生成的v对象的引用修改其属性从25改成20

7.second生成了一个自己的value类型的对象:val,i属性为:15

8.形参v的引用从first的v调整为second的val

9.输出second的i的属性为15second的形参为:0

10:first的v对象i属性为:20

总结

基本数据类型直接存放数据值本身,所以改的也是数据值本身。

引用数据类型不同之处在于,真正的数据并没有在栈区的变量中保存,而是在堆区里保存,所以,虽然也拷贝了副本,但二者指向的是同一块堆区。

引用数据类型就像是两人用同一个账户的银行卡,不论谁取钱都会影响同一个账户。

1)当使用基本数据类型作为方法的形参时,在方法体中修改形参不会影响实参的数值;

2)当使用引用数据类型作为方法的形参时,在方法体中修改形参指向的数据内容,会影响到实参变量的数值,因为形参变量和实参变量共享同一块堆区;

3)当使用引用数据类型作为方法的形参时,在方法体中修改形参变量的指向,不会影响到实参变量的数值,因为形参变量和实参变量分别指向不同堆区。

往期精选

就业凉了,地摊热了——最难就业季,你是凉是热?

敲黑板!
线性结构设计的知识要点

敲黑板!
经典查找算法的知识要点

标签:

相关文章