JavaSE面试题03:方法的参数传递机制

简介: JavaSE面试题03:方法的参数传递机制

@[toc]

方法的参数传递机制

题目
import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        int i=1;
        String str ="hello";
        Integer num=2;
        int [] arr={1,2,3,4,5};
        MyData my =new MyData();
        chang(i,str,num,arr,my);
        System.out.println("i="+i);
        System.out.println("str="+str);
        System.out.println("num="+num);
        System.out.println("arr="+ Arrays.toString(arr));
        System.out.println("my.a="+my.a);
    }
    public static void chang(int j,String s,Integer n,int[] a,MyData m){
        j+=1;
        s+="world";
        n+=1;
        a[0] +=1;
        m.a+=1;
    }
}
class MyData{
    int a=10;
}
运行结果
i=1
str=hello
num=2
arr=[2, 2, 3, 4, 5]
my.a=11

讲解

基本

形参列表:

int j,String s,Integer n,int[] a,MyData m

实参列表:

chang(i,str,num,arr,my);
  • 实参给形参传递值

形参是基本数据类型:传递的是数据值

形参是引用数据类型:传递的是地址值

综合解释
  1. i是基本数据类型,传递的数据值,所以i不变还是1
  2. str是String类,具有不可变性,详细看下文,所以仍然是hello
  3. num是包装类具有不可变性,同上
  4. arr是引用数据类型 ,传递的是地址值,所以改变了
  5. MyData是类,也属于引用数据类型,传递的是地址值,所以也改变了
考点
  • 方法的值传递机制
  • String、包装类等对象的不可变性
对应知识点解释
  1. Java中类的成员之二:方法(method)
  2. Java中形参的传递机制:值传递机制
  3. Java中String类是什么?什么是其不可变性?String互相拼接会怎样?
  4. Java中什么是包装类?包装类与基本数据类型如何转换?
  5. Java基础之命名规范、变量的定义、数据类型及其转换、String字符串等
目录
相关文章
|
17天前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
31 2
|
2月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
2月前
|
Java API 索引
【Java基础面试二十四】、String类有哪些方法?
这篇文章列举了Java中String类的常用方法,如`charAt()`、`substring()`、`split()`、`trim()`、`indexOf()`、`lastIndexOf()`、`startsWith()`、`endsWith()`、`toUpperCase()`、`toLowerCase()`、`replaceFirst()`和`replaceAll()`,并建议面试时展示对这些方法的熟悉度,同时深入理解部分方法的源码实现。
【Java基础面试二十四】、String类有哪些方法?
|
2月前
|
Java
【Java集合类面试三十】、BlockingQueue中有哪些方法,为什么这样设计?
BlockingQueue设计了四组不同行为方式的方法用于插入、移除和检查元素,以适应不同的业务场景,包括抛异常、返回特定值、阻塞等待和超时等待,以实现高效的线程间通信。
|
2月前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
【多线程面试题 二】、 说说Thread类的常用方法
Thread类的常用方法包括构造方法(如Thread()、Thread(Runnable target)等)、静态方法(如currentThread()、sleep(long millis)、yield()等)和实例方法(如getId()、getName()、interrupt()、join()等),用于线程的创建、控制和管理。
|
2月前
|
运维 监控 算法
[go 面试] 优化线上故障排查与性能问题的方法
[go 面试] 优化线上故障排查与性能问题的方法
|
2月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
1天前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
9 0
|
2月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。