尚硅谷_宋红康_Java中的数据存储机制(1) —数组

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二维数组中有3个一维数组。 每个一维数组都是默认初始化值null (注意:区别于格式1) 可以对这个三个一维数组分别进行初始化 arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2]; 注: int[][]arr = new int[][3]; //非法
3. 从键盘读入学生成绩,找出最 高分,并输出学生成绩等级。 成绩>=最高分-10 等级为’A’ 成绩>=最高分-20 等级为’B’ 成绩>=最高分-30 等级为’C’ 其余 等级为’D’
提示:先读入学生人数,根据人数创建 int数组,存放学生成绩。
多维数组
二维数组[][]:数组中的数组 格式1(动态初始化):int[][] arr = new int[3][2]; 定义了名称为arr的二维数组 二维数组中有3个一维数组 每一个一维数组中有2个元素 一维数组的名称分别为arr[0], arr[1], arr[2] 给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78; 格式2(动态初始化):int[][] arr = new int[3][];
动态初始化:数组声明且为数组元素分配空间与赋值的操作 分开进行
int[] arr = new int[3]; arr[0] = 3; arr[1] = 9; arr[2] = 8;
MyDate dates[]; dates = new MyDate[3]; dates[0] = new MyDate(22, 7, 1964); dates[1] = new MyDate(1, 1, 2000); dates[2] = new MyDate(22, 12, 1964);
处内存状态 栈内存
堆内存
m
创建对象数组 (3)
创建元素为引用类型(对象)的数组演示
public class Test{ 栈内存 public static void main(String args[]){ MyDate[] m; m = new MyDate[10]; for ( int i=0; i<10; i++ ) { m[i] =new MyDate(i+1, i+1,1990+i); m[i].display(); } } main m }
myInt[0]
myInt[1]
1
4 6 0
myInt[4]
myInt: 0x1234 栈

