java数组
概述
一维数组初始化
一维数组的引用
多维数组的初始化
多维数组的引用
一.概述
1.数组是最简单的复合数据类型,是有序数据的集合,其中的每个元素具有相同的数组类型,可以用一个统一的数组名和下标来唯一地确定数组中的元素。
2.有一维和多维数组。
3.自动编号从0开始,数组的元素可以使引用类型和基本类型。
二.一维数组初始化
1.arraryName[index]
·index下标,通常整型常熟or表达式,从0开始。
·length指明数组长度(arr.length)
·数组的长度不是在声明时指定,而是在创建时由所开辟的内存单元数目确定。
2.内存分析
申明的时候没有分配元素的存储空间。
·栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
·堆内存:数组和对象,通过new建立的实例都存放在堆内存中。每个试题都有内存地址值。实体中的变量都有默认初始化值。实体不在被使用,会在不确定的时间内被垃圾回收器回收。
3.创建方法
A.先声明后创建
Int intArray[];
intArray = new int[10];
B.在声明的同时创建
Int intArray[] = new int[10];
C.直接赋值
Int[] intArray = {1,2,3,4,5};
三.一维数组的引用
1.测定长度
2.活用下标
3.查找问题
以数组的形式组织和存放数据的数据结构被称为顺序表
A.顺序查找:费时,效率低。
B.二分查找:在有序表中。
4.数组间相互赋值
JAVA允许类型相同,而长度不同的两个数组互相赋值。赋值的结果是两个数组名指向同一数组。
5.向成员方法传递数组元素(单向值传递)
6.向成员方法传递数组(双向地址传递)
7.同类型不同长度的数组引用同一个成员方法(两组不同长度的数据取平均。)
8.数组元素排序(只讨论简单的两种)
A.冒泡排序:相邻元素比较,然后判断是否交换位置,两个for循环。
B.选择排序:每次找出最小的,直接交换。
9.对象数组:当数组元素为对象时,使用之前必须对数组元素进行创建和初始化。(eg一个班级的各个学生的名字、年龄、性别...)
//【示例程序c6_10.java】 设有若干名学生,每个学生有姓名、性别和成绩三个属性,要求将每个学生作为一个对象,建立获取对象名字的成员方法getName和获取对象性别的成员方法getSex,以及输出对象的全部数据成员的成员方法studPrint。
package ch123;
class Student { private String name; private char sex; private double score; Student(String cname,char csex,double cscore){ name = cname; sex = csex; score = cscore; } String getName(){return name;} char getSex(){return sex;} void studPrint(){ System.out.println("Name:"+name+"\tSex:"+sex+"\tScore:"+score); } }
public class asf123 { public static void main(String args[]){ String mname; char msex; int len; Student[] stu = new Student[3]; stu[0] = new Student("Wong",'F',99); stu[1] = new Student("Chen",'F',90); stu[2] = new Student("Qian",'F',93); len = 3; for(int i=0; i stu[i].studPrint(); } mname = stu[2].getName(); msex = stu[2].getSex(); System.out.println("Name 2:"+mname+"\tSex:"+msex); } } |
四.二维数组的初始化
1.声明
类型说明符 数组名[][];
类型说明符[][] 数组名;
2.初始化
类型说明符 数组名[][] = new类型说明符[数组长度][]
类型说明符[][] 数组名= new类型说明符[数组长度][数组长度]
PS:必须指定行数,列数随意。
3.赋值
int[ ][ ] arr1={{3, -9,6},{8,0,1},{11,9,8} };
int[ ][ ] arr1={{3, -9},{8,0,1},{10,11,9,8} };
PS:两个都是合法的,赋值时各子数组元素的个数可以不同。
五.二维数组的引用
1.测定数组的长度及测定数组赋值
“数组名.length”返回的是数组的行数。
“数组名[i].length”返回的是该i行的列数。
2.数组名作为成员方法的参数
Eg.二位数组find out the max