数组
数组声明开辟语法:
数据类型 数组名称[] = new 数据类型[长度];
分步语法:数据类型 数组名称 = null;数组名称 = new 数据类型[长度];
数组名称指向栈内存,栈内存存储数组数据内容的堆内存地址。
数组的首位置换思路
对象数组静态化和动态化定义。
数组定义格式 数据类型 数组名称 = new 数据类型[]{值,值}
二维数组可按照一维角度展开显示,也可以使用java.util.Arrays.sort()函数进行升序排列!
数组和方法参数的传递(难点)
数组转置
对象数组:对象数组就是将多个对象交给数组统一管理。
数组的天生缺点:长度固定。
class ArrayDemo0215{
public static void main(String args[]){
//int intA[] = new int[7]{1,2,5,7,9,12,100};
//ArrayDemo0215.java:3: 错误: 同时使用维表达式和初始化创建数组是非法的
int intA[] = new int[]{1,2,3,4,5,6,7,8,9,10};
//数组定义格式 数据类型 数组名称 = new 数据类型[]{值,值}
//数组定义后只能通过下标|索引改变数组的赋值。
// 如下分步定义失败
//int intA[] = new int[7];
//intA = int[]{1,2,5,7,9,12,100};
print(intA);
double douA[] = new double[]{10,17,18.8,20.0};
print(douA);
//二位数组示范
int intAB[][] = new int[][]{
{1,2,13,4,5},
{7,8,9,810,11},
{13,814,15,16,17},
{19,280,21,22,23},
{285,26,287,28,29},
};
printTwoDimm(intAB);
System.out.println("\r数组排序 ");
int arrayAZ[] = new int[]{2,5,12,3,99};
print(arrayAZ);
sort(arrayAZ);
print(arrayAZ);
//数组转置两种方式
System.out.println("转置前数组:");
print(intA);
for(int x = 0 ; x <= (intA.length/2); x++){
int temp = intA[x];
intA[x] = intA[intA.length-1-x];
intA[intA.length - 1- x ] = temp;
}
print(intA); //转置后数组
int temp[] = new int[intA.length];
for(int x = 0 ; x < intA.length ; x++){
temp[x] = intA[intA.length -1 - x];
}
intA = temp;
print(intA); //二次转置后数组等于原数组
//转置正方形的二维数组
for(int x = 0 ; x < intAB.length; x++ ){
for(int y = 0 ; y < intAB.length ; y++){
if( x > y ){ //左下侧数据主动和右上侧数据置换
int tempAB = intAB[x][y];
intAB[x][y] = intAB[y][x];
intAB[y][x] = tempAB ;
}
}
}
printTwoDimm(intAB);
int array0216[] = new int[]{2,5,12,3,9,1,4,88};
print(array0216);
java.util.Arrays.sort(array0216);
print(array0216);
//print(java.util.Arrays.sort(array0216));
//???合并执行报错如下:ArrayDemo0215.java:66: 错误: 此处不允许使用 '空' 类型print(java.util.Arrays.sort(array0216))
//尝试排序二位数组,可以成功排序
for(int x = 0 ; x < intAB.length; x++ ){
java.util.Arrays.sort(intAB[x]);
}
printTwoDimm(intAB);
print(intAB[4]);//二位数组可分维打印输出
//对象数组 静态实例化
Book bkObjectArray[] = new Book[]{
new Book("java",67.8),
new Book("jsp",77.8),
new Book("android",87.8)
};
//对象数组动态化
Book bkObjectArray2[] = new Book[3];
//bkObjectArray[0] = {"java",67.8};
bkObjectArray2[0] = new Book("java",867.8) ;
bkObjectArray2[1] = new Book("jsp",877.8) ;
bkObjectArray2[2] = new Book("android",887.8) ;
for( int x = 0 ; x < bkObjectArray.length ; x++){
System.out.println(bkObjectArray[x].getInfo());
}
for( int x = 0 ; x < bkObjectArray2.length ; x++){
System.out.println(bkObjectArray2[x].getInfo());
}
}
public static void print(int arr[]){
System.out.println("\r 整型数组");
for(int x = 0 ; x < arr.length ; x++){
System.out.print(arr[x] + "\t");
}
System.out.println("");
}
public static void print(double arr[]){
//System.out.println("\r 整型数组");
for(int x = 0 ; x < arr.length ; x++){
System.out.print(arr[x] + "\t");
}
System.out.println("");
}
public static void printTwoDimm(int tempAB[][]){
System.out.println("\r 二维数组");
for(int x = 0 ; x < tempAB.length ; x++){
for(int y = 0 ; y < tempAB[x].length ; y++){
System.out.print( tempAB[x][y] + "\t"); //内层循环控制数据内容
}
System.out.println();
}
}
public static void sort(int arr[]){ //数组倒序排列
for(int x = 0 ; x <= arr.length ; x++){
for(int y = 0 ; y < arr.length-1 ; y++){
if(arr[y] < arr[y + 1]){
int temp = arr[y];
arr[y] = arr[y + 1];
arr[y+1] = temp;
}
}
}
System.out.println();
}
}
class Book{
private String title;
private double price;
public Book(String t,double p){
title = t ;
price = p ;
}
public String getInfo(){
return "书名:" + title + "价格:" + price ;
}
}