数组的定义与使用
数组的基本定义:某一数量的相同的数据类型的变量的集合。涉及到内存的分配,必定关乎new关键字.数组本身就是引用数据类型,就一定会发生引用传递.
声明数组的初始化:
数据类型 [] 数组名称 = new 数据类型 [长度]; //一般常用这种初始化方式
数据类型 数组名称 [] = new 数据类型 [长度];
数组静态初始化:在数组定义的时候就为其设置好了里面的内容
简化格式:数据类型[] 数组名称 = {数据1,数据2,数据3....};
完整格式:数据类型[] 数组名称 = new 数据类型[]{数据1,数据2,数据3....};//一般常用完整格式
数组的索引长度为0~长度-1 也可以通过(数组名称.length)获得数组的长度
例子:
public class JavaDemo{
public static void main(String[] args){
//使用数组的动态初始化定义三个int类型的数据
int[] data = new int[3];
//数组的赋值形式之一
data[0] = 11;
data[1] = 23;
data[2] = 56;
for(int x = 0; x < data.lenght;x++){
System.out.println(data[x]);
}
}
}
数组引用传递
数组内存分析
数组属于引用数据类型,一定要开辟堆内存,不然会出现异常,必须一定要实例化后才能使用
Foreach迭代输出:为了防止数组下标使用不当而引起的数组越界问题而创建的函数格式
代码格式: for(数据类型 变量1:数组|集合){}
这个循环会自动将数组下标的变量赋值给变量1;
public class JavaDemo{
public static void main(String[] args){
//使用数组的静态初始化定义三个int类型的数据
int[] data = new int[]{1,2,3};
for(int temp : data){
//自动循环,将data数组每一个内容交给temp
system.out.println(temp);
}
}
二维数组
定义格式 数据类型 [][] 数组名称 = new 数据类型[行个数][列个数];
要注意在定义二维数组时,至少要定义一维数组的长度
如果用foreach输出
for(int temp[] : data){
for(int num:temp){
System.out.println(num+”,”)
}
System.out.println();//换行
}
数组与方法
对于引用数据类型而言,主要的特点是可以通过方法进行引用传递,可以通过方法返回数据
例
内存分析
通过方法返回数据
通过方法修改数组内同
数组排序案例
数组转置案例
这个产生了无用的垃圾空间
做法二:可以用一个数组转置
数组转置的次数为数组长度/2
减少了垃圾空间但是也增加了时间复杂度
数组相关类:
数组有一个函数包名为java.util.Arrays;
函数使用的方式为:java.util.Arrays.sort(数组名称)
数组拷贝:
方法可变参数
可变参数的本质还是数组.,变种数组,一些程序类数据,是开发时可以避免数组的调用
对象数组
类的数组为对象数组
动态初始化:类 对象数组名称[] = new 类[长度]; //每一个元素默认值为NULL
静态初始化:类 对象数组名称[] = new 类[]{实例化对象1,实例化对象2....}
例
静态初始化
所有的开发都离不开对象数组,缺陷是数组长度固定
类关联结构
引用传递时java开发与设计过程中最为重要的技术组成,对于引
用传递应用分析
该操作来利用了引用关系
自身关联
合成设计模式
数据表与简单java类的映射转换
一对多映射
多对多:从来不管记录表
复杂多对多
关系表一般不做类