2017-03-21-抽象类,接口,StringBuffer和基本数据类型包装类
Xplorist Lv6

2017-03-21-抽象类,接口,StringBuffer和基本数据类型包装类

新思路:每周都要讲笔记整理一次,温习一下里面重要的新知识,将一些自己一开始没弄懂的细节再仔细咀嚼一下。

复习:

静态关键词static

静态优先加载,在类成员还没创建之前就已经存在了。

所以无法调用对象,也不能使用this关键字。

静态的多态:方法重载

动态的多态:动态迟绑定

知识点1:

接口就是特殊的抽象类,特殊在:类只能单继承,类可以实现多个接口,接口可以继承多个接口

继承

实例1:

编写一个方法,返回一个double型二维数组,数组中元素通过解析字符串参数获得。如字符串参数:

“1,2;3,4,5;6,7,8,9”

结果:对应的数组为:

d[0,0]=1.0      d[0,1]=2.0

d[1,0]=3.0      d[1,1]=4.0    d[1,2]=5.0

d[2,0]=6.0       d[2,1]=7.0    d[2,2]=8.0      d[2,3]=9.0

思路:

将字符串分成两次来拆分,通过“;”拆分的字符串作为二维数组的行,把每个字符串的每个字符作为一维数组里面的列。

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void test2(){
        String s="1,2;3,4,5;6,7,8";
        
        String[] s1=s.split(";");
        System.out.println(Arrays.toString(s1));
        double[][] a=new double[s1.length][];
        for(int i=0;i<s1.length;i++){
            String[] s2=s1[i].split(",");
            System.out.println(Arrays.toString(s2));
            a[i]=new double[s2.length];//这步非常关键,说到底是对创建数组的过程不了解,数组的长度是确定的,必须先分配内存
            for(int j=0;j<s2.length;j++){
                a[i][j]=Double.parseDouble(s2[j]);
            }
        }
        for(double[] d:a){
            System.out.println(Arrays.toString(d));
        }
    }

实例2:

动态生成一个一维数组长度不等的二维数组,并将这个二维数组遍历出来。

思路:

先确定二维数组的中一维数组的个数,分配一维数组的个数的空间,再分配一维数组的空间,确定每个一维数组的长度。

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void test3(){
        int[][] a=null;
        a=new int[10][];
        for(int i=0;i<10;i++){
            a[i]=new int[i+1];
            for(int j=0;j<=i;j++){
            a[i][j]=j;
            }
        }
        
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                System.out.print(a[i][j]);
            }
            System.out.println();
        }
    }
 评论