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) 编辑 收藏 举报