java数据类型
1、基本数据类型
2、引用类型:类名 变量名 = new 类名;
数组就是一种引用类型
相同数据类型的集合用数组来表示
索引
- 声明和初始化数组
- 使用数组(包括foreach循环)
- 练习
声明和初始化数组
静态初始化
int[] arr1 = new int[] { 1, 2, 3, 4, 5 };
//简洁的方式
int[] arr2 = { 6, 7, 8, 9 };
动态初始化,小心越界
int[] arr3 = new int[5];
数组元素有一定的规律性,用循环的方式赋值
for (int i = 0; i < 5; i++)
{
// i是下标或索引,索引是从0开始计数,索引必须小于数组大小
arr3[i] = i;
}
如何访问最后一个元素,数组名[ 数组的大小 - 1 ]
arr3[4] = 0;
静态初始化二维数组
在java中,没有所谓二维数组或者多维数组,只有一维数组
二维数组,数组元素是数组
int[][] arrArr = { { 1 }, { 2, 3 }, { 4, 5, 6 } };
int[][] arrArr2 = new int[][] { { 1 }, { 1, 2 }, { 4, 5, 6 } };
动态初始化二维数组
int[][] arrArr3 = new int[3][];
int[] a1 = { 1 };
int[] a2 = { 2, 3 };
int[] a3 = { 4, 5, 6 };
arrArr3[0] = a1;
arrArr3[1] = a2;
arrArr3[2] = a3;
使用数组
for (int i = 0; i < arrArr3.length; i++)
{
for (int j = 0; j < arrArr3[i].length; j++)
{
System.out.print(arrArr3[i][j] + "\t");
}
System.out.println();
}
foreach循环
foreach循环,针对数组和集合
foreach循环,不需要手动的修改循环变量,每循环一次,循环变量自动等于数组中下一个元素的值;
也不需要指出我们要循环多少次,自动循环数组大小,循环变量相当于临时变量,对循环变量的修改并不影响数组元素本身。
System.out.println("------------------foreach循环---------------------");
for (int i : arr1)
{
System.out.print("arr1[" + i + "]=" + i + "\t");
i *= 10;
}
System.out.println();
System.out.println("------------------foreach循环2--------------------");
for (int i : arr1)
{
System.out.print("arr1[" + i + "]=" + i + "\t");
}
System.out.println();
练习
1、输出一维数组:8 3 6 1 4 18 ,并输出其中最大值。
//练习1代码如下:
package Lecture;
public class ExeMax {
public static void main(String[] args) {
int[] arr = { 8, 3, 6, 1, 4, 18 };
System.out.println("输出一维数组:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
int max = arr[0];
//每個數組都有一個屬性length,它代表數組的大小
for (int j = 1; j < arr.length; j++) {
if (arr[j] > max) {
max = arr[j];
}
}
System.out.println("\n一维数组的最大值为:" + max);
}
}
2、对下列数组进行行列互换
行列互换前
1 2 3
4 5 6
7 8 9
行列互换后
1 4 7
2 5 8
3 6 9
//练习2代码如下:
package Lecture;
import java.util.Arrays;
public class Practice3 {
public static void main(String[] args) {
int[] arr1=new int []{1,2,3};
int[] arr2=new int []{4,5,6};
int[] arr3=new int []{7,8,9};
System.out.println("行列互换前: ");
//行列互换前第一行
for(int n:arr1)
{
System.out.print(" "+n);
}
System.out.println();
//行列互换前第二行
for(int n:arr2)
{
System.out.print(" "+n);
}
System.out.println();
//行列互换前第三行
for(int n:arr3)
{
System.out.print(" "+n);
}
System.out.println();
System.out.println("行列互换后: ");
//行列互换后第一行
Arrays.fill(arr1,1,2,4);
Arrays.fill(arr1,2,3,7);
for(int n:arr1)
{
System.out.print(" "+n);
}
System.out.println();
//行列互换后第二行
Arrays.fill(arr2,0,1,2);
Arrays.fill(arr2,1,2,5);
Arrays.fill(arr2,2,3,8);
for(int n:arr2)
{
System.out.print(" "+n);
}
System.out.println();
//行列互换后第三行
Arrays.fill(arr3, 0,1,3);
Arrays.fill(arr3, 1,2,6);
Arrays.fill(arr3, 2,3,9);
for(int n:arr3)
{
System.out.print(" "+n);
}
System.out.println();
}