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中的值传递机制
如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值
如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值