看似简单而又容易犯错的面试题

Java中常见的面试题

例题1:

public class Test {
	public static void main(String[] args) {
    	int a = 10;
    	int b = 10;
    	method(a,b);//需要在method方法被调用之后,仅打印a=100,b=200,请写出method方法的代码
    	System.out.println("a="+a);
   	 	System.out.println("b="+b);
 }
}

方法1:
在这里插入图片描述
方法2:
在这里插入图片描述
例题2:

// 让数组上的每一个位置的值除以数组首元素的值,得到的值作为该位置的新址,遍历新数组
int[] arr = new int[]{12,3,4,23,12,44};

方法1:
在这里插入图片描述
方法2:
在这里插入图片描述
例题3:

	int[] arr = new int[]{1,2,3};
    System.out.println(arr);//输出的结果是??

    char[] arr1 = new char[]{'a','b','c'};
    System.out.println(arr1);//输出的结果是??

第一个输出的是地址
第二个输出的是abc

例题4:
Java中是值传递还是引用传递?
看看代码吧:

public static void main(String[] args) {
    //java参数传递只有值调用,没有引用调用。
    Student s1 = new Student(1, "小");
    Student s2 = new Student(2, "大");
    s1.print();
    s2.print();
    System.out.println("=======================");
    swap(s1, s2);//如果是引用调用的话s1与s2就应该是交换了。
    s1.print();
    s2.print();
    changeName(s1);
    s1.print();
}

public static void swap(Student s1, Student s2) {
    Student temp = s1;
    s1 = s2;
    s2 = temp;
}

public static void changeName(Student s) {
    s.setName("中");
}
}

class Student {
private int number;
private String name;

public Student(int number, String name) {
    this.number = number;
    this.name = name;
}

public void setName(String name) {
    this.name = name;
}

public void print() {
    System.out.println("number:" + number + "  name:" + name);
}

1、Java是引用传递。(这是错误的,上述的内容恰恰说明Java是值传递)
2、参数类型是什么就是什么传递。(这是啥逻辑)

Java中的值传递机制

如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值
如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值
发布了67 篇原创文章 · 获赞 19 · 访问量 9891

猜你喜欢

转载自blog.csdn.net/qq_41530004/article/details/102571525