创建基本数据类型数组 (1)
Java中使用关键字new创建数组对象 创建基本数据类型一维数组对象 public class Test{ public static void main(String args[]){ int[] s; s = new int[10]; for ( int i=0; i<10; i++ ) { s[i] =2*i+1; System.out.println(s[i]); } main s } 处内存状态 }
栈内存
MyDate[] 对象
***** ***** ***** null null null null null null null
1 1 1990 2 2 1991 3 3 1992
m
堆内存
heap stack 1 1 **** **** **** 3 **** 3 1992 4 4 myDate: 1993 2 2 1991 1990
练习2:获取arr数组 中所有元素的和。使 用for的嵌套循环即可。
j=0
3 2
j=1
8 7
0x1432 0x1234
0x1432 null null 0x1452
0x1452 null 0x1652
0
0
0
0 12
0
0x1652 0 x:0x1234 stack heap 0 0 0
格式3(静态初始化):int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
数组元素的引用
定义并用运算符new为之分配空间后,才可以引用数组中的每 个元素; 数组元素的引用方式:数组名[数组元素下标] 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i]; 数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1;如int a[]=new int[3]; 可引用的数组元素为a[0]、 a[1]、a[2] 每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数) 数组一旦初始化,其长度是不可变的
一维数组声明
一维数组的声明方式:
type var[] 或 type[] var; 例如:
int a[]; int[] a1; double b[]; Mydate[] c; //对象数组
Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法
一维数组初始化
练习1
1.(1)定义类Pritimive,在类中定义一个有3个元素的boolean类型的 数组t作为其成员变量。数组元素未赋值。 定义类Array1,在Array1的main()方法中创建Pritimive对象d, 输出其成员变量t的三个元素值。 练习目的:检验基本数据类型数组创建时的自动赋值。 (2)给对象d的成员变量t赋值为{true,true,true},并输出t的三个元 素值。 2. 定义类Student,包含三个属性:学号number(int),年级 state(int),成绩score(int)。 创建20个学生对象,学号为1到20,年 级和成绩都由随机数确定,打印出3年级(state值为3)的学生信息。 提示:生成随机数:Math.random(),返回值类型double; 四舍五入取整:Math.round(double d),返回值类型long。
静态初始化:在定义数组的同时就为数组元素分配空间并赋 值。 MyDate dates[] = { int a[] = new int[]{ 3, 9, 8}; new MyDate(22, 7, 1964), int[] a = {3,9,8}; new MyDate(1, 1, 2000), new MyDate(22, 12, 1964) }
int[]对象
0 0 0 0 0 0 0 0 0 0
堆 内 存
创建基本数据类型数组 (3)
创建基本数据类型一维数组对象
public class Test{ 栈内存 public static void main(String args[]){ int[] s; s = new int[10]; for ( int i=0; i<10; i++ ) { s[i] =2*i+1; System.out.println(s[i]); } main s } 处内存状态 }
Java中的数据存储 机制(1) —数组
讲师:宋红康
新浪微博:尚硅谷-宋红康
来自百度文库
数 组
数组是多个相同类型数据的组合,实现对这些数据的统 一管理 数组中的元素可以是任何数据类型,包括基本类型和引 用类型
基本数据类型的默认初始化值为0 引用数据类型的默认初始化值为null
数组属引用类型,数组型数据是对象(object) ,数组中的 每个元素相当于该对象的成员变量
int[]对象
1 3 5 7 9 11 13 15 17 19
堆 内 存
创建对象数组 (1)
创建元素为引用类型(对象)的数组
class MyDate{ private int day; private int month; private int year; public MyDate(int d, int m, int y){ day = d; month = m; year = y; } public void display(){ System.out.println(year + "-" + month + "-" + day); } }
0x9876 1990 0x5435 null 0x9876 null null null 12 12 1991 2 12 1999 1
14
md:0x5435 stack:存放声明的 引用,局部变量
2000 3
5
heap:存放程序new出来的“东西”
int myInt = new int[5]; 0x1234 12
int[][] i = new int[3][2];
i[0][1] = 12;
12
i[0]
i[1] i[2]
int[][] x = new int[3][]; x[0] = new int[3]; x[1] = new int[2]; x[2] = new int[4]; x[1][0] = 12;
创建对象数组 (2)
创建元素为引用类型(对象)的数组演示
public class Test{ public static void main(String args[]){ MyDate[] m; m = new MyDate[10]; for ( int i=0; i<10; i++ ) { m[i] =new MyDate(i+1, i+1,1990+i); m[i].display(); } } main }
数组元素的默认初始化
数组是引用类型,它的元素相当于类的成员变量,因 此数组一经分配空间,其中的每个元素也被按照成员 变量同样的方式被隐式初始化。例如:
public class Test { public static void main(String argv[]){ int a[]= new int[5]; System.out.println(a[3]); //a[3]的默认值为0 } }
int[] myInt = new int[5]; for(int i = 0;i < myInt.length;i++){ sysout(myInt[i]); myInt[i] = 2*i+1; sysout(myInt[i]);
0x1234
}
1
3 5 7
9
堆 heap:程序new出 来的东西
myInt:0x1234 栈 stack
栈内存
堆 内 存
创建基本数据类型数组 (2)
创建基本数据类型一维数组对象
public class Test{ public static void main(String args[]){ int[] s; 栈内存 s = new int[10]; //int[] s=new int[10]; //基本数据类型数组如果没有赋初值, //Java自动给他们赋默认值。 for ( int i=0; i<10; i++ ) { s[i] =2*i+1; System.out.println(s[i]); } main s } 处内存状态 }
定义一个名称为arr的二维数组,二维数组中有三个一维数组 每一个一维数组中具体元素也都已初始化 第一个一维数组 arr[0] = {3,8,2}; 第二个一维数组 arr[1] = {2,7}; 第三个一维数组 arr[2] = {9,0,1,6}; 第三个一维数组的长度表示方式:arr[2].length; 注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。 Java中多维数组不必都是规则矩阵形式 j i i=0 i=1
处内存状态
MyDate[]对象
null null null null null null null null null null
堆内存
创建对象数组 (4)
Java中使用关键字new 创建数组对象
public class Test{ public static void main(String args[]){ MyDate[] m; m = new MyDate[10]; for ( int i=0; i<10; i++ ) { m[i] =new MyDate(i+1, i+1,1990+i); m[i].display(); } } } main for循环执行三次后内存状态
相关文档
最新文档