1.数组的基本定义
* 1.数组的定义
* 1.1 数组的声明
String[] names;
int[] scores;//存放一些学生的成绩
* 1.2 数组的初始化
* 第一种:静态初始化,初始化数组与所给数组的同时进行的
names = new String[] {"mary","abby","asd"};
* 第二种:动态初始化,初始化数组与所给数组元素赋值是分开进行
scores = new int[4];
//2.如何调用相应的数组元素:通过数组元素的下角标的方式来调用
//下角标从0开始,到n-1结束,其中n表示数组的长度
scores[0] = 87;
scores[1] = 98;
scores[2] = 67;
scores[3] = 32;
//3.数组的长度,通过数组的length属性
//System.out.println(names.length);
//System.out.println(scores.length);
System.out.println(names[1]);
for (int j = 0; j < 3; j++) {
System.out.println(names[j]);
}
/**
* for(int i=0;i<=stuArr.length;i++){//这里i<=stuArr.length改成i<stuArr.length
* if(stuArr[i]!=null){
* System.out.println(stuArr[i]);
* }
* }
错误提示的意思是数组越界,
举个例子,你建了个数组int [] a = new int[4],
数组的长度是4,分别为a[0]到a[3],而a.length=4,
所以当你i<=a.length就会取到4这个值,而a[4]显然不在你建的数组范围之内,
所以提示数组越界。
*/
* 数组元素的默认初始化值,对于基本数据类型具有默认值。
* 默认值问题分析,内存问题分析
* 数组的定义 int[] n = new int[7];如此格式
2.数组默认初始化问题
对于基本数据类型来说:int short long byte,创建数组以后,默认值为0
int[] scores = new int[3];
scores[0] = 87;
scores[1] = 98;
scores[2] = 67;
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
byte[] grade = new byte[4];
grade[0] = 87;
grade[1] = 98;
grade[2] = 67;
for (int i = 0; i < grade.length; i++) {
System.out.println(grade[i]);
}
- //对于float double 来说,默认值为0.0
float[] f = new float[4];
f[0] = (float) 34.3;
f[1] = (float) 9.3;
f[2] = (float) 2.1;
for (int i = 0; i < f.length; i++) {
System.out.println(f[i]);
}
- //对于char类型,默认值为空格
char[] c = new char[3];
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]);
}
- //对于boolean而言,默认值为false
boolean[] b = new boolean[4];
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
- //对于引用数据类型的数组,默认初始值为null
Person[] pers = new Person[3];
for (int i = 0; i < pers.length; i++) {
System.out.println(pers[i]);
}
* 数组一旦初始化之后,其长度不可变
* 数组分为静态初始化和静态初始化
* 静态初始化 int[] i = new int[]{12,13,14};
int [] i = new int[] {12,13,14};//静态初始化
int [] j = new int[10];//动态初始化
3.二维数组问题
* Action:
* 1.不可能在初始化的时候不指定数组的长度
* 2.二维数组时,不可以采用[][3]的方式,但是可以采用[3][]的方式
*
* 对于我的难点:如何进行二维数组的遍历
* 1.对行进行遍历
* 2.对列进行遍历
* for(int i = 0 ; i <= scores.length ; i++){
* for(int j = 0; j < scores[i] ;j++){
* System.out.println("输出一个东西");
* }
* }
*
举例
public static void main(String[] args) {
int[] scores = new int[10];
//1.二维数组的声明
int[][] scores1;
//2.二维数组的静态初始化
scores1 = new int[][] {{34,45},{56,12},{76,87,23,45}};
//3.二维数组的动态初始化
/**
* 二维数组的定义:
* 相当于行数和列数,[行][列]
*/
//scores1 = new int[3][4];
String[][] name = new String[2][4]; //二维数组的动态初始化方式一
String[][] names = new String[2][]; //二维数组的动态初始化方式二
names[0] = new String[5];
names[1] = new String[9];
//names[2] = new String[4];
/**
* 错误的初始化方式
* names = new String[][4];
* names = new String[][];
*/
int[][] i = new int[2][1]; //int[] i[] = new int[3][2]; 两种写法都正确
i[1][0] = 39;
System.out.println(i.length);
System.out.println(i[0].length);
System.out.println(names.length);
System.out.println(names[0].length);
//4.如何遍历二维数组
for (int j = 0; j < scores1.length; j++) { //控制行数
//代表每个数组又变成一维的
for (int j2 = 0; j2 < scores1[j].length; j2++) { //内层控制列数,一维数组类似
System.out.print(scores1[j][j2] + " ");
}
System.out.println();
//5.二维数组的内存结构
int [] x,y[];
//相当于:int x[];//一维
//int[] y[];//二维
y = new int[3][2];
x = y[0];
x[0] = y[1][3];
//语法可以通过,编译即可通过
}
}
4.计算数组的工具
package com.test;
public class TestArrayUtil {
//计算数组的最大值
public int getMax(int[] arr) {
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if(max < arr[i]) {
max = arr[i];
}
}
return max;
}
//计算数组的最小值
public int getMin(int[] arr) {
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if(min > arr[i]) {
min = arr[i];
}
}
return min;
}
//遍历数组元素
public void printArray(int[] arr) {
System.out.print("{");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.print("}");
System.out.println();
}
//求数组的平均数
public int avgArr(int[] arr) {
int sum = getSum(arr);
return sum/arr.length;
}
//求数组的总和
public int getSum(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
//求数组的反转
public int[] Reverse(int[] arr) {
for (int i = 0, j = arr.length - 1; i < j ; i++,j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
//求数组的复制
public int[] copy(int[] arr) {
int[] arr1 = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
return arr1;
}
//对数组的排序
public void sort(int[] arr,String desc) {
if(desc == "asc") { //asend:升序排列(从小到大排列)
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
else if(desc == "desc") {//从大到小降序排列
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}else {
System.out.println("您输入的排序方式有误!");
}
System.out.println();
printArray(arr);
}
//交换数组中的数组元素
public void swap (int arr[],int i,int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}