java学习笔记第三章

三、数组 & 常用类

数组Array基本概念:

一维数组、二维数组、多维数组

数组是相同数据类型(可以为任意类型数据)的有序集合,通过索引来引用

数组也是对象;数组元素相当于对象的成员变量

数组长度是确定的,不可变的;如果越界,则报ArrayIndexOutOfBonnd

 

数组有三个特点:

1.其长度是确定的,数组一旦被创建,它的大小是不可改变的

2.其元素必须是相同类型,不允许出现混合类型

3.数组中的元素可以是任何数据类型,包含基本类型和引用类型

eg:int[] a = new int[3]; 3是数组长度;a[0] 、a[1] 、 a[2]

 

 1 Car.java
 2 public class Car {
 3     String name;
 4     
 5     public Car(String name){
 6         this.name=  name;
 7     }
 8 }
 9 
10 Test01.java
11 public class Test01 {
12     public static void main(String[] args) {
13         /**
14          * 1. 数组是相同数据类型(数据类型可以为任意类型)的有序集合
15          * 2. 数组也是对象。数组元素相当于对象的成员变量(详情请见内存图)
16          * 3. 数组长度的确定的,不可变的。如果越界,则报:ArrayIndexOutofBoundsException
17          */
18         int[] a = new int[3];
19         a[0] = 23;
20         a[1] = 28;
21         a[2] = 32;
22 
23         Car[] cars = new Car[4];
24         cars[0] = new Car("奔驰");
25         System.out.println(a.length); 
26         for(int i=0;i<a.length;i++){
27             System.out.println(a[i]);
28         }
29         
30     }
31 }

 

数组声明和初始化:

一维数组的声明方式有两种:

type[] 变量名;

type 变量名[];

eg: int[] a; int b[];

通过new来创建数组: int[] a = new int[3];

初始化:对数组元素初始化,数组元素相当于对象的成员变量,按照成员变量的规则初始化

1.默认初始化: 默认值跟成员变量的规则一样:数字,整数:0,浮点数0.0,char \u0000,布尔型 0false

2.动态初始化: a[0]=1;for循环赋值 或 用容器来放,大部分容器底层实现是数组

for ( int i = 0;i<a.length;i++) {

  a[i] = i*12;

}

3.静态初始化:  int c[] = {23,34,56,78};  //长度4,索引范围0-3

 1 public class Test02 {
 2     public static void main(String[] args) {
 3         //声明
 4         int[] a;
 5         int b[];
 6         //创建数组对象
 7         a = new int[4];
 8         b = new int[5];
 9         
10         //初始化(对数组元素的初始化)
11         //默认初始化:数组元素相当于对象的成员变量,默认值跟成员变量的规则一样。数字0,布尔false,char\u0000,引用:null
12         //动态初始化:
13         for(int i=0;i<a.length;i++){
14             a[i] = i*12;
15         }
16         
17         //静态初始化
18         int c[] = {23,43,56,78};   //长度:4,索引范围:[0,3]
19         Car[] cars = {
20                         new Car("奔驰"),
21                         new Car("比亚迪"),
22                         new Car("宝马")
23                     };
24         Car c2 = new Car("奔驰");
25         System.out.println(c2==cars[0]);    
26     }
27 }

 

操作对象就是操作引用,引用是地址;数组属于引用类型

 

二维数组:

int[][] a = {{1,2},{3,4,0,9},{5,6,7}};         

二维数组理解参考表格

 1 public class Test01 {
 2     public static void main(String[] args) {
 3 //        int [][] a = {
 4 //                        {1,2},
 5 //                        {3,4,0,9},
 6 //                        {5,6,7}
 7 //                    };
 8         
 9         int[][]  a = new int[3][];
10         a[0] = new int[2];
11         a[1] = new int[4];
12         a[2] = new int[3];
13         
14         a[0][0] = 1;
15         a[0][1] = 2;
16         
17         a[1][0] = 3;
18         a[1][1] = 4;
19         a[1][2] = 0;
20         a[1][3] = 9;
21         
22         a[2][0] = 5;
23         a[2][1] = 6;
24         a[2][2] = 7;
25         
26         System.out.println(a[2][2]);
27     }
28 }
 1 public class Matrix {
 2     
 3     /**
 4      * 打印指定的矩阵
 5      * @param c
 6      */
 7     public static void print(int[][] c){
 8         //打印矩阵
 9         for(int i=0;i<c.length;i++){
10             for(int j=0;j<c.length;j++){
11                 System.out.print(c[i][j]+"\t");
12             }
13             System.out.println();
14         }
15     }
16     
17     /**
18      * 矩阵加法
19      * @param a
20      * @param b
21      * @return
22      */
23     public static int[][]  add(int[][] a,int[][] b){
24         int[][] c = new int[a.length][a.length];
25         for(int i=0;i<c.length;i++){
26             for(int j=0;j<c.length;j++){
27                 c[i][j] = a[i][j]+b[i][j];
28             }
29         }
30         return c;
31     }
32     
33     public static void main(String[] args) {
34         int[][]  a = {
35                         {1,3,3},
36                         {2,4,7},
37                         {6,4,9}
38                      };
39         int[][]  b = {
40                 {3,3,3},
41                 {2,4,7},
42                 {1,4,9}
43         };
44         
45         int[][] c = add(a, b);
46         
47         print(c);
48         
49     }
50 }

 ===============================常用类===============================

String类: 不可变字符序列

StringBuilder类/StringBuffer类: 可变字符序列;同属于抽象类AbstractStringBuilder下的两个类

StringBuilder类,线程不安全,效率高;

StringBuffer类,线程安全,效率低; 

 

根据StringBuilder字符数组,diy,定义数组类,模拟ArrayList

StringBuilder; char[] value;  

MyArrayList  ;   Object[] elements;

天下文章一大抄,主要是想象力,创新(反复的类比,模仿,并创造) 

 

posted on 2016-01-21 14:38  lucifer179  阅读(149)  评论(0编辑  收藏  举报

导航