1.一维数组:数组元素类型决定了数组的数据类型。它可以是java中任意的数据类型,包括基本数据类型和其他引用类型。数组名字为一个合法的标识符,符号"[ ]"指明该变量是一个数组类型变量。
声明一维数组的两种方法:
1.数组元素类型 数组名字[ ];
2.数组元素类型[ ] 数组名字;
int arr[];
double[]dou;
注意声明完数组后,还不能访问它的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,要想真正使用数组,还要为它分配内存空间。在为数组分配内存空间时必须指明数组长度,为数组分配内存空间的语法如下:
数组名字=new 数组元素类型[数组元素的个数];
注意数组元素下标是从0开始的。
声明与分配一起执行:
数组元素类型 数组名=new 数组元素类型[数组元素的个数];
int month[]=new int[12];
2.初始化一维数组:
int a[]={1,2,3};//第一种方法
int b[]=new int[]{4,5,6};//第二种方法
int c[]=new int[3];//第三种方法
c[0]=7;//给第一个元素赋值
c[1]=8;//给第二个元素赋值
c[2]=9;//给第三个元素赋值
3.获取数组长度
arr.length
arr:数组名;
length:数组长度属性,返回int 值
public class test1 {
public static void main(String[]args){
char a[]={'A','B','C','D'};//创建一维数组
System.out.println("数组a的长度为:"+a.length);//输出
char b[]=a;//创建一维数组b,直接等于数组a
System.out.println("数组b的长度为:"+b.length);//输出
}
}
4.使用一维数组
public class test2 {
public static void main(String[] args) {
int day[]=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};//创建并初始化一维数组
for(int i=0;i<12;i++){//利用循环将信息输出
System.out.println((i+1)+"月有"+day[i]+"天");//输出的信息
}
}
}
数组越界:
public class test3 {
public static void main(String[] args) {
int a[]=new int[3];//最大下标为2
System.out.println(a[3]);//下标越界!
}
}
运行结果:
5.二维数组
二维数组可以看成是特殊的一维数组
声明方法:
1.数组元素类型 数组名字[ ][ ];
2.数组元素类型[ ][ ] 数组名字;
int tdarr1[][]; char[][]tdarr2;
分配内存的方式:
int a[][]; a=new int[2][4];//直接分配行列 int b[][]; b=new int[2][];//先分配行,不分配列 b[0]=new int[2];//给第一行分配列 b[1]=new int[2];//给第二行分配列
注意:创建二维数组时候,可以只声明”行“的长度,而不声明”列“的长度
但如果不声明”行“的长度的话,就是错误写法
6.初始化二维数组
public class test4 {
public static void main(String[] args) {
int tdarr1[][]={{1,3,5},{5,9,10}};//定义一个二维数组并初始化
int tdarr2[][]=new int[][]{{65,55,12},{92,7,22}};//定义一个二维数组并初始化
int tdarr3[][]=new int[2][3];//先给数组分配内存空间
tdarr3[0]=new int[]{6,54,71};//给第一行分配一个一维数组
tdarr3[1][0]=63;//给第二行第一列赋值为63
tdarr3[1][1]=10;//给第二行第二列赋值为10
tdarr3[1][2]=7;//给第二行第三列赋值为7
}
}
7.使用二维数组
public class test5 {
public static void main(String[]args){
char arr[][]=new char[4][];//创建一个4行的二维数组
arr[0]=new char[]{'春','眠','不','觉','晓'};//为每一行赋值
arr[1]=new char[]{'处','处','闻','啼','鸟'};
arr[2]=new char[]{'夜','来','风','语','声'};
arr[3]=new char[]{'花','落','知','多','少'};
System.out.println("-----横版-----");//输出信息
for(int i=0;i<4;i++){//循环4行
for(int j=0;j<5;j++){//循环5列
System.out.print(arr[i][j]);//输出数组中的元素
}
if(i%2==0)//判断i是否为偶数
{ System.out.println(",");//如果是一、三句,输出逗号
}else{System.out.println("。");//如果是二、四句,输出句号
}
}
System.out.println("\n-----竖版-----");//输出信息
for(int j=0;j<5;j++){//列变行
for(int i=3;i>=0;i--){//行变列,反序输出
System.out.print(arr[i][j]);//输出数组中的元素
}
System.out.println();//换行
}
System.out.println("。 , 。 ,");//输出信息
}
}
public class test7 {
public static void main(String[] args) {
int a[][]=new int[3][];//创建二维数组,指定行数不指定列数
a[0]=new int[]{52,64,85,12,3,64};//第一行分配6个元素
a[1]=new int[]{42,99,2};//第二行分配3个元素
a[2]=new int[]{285,61,278,2};//第三行分配4个元素
for(int i=0;i<a.length;i++){
System.out.print("a["+i+"]中有"+a[i].length+"个元素,分别是:");
for(int tmp:a[i]){//foreach循环输出数组中的元素
System.out.print(tmp+" ");//输出信息
}
System.out.println();//换行
}
}
}
8.遍历数组:就是获取数组中的每一个元素。通常遍历数组都是使用for循环来实现。
public class test8 {
public static void main(String[] args) {
int b[][]=new int[][]{{1},{2,3},{4,5,6}};//定义二维数组
for(int k=0;k<b.length;k++){
for(int c=0;c<b[k].length;c++){//循环遍历二维数组中的每一个元素
System.out.print(b[k][c]);//将数组中元素输出
}
System.out.println();
}
}
}
填充和批量替换数组元素
数组中的元素定义完后,可通过Arrays类的静态方法fill()来对数组中的元素进行分配,可以起到填充和替换的效果。
语法如下:
Arrays.fill(int[]a,int value)
a:要进行元素分配的数组名
value:要存储数组中所有元素的值。
import java.util.Arrays;//导入java.util.Arrays的类 public class test6 { public static void main(String[] args) { int arr[]=new int[5];//定义数组并给定区间长度 Arrays.fill(arr,8);//使用fill()的方法填充数组 for(int i=0;i<arr.length;i++){//利用for循环遍历数组 System.out.println("第"+i+"个元素是:"+arr[i]);//输出数组中每一个元素 } } }
fill(int[]a,int fromlndex,int tolndex,int value)
该方法将指定的int 值分配给int 型数组指定范围中的每一个元素。填充的范围从索引fromlndex(包括)一直到索引tolndex(不包括)。如果fromlndex==tolndex,则填充范围为空。
语法如下:
————————————————
版权声明:本文为CSDN博主「软件一班 巫昊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wuhao20021007/article/details/123474158Arrays.fill(int[]a,int fromlndex,int tolndex,int value)
a:要进行分配的数组。
fromlndex:要使用指定值填充的第一个元素的索引(包括)。
tolndex:要使用指定值填充的最后一个元素的索引(不包括)。
value:要存储在数组所有元素中的值。
import java.util.Arrays; public class test2 { public static void main(String[] args) { char arr[]=new char[]{'1','8','6','1','2','3','4','5','6','7','8'};//定义数组并赋值 Arrays.fill( arr,3,7,'*');//使用fill()方法对数组进行填充 for(int i=0;i<arr.length;i++){//遍历数组并输出数组中的每一个元素 System.out.print(arr[i]);//输出信息 } } }
9.复制数组
1.copyOf()方法
Arrays.copyOf(arr,int newlength)
arr:要进行复制的数组。
newlength:int型常量,指定赋值后的新数组的长度。如果新数组的长度大于数组arr的长度,则用0填充,char用null来填充;如果复制后的数组长度小于数组arr的长度,则会从数组的第一个元素开始截取。
import java.util.Arrays;//导入java.util.Arrays类
public class test5 {
public static void main(String[] args) {//主方法
int arr[]=new int[]{23,42,12};//定义数组
int newarr[]=Arrays.copyOf(arr, 5);//复制数组arr
for(int i=0;i<newarr.length;i++){//循环变量复制后的新数组
System.out.println("第"+i+"的元素:"+newarr[i]);//将新数组输出
}
}
}
2.copyOfRange()方法
语法:
Arrays.copyOfRange(arr,int fromlndex,int tolndex)
import java.util.Arrays;//导入java.util.Arrays类
public class test6 {
public static void main(String[] args) {//主方法
int arr[]=new int[]{23,42,12,84,10};//定义一个int型数组并初始化
int newarr[]=Arrays.copyOfRange(arr,0,3);//复制数组
for(int i=0;i<newarr.length;i++){//控制循环,遍历数组
System.out.println(newarr[i]);//将数组中的每一个元素输出
}
}
}
冒泡排序:
public class BubbleSort {
/**
* 冒泡排序方法
*
* @param array
* 要排序的数组
*/
public void sort(int[] array){
for(int i=1;i<array.length;i++){
for(int j=0;j<array.length-i;j++){
if(array[j]>array[j+1]){
int temp=array [j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
showArray(array);
}
/**
* 显示数组中的所有元素
*
* @param array
* 要显示的数组
*/
public void showArray(int[]array){
System.out.println("冒泡排序的结果:");
for(int i:array){
System.out.print(i+" ");
}System.out.println();
}
public static void main(String[]args){
int[]array={63,4,24,1,3,15};
BubbleSort sorter=new BubbleSort();
sorter.sort(array);
}}
选择排序:
public class SelectSort {
/**
*直接选择排序法
*https://developer.android.com/studio/index.html
*@param array
*要排序的数组
*/
public void sort(int[]array){
int index;
for(int i=1;i<=array.length;i++){
index=0;
for(int j=1;j<=array.length-i;j++){
if(array[j]>array[index]){
index=j;
}
}
int temp=array[array.length-i];
array[array.length-i]=array[index];
array[index]=temp;
}
showArray(array);
}
/**
* 显示数组中的所有元素
* @param array
* 要显示的数组
*/
public void showArray(int[]array){
System.out.println("选择排序的结果为:");
for(int i:array){
System.out.print(i+" ");
}
System.out.println();
}
public static void main(String[]args){
int[]array={63,4,24,1,3,15};
SelectSort sorter=new SelectSort();
sorter.sort(array);
}
}
10.Array.Sort()方法:
public class test9 {
public static void main(String[] args) {//主方法
int arr[]=new int[]{23,42,12,8};//声明数组
Arrays.sort(arr);//将数组进行排序
System.out.println("排序后的结果为:");//输出信息
for(int i=0;i<arr.length;i++){//循环遍历排序后的数组
System.out.print(arr[i]+" ");//将排序后的数组中的各个元素输出
}
}
}