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字符串等
目录
相关文章
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
128 4
|
3月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
51 2
|
4月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
4月前
|
Java API 索引
【Java基础面试二十四】、String类有哪些方法?
这篇文章列举了Java中String类的常用方法,如`charAt()`、`substring()`、`split()`、`trim()`、`indexOf()`、`lastIndexOf()`、`startsWith()`、`endsWith()`、`toUpperCase()`、`toLowerCase()`、`replaceFirst()`和`replaceAll()`,并建议面试时展示对这些方法的熟悉度,同时深入理解部分方法的源码实现。
【Java基础面试二十四】、String类有哪些方法?
|
4月前
|
Java
【Java集合类面试三十】、BlockingQueue中有哪些方法,为什么这样设计?
BlockingQueue设计了四组不同行为方式的方法用于插入、移除和检查元素,以适应不同的业务场景,包括抛异常、返回特定值、阻塞等待和超时等待,以实现高效的线程间通信。
|
4月前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
【多线程面试题 二】、 说说Thread类的常用方法
Thread类的常用方法包括构造方法(如Thread()、Thread(Runnable target)等)、静态方法(如currentThread()、sleep(long millis)、yield()等)和实例方法(如getId()、getName()、interrupt()、join()等),用于线程的创建、控制和管理。
|
4月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?