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
浙公网安备 33010602011771号