Java复习一:https://blog.csdn.net/Zhang_Yixuan_ss/article/details/85415994
Java复习二:https://blog.csdn.net/Zhang_Yixuan_ss/article/details/85798342
数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一位数组、二维数组、多维数组。数组属于引用数据类型,因此肯定会涉及内存分配。数组声明后实际上是在栈内存中保存了此数组的名称,接下来便是要在堆内存中配置数组所需的内存,其中“长度”是告诉编译器,所声明的数组要存放多少个元素,而“new”则是命令编译器根据括号里的长度开辟空间。
1.数组的动态初始化
数组的声明: 数据类型[] 数组名 =new 数据类型[长度]
或者 数据类型 数组名称[] = new 数据类型[长度]
声明数组: |
数据类型 数组名称[] = null |
开辟空间: |
数组名称= new数据类型[长度] |
数组的访问通过索引完成,即:"数组名称[索引]",但是要注意素组索引从0开始,因此数组下标等于数组长度-1,如果超过数组索引范围则会产生异常。数组本身是一个有序的集合操作,因此对数组的内容操作采用循环来输出,数组是一个有限的数据集合因此使用for循环。
数组的长度通过 数组名称.length 来获取数组的引用传递:属于引用数据类型,因此也一定可以引用,不同的栈空间可以被不同的堆内存来指向,发生引用传递。例如:
int data = new int[3];
int temp[] = data;
int data [] = null; |
开辟栈空间 |
data =new int [3] |
开辟堆内存 |
数组的缺陷是,长度固定。数组的优点是可以简化对多个同类型的变量的定义。
2.数组的静态初始化
格式:数据类型 数组名[] = {初值0,初值1,初值2,......,初值n}
public class ArrayDemo{
public static void main(String[] args){
int score[] = {91,92,93,94,95};
for(int x = 0;x
1.二维数组动态初始化:
格式: 数组类型 数组名称 [] [] = new 数据类型[行个数][列个数]
二维数组的输出需要两层循环,外部循环控制行,内部循环控制列
for(int x= 0; x
2.二维数组的静态初始化:
格式:数据类型 数组名[][] = {{第0行初值},{第1行初值},......,{第n行初值}};
1.数组排序
int age [] = {31,30,32,8,19};
java.util.Arrays.sort(age);
//其中sort方法可以针对各类数据类型
2.数组copy
int i1 [] = {1,2,3,4,5,6,7,8,9};//源数组
int i2 [] = {11,22,33,44,55,66};//目标数组
System.arraycopy(i1,3,i2,1,3);//copy函数调用
//括号里的为(源数组,源数组开始点,目标数组,目标数组开始点,拷贝长度)
即方法中可以接收的参数不再是固定的,而是随着需要传递的,可变参数的定义格式如下:
返回值类型 方法名称(类型 ... 参数名称){}
所有可变参数接收后都是以数组的形式保存下来,所以直接按照数组的方式接受即可。
public class Demo
{
public static void main(String[] args)
{
System.out.println("不传参数");
fun();
System.out.println("传一个参数");
fun(1);
System.out.println("传五个参数");
fun(1,2,3,4,5);
}
public static void fun(int ... ary){
for(int i = 0;i
类 对象数组名称[] = new 类[数组长度];
例子:动态方法
class Person{
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
public class Demo{
public static void main(String args[]) {
//类名称 数组名称[] = new 类名称[长度];
Person per[] = new Person[3];
System.out.println("数组声明");
//对象数组初始化之前,每一个元素都是默认值
for(int x = 0 ; x < per.length;++x) {
System.out.println(per[x]+"、");//因为只是开辟好了空间,所以都是默认值
}
//分别为数组中的每个元素初始化,每一个对象,都需要单独实例化
per[0] = new Person("张三");
per[1] = new Person("李四");
per[2] = new Person("王五");
System.out.println("\n====对象实例化====");
for(int x = 0 ; x
例子:静态方法
class Person{
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
public class Demo{
public static void main(String args[]) {
//类名称 数组名称[] = new 类名称[长度];
Person per[] ={new Person("张三"),new Person("李四"),new Person("王五")};
System.out.println("\n====数组输出====");
for(int x = 0 ; x