Java中的数组
package 数组;
import java.util.Iterator;
/**
- java中的数组
- 1.数组是一种引用类型
- 2.数组是一种简单的数据结构,线性结构
- 3.数组是一种容器
- 4.数组对于所有编程语言来说都是重要的数据结构之一,
- Java 语言中提供的数组是用来存储固定大小的同类型元素。
- 5.数组分为:一维数组,二维数组…多维数组
- 6.数组的长度不可改变,数组一旦创建,长度固定
- 数组的使用:
- 数组中存储的元素类型是统一的,每一个元素在内存中所占空间大小是相同的
- 数组中么诶个元素的地址不同,数组的地址跟首元素地址想用
- 知道下标,你就可以快速的计算偏移量,用过首元素的内存地址加上偏移量就可以快速计算出要查找的元素的内存地址
- 数组查找元素的效率非常高
*/public class ArrayTest {
// 数组作为函数的返回值
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
//数组作为函数的参数
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
public static void main(String[] args) {
//下面例子调用printArray方法打印出 3,1,2,6,4和2:
printArray(new int[]{3, 1, 2, 6, 4, 2});
//必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法格式:
int [] Array01; // 推荐使用
//或
int Array02[]; // 效果相同,但基本不使用这种方式
//定义一个长度为3的double类型的数组
double [] dou = new double[3];
//数组静态初始化
/*
* arrayRefVar = {value0,value1,value2....valueX};
* 或者 数组变量的声明和初始化用一条语句完成
* dataType [] arrayRefVar = {value0,value1,value2....valueX};
*/
int [] Array3 = new int [] {1,2,3,4,5};
//数组动态初始化
/*
* arrayRefVar = new dataType[arraySize];
* 或者 数组变量的声明和初始化用一条语句完成
* dataType [] arrayRefVar = new dataType[arraySize];
*/
String [] string = new String[5];
//数组的引用
/*
* java中用过下标来引用数组元素:arrayName[index];
* java会对数组元素要进行越界检查,以保证安全性。每个数组都有一个length属性来指明它的长度
* 例如:arrayIntA.leength 指明数组arrayIentA 的长度
*/
//赋值
Array3 [2] = 9;
//取值
System.out.println("Arra3的第三个元素是:" + Array3[2]);
//for循环遍历数组:在实际开发中,经常需要遍历数组以获取数组中的每一个元素。最容易想到的方法就是for循环
//遍历数组赋值
for (int i = 0; i < string.length; i++) {
string[i] = String.valueOf(i);
}
//遍历数组取值(打印所有数组元素)
for (int i = 0; i < string.length; i++) {
System.out.print(string[i] + "\t");
}
System.out.println("");
double [] db ={1.9,2.9,3.4,3.5};
for (int i = 0; i < db.length; i++) {
System.out.print(db[i] + "\t");
}
System.out.println("");
//计算所有元素的总和
double total = 0;
for (int i = 0; i < db.length; i++) {
total += db[i];
}
System.out.println("该数组元素总和为:" + total);
//查找最大元素
double max = db[0];
for (int i = 0; i < db.length; i++) {
if(db[i] > max) max = db[i];
}
System.out.println("该数组中最大的元素是:" + max);
//foreach循环 : 称为加强型循环,它能在不使用下标的情况下比那里数组。
//打印所有元素(foreach)
for (double d : db) {
System.out.print(d+"\t");
}
//二维数组
int [] [] a = new int[][]{{1,2},{3,4}};
int [] [] b = new int[2][2];
b[0][0] = 0;
b[0][1] = 1;
b[1][0] = 2;
b[1][1] = 3;
//java语言中,把二维数组看作是数组的数组,数组空间不是连续分配的。所以不要求二维数组每一维的大小相同。
int [][] c = new int[][]{{1},{2,3},{4,5,6}};
int [][] d = new int[3][]; //后面的中括号可以不写数字
d[0] = new int[]{1};
d[1] = new int[]{2,3};
d[2] = new int[]{4,5,6};
// 数组中元素类型相同的问题
Apple [] apple = {new Apple(),new Apple()};
Orange [] orange = {new Orange()};
Fruit [] fruit = {new Apple(),new Orange()};//元素类型都是Fruit型的
Object [] o = {1,“2”,true,3.14,new Apple()};//元素类型都是Object型的
}
}
class Apple extends Fruit{
}
class Orange extends Fruit{
}
class Fruit{}