1.定义一个int型数组:int[] arr = new int[] {12,33,3,34,56,77,432};

让数组上的每个位置的值去除以首位置的元素,得到的结果,作为

该位置上的新值。遍历整个数组。

易错点:直接去用for循环 顺序地 给每个值去除以首位的元素值,这

样得到的结果将会是只有首位置的元素除以了本身得到 1 ,其他位置

的都是当前位置的元素除以 1 为其本身。

答案一:

从尾到头逆序赋值。

for(int i = arr.length - 1;i >= 0; i--){
    arr[i] = arr[i] / arr[0];
}

答案二:

int temp =arr[0];
for(int i = 0; i < arr.length; i++){
    arr[i] = arr[i] / temp;
}

 

2.判断如下的输出:

int[] arr = new int[] {1,2,3};
System.out.println(arr);

char[] arr1 = new char[] {'a','b','c'};
System.out.println(arr1);

答案:

第一个输出一个地址值

第二个输出 abc

(因为第二个输出一个char类型的,在方法中定义的就是输出整个数组的各个元素)

 

3.判断如下输出(多态有关的)

package e3;

public class e3 {
    public static void main(String[] args) {
        Base1 base = new Sub1();
        base.add(1,2,3);
        
        Sub1 s= (Sub1)base;
        s.add(1,2,3);
    }
}

class Base1{
    public void add(int a,int...arr){
        System.out.println("base1");
    }    
}

class Sub1 extends Base1{
    public void add(int a,int[] arr){
        System.out.println("sub1");
    }
    
    public void add(int a,int b,int c){
        System.out.println("sub2");
    }
}

答案:

sub1
sub2

class Base1{
    public void add(int a,int...arr){
        System.out.println("base1");
    }    
}

class Sub1 extends Base1{
    public void add(int a,int[] arr){
        System.out.println("sub1");
    }
}

因为这两个方法构成了方法重写!

而第一个new 的是:Base1 base = new Sub1();

因此:base.add(1,2,3); 最后输出的是子类的方法!

而后面经过了转型:Sub1 s= (Sub1)base;

因此:s.add(1,2,3); 最后输出的是子类的方法

因为确定多的个数的方法先调用!!

 

 posted on 2020-10-29 14:02  又在化学楼迷路了  阅读(173)  评论(0)    收藏  举报