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);
}
//代码编写处
}
方法一:通过使用System.exit()方法退出程序
static void method(Integer a,Integer b){
System.out.println("a="+a*10);
System.out.println("b="+b*20);
System.exit(0); //退出程序
}
方法二:改变打印流
static void method(Integer a,Integer b){
PrintStream printStream = new PrintStream(System.out){
@Override
public void println(String x) {
if("a=10".equals(x)){
x="a=100";
}else if("b=10".equals(x)){
x="b=200";
}
super.println(x);
}
};
System.setOut(printStream);
}
2.定义一个int型的数组:int[] arr=new int[]{12,3,3,34,56,77,432};让数组的每个位置的值都去除以首位置的元素,得到的结果,作为该位置上的新值,遍历新的数组。
方法一:
int[] arr=new int[]{12,3,3,34,56,77,432};
for(int i=1;i<arr.length;i++){
arr[i]=arr[i]/arr[0];
}
System.out.println(Arrays.toString(arr));
}
方法二:
int[] arr=new int[]{12,3,3,34,56,77,432};
int temp=arr[0];
for(int i=1;i<arr.length;i++){
arr[i]=arr[i]/temp;
}
System.out.println(Arrays.toString(arr));
注意i从1开始不要从0开始
3.写出输出结果
int[] arr=new int[]{1,2,3};
System.out.println(arr);
char[] arr1= new char[]{'1','2','3'};
System.out.println(arr1);
第一个输出的是arr数组的地址,第二个输出的是123
调用的方法不同:public println(Object x)与public void println(char[] x)。
public void println(char[] x)重载方法底层是遍历输出数组元素。
4. 如下两个题目输出结果相同吗?各是什么:
Object obj1 = true ? new Integer(1) : new Double(2.0);
System.out.println(obj1);
Object obj2;
if (true)
obj2 = new Integer(1);
else
obj2 = new Double(2.0);
System.out.println(obj2);
Object obj1接收三元运算表达式的结果,运算符中的两个条件表达式因此类型要一致,所以发生自动类型提升,结果是1.0,obj2输出结果是1。
5. 输出下列代码结果
public static void main(String[] args) {
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j);
Integer m = 1;
Integer n = 1;
System.out.println(m == n);//
Integer x = 128;
Integer y = 128;
System.out.println(x == y);//
}
i和j分别是堆内存中的对象,地址不一样,所以i == j判定结果是false;IntegerCache数组存储的数据大小范围是-128~127之间,m和n在此期间,共用一个对象,所以m == n是true。x和y超出此范围,都会new新的对象,所以x == y结果是false