Java中的一维数组

   

Java程序中通常使用变量来存放各种数据,如果将一组数据用变量的形式存放和使用数据这样会很麻烦。所以Java使用了数组来存放数据。数组是可以存储多个元素并且这多个元素是同一种数据类型的容器。
一、一维数组的定义
    数据类型[] 数组名;
    数据类型 数组名[];
  例:
    int[] a;        定义了一个int类型的数组变量a
    int a[] ;       定义了一个int类型 变量a数组
注意:在定义数组时,不允许[]内指定数组元素的个数。这两种方式的定义虽然写法不一样,并且读法不一样,但是表达的效果一样,都是在定义一个数组,推荐使用第一种方式。
二、数组的初始化
数组的初始化可分为两种:
   1)动态初始化:  给数组指定长度,数组中的元素值由系统默认给定;
   2)静态初始化:  给定数组中元素的值,数组的长度由系统给定;
  动态初始化:
      数据类型[] 数组名 = new 数据类型[数组长度] ;
      int[] arr = new int[3] ;
       当使用关键字new生成数组时,数组中的每个成员都会自动被初始化,初始值依据数组的类型而定。
如:
int 型的初始值:0;
double型的初始值:0.0;
char型的初始值:'/0';
boolean型的初始值:false;
String型的初始值:null;
例:
 public class ArrayDemo1 {
 
 public static void main(String[] args) {
  
  //定义数组,动态初始化
  int[] arr = new int[3];
                char[] arr2=new char[3];
  boolean arr3[]=new boolean[4];
  String[] arr4=new String[4];
  //先输出数组名称和它的元素值
  System.out.println(arr);
  System.out.println(arr[0]);//数组的访问是从数组名和下标实现的,Java中下标是从0开始;
  System.out.println(arr2[0]);
  System.out.println(arr3[0]);
  System.out.println(arr4[0]);
  //进行赋值
  arr[0] = 10 ;
  arr[2] = 30 ;
  System.out.println(arr);
  System.out.println(arr[0]);
  System.out.println(arr[1]);
  System.out.println(arr[2]);
  
  }
 }
 显示:    /*
        [I@7852e922     (arr数组名称输出的是地址值,数组名称指向堆内存中该数组的首地址)
        0
              
 false
 null
 [I@7852e922      (arr数组元素赋值后地址值不变)
 10
 0
 30
 */
    数组的静态初始化:
 
   原始格式:
    数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
   简写方式:
    数据类型[] 数组名称= {元素1,元素2,元素3..} ;
 
    int[] arr = new int[]{1,2,3} ;
    int[] arr = {1,2,3} ;
例: 
     public class ArrayDemo2{
 
 public static void main(String[] args) {
  
  //定义数组,静态初始化
  int[] arr = {1,2,3} ;
  System.out.println(arr);
  System.out.println(arr[0]);
  System.out.println(arr[1]);
  System.out.println(arr[2]);
 }
 }
 显示:
   /*
          [I@7852e922
          1
          2
   3
  */
    使用数组时要注意数组是否越界,每个数组都有一个属性length,可以通过“数组名.length”来获取数组的长度。
       public class ArrayDemo3{
            public static void main(String[] args){
     
  int[] a={1,2,3,4,5,6,7,8};
  int[] b=a;   //将a数组名赋给b数组
                for(int i=0;i<a.length;i++){
   System.out.print(a[i]+" ");//输出a数组的元素值
  }
  System.out.println();
  for(int i=0;i<b.length;i++){
   System.out.print(b[i]+" ");//输出b数组的元素值
  }
  System.out.println();
  System.out.println(a.length);//输出a数组的长度
 }
 }
 显示:
     /*
 1 2 3 4 5 6 7 8
 1 2 3 4 5 6 7 8
 8
       */
三、使用for each循环遍历数组
    Java中的for each循环是一种功能很强的循环结构,可以用来处理数组中的每个元素而不必为指定下标而分心。
     格式:
      for(数据类型 变量 :数组名){  //注意:数据类型可以与数组类型不同,但要符合数据类型自动转换的要求。

      循环体
       }
例如:
public class ArrayTwo {
     public static void main(String[] args) {
         int[] a= {1,2,3,4,5,6,7,8,9};
         for(int h:a) {   
             System.out.print(h+",");
         }
     }
}
显示:1,2,3,4,5,6,7,8,9,


 
四、实用案例
   1)求一维数组中的最大值和最小值以及其所在的位置
public class Test1 {
 public static void main(String[] args) {
 int[] a={100,24,35,65,33,15,78,92,10,17};//初始化一个数组
 int max=a[0];//定义a[0]为最大数
 int m=0;
 for(int i=1;i<a.length;i++) {
  if(max<a[i]) {//判断当前数是否是最大值
   max=a[i];
   m=i;
  }
 }
 System.out.println("最大值是"+max+"它的位置是"+"a["+m+"]");
 int min=a[0];//定义a[0]为最小值
 for(int i=1;i<a.length;i++) {
  if(min>a[i]) {//判断当前数是否是最小值
   min=a[i];
   m=i;
  }
 }
 System.out.println("最小值是"+min+"它的位置是"+"a["+m+"]");
}
}
 显示结果:
   /*
     最大值是100它的位置是a[0]
     最小值是10它的位置是a[8]
    */
    2)数组的冒泡排序
public class Test2 {
public static void main(String[] args) {
  int[] b= {22,44,77,33,99,11,55,66,88};//初始化数组
  for(int i=0;i<b.length;i++) {
   System.out.print(b[i]+",");//输出数组元素
  }
  System.out.println();
  for(int j=0;j<b.length;j++) {
  for(int t=0, i=0;i<b.length-1;i++) {
   if(b[i+1]<b[i]) {//从小到大冒泡排序
     t=b[i+1];
    b[i+1]=b[i];
    b[i]=t;
               }
           }
}
  for(int i=0;i<b.length;i++) {
   System.out.print(b[i]+",");//输出
   }
  System.out.println();
   for(int j=0;j<b.length;j++) {
   for(int t=0, i=0;i<b.length-1;i++) {
    if(b[i+1]>b[i]) {//从大到小冒泡排序
      t=b[i+1];
     b[i+1]=b[i];
     b[i]=t;
                }
            }
 }
   for(int i=0;i<b.length;i++) {
    System.out.print(b[i]+",");//输出
    }
}
}
 显示结果:
       /*
       22,44,77,33,99,11,55,66,88,
       11,22,33,44,55,66,77,88,99,
       99,88,77,66,55,44,33,22,11,
 */
   3)键盘输入数字,并且逆序输出
  import java.util. Scanner;
  public class Test3 {
    public static void main(String[] args) {
     Scanner sc=new Scanner(System.in);
     System.out.println("请输入一个长度为5的数组:");
       int[] a=new int[5];//定义数组
     for(int i=0;i<a.length;i++) {
       a[i]=sc.nextInt();//键盘录入
     }
     for(int i=0;i<a.length;i++) {
      System.out.print(a[i]+",");//输出数组a
     }
     int[] b=new int[a.length];//定义第二个数组
     for(int i=0;i<a.length;i++) {
      b[a.length-1-i]=a[i];//将a数组中的元素逆序赋值于b数组
     }
     System.out.println();
     for(int i=0;i<a.length;i++) {
      System.out.print(b[i]+",");//输出数组b
     }
 
}
}
 显示结果:
     /*请输入一个长度为5的数组:
 10
 22
 33
 77
 33
 10,22,33,77,33,
 33,77,33,22,10,
  */

猜你喜欢

转载自blog.csdn.net/of_mine/article/details/79883332