9159金沙游艺场

图片 8
SVG 入门

{windows故障}关于WIN7故障模块StackHash_0a9e解决方法

Java中数组的初始化

一、什么是初始化

数组,java数组


  数组是任何编程语言都具有的的数据结构。在java语言中,它是具有相同数据类型的有序的数据的集合,是一种引用数据类型。在数组中,每个变量称为数组元素,数组元素的数据类型可以是java的任何数据类型(包括基本类型和引用类型)。数组所包含的元素的个数称为数组的长度,由数组的数据成员length
表示。数组的长度在数组对象创建之后就固定了,不能再发生改变。数组元素的下标是相对于数组第一个元素的偏移量,所以第一个元素的下标为0,以此类推,下标值可以是一个整型常量也可以是十一个整型表达式,其取值范围为0~(数组长度-1)。

  数组可以将数组分为:一维数组和多维数组。


1.一维数组

  1.一维数组的声明

    在java语言中,通常可以使用两种方式声明一维数组,语法如下:

      数据类型[] 数组名;

    或

      数据类型 数组名[];

    注:1.数据类型可以是任何数据类型;如
double、int、char、boolean、类和String数组。

      2.数组名是合法的标识符

      3.方括号[]
表示定义的是一个数组,而不是普通的一个变量或对象,有几个[]就表示是几维数组。

      4.方括号[]
里面不能有数字。因为数组的长度不是在声明时指定的,而是在创建时由所开辟的内存单元数目确定的。

    声明数组类型的变量并没有真正的创建数组,只是给出了数组变量的名字和元素的数据类型,由于数组是引用数据类型,所以此时数组引用的值是null,表示没有指向堆内存的任何对象。

  2.一维数组的创建

    声明完数组后,要想真正的使用数组,还必须为数组分配内存空间,即创建数组(也叫做实例化数组)。创建数组使用关键字new
,语法如下:

      数组名 = new 数组类型[n];

  注:n 表示所创建的数组元素的个数。

  数组的声明和创建也可以采取下述语法格式一步完成。

    数据类型[] 数组名 = new 数据类型[n];

  或

    数据类型 数组名[] = new 数据类型[n];

   用new
关键字为一个数组分配内存空间后,系统将为每个数组元素赋予一个默认值,这个默认值取决于数组元素的类型。引用类型的数组在创建时元素的默认值为null。

  注:数组一旦创建后,其长度不能改变。

  3.一维数组的初始化

    数组的初始化就是不希望使用系统赋予的默认初始值,自行给数组元素赋初值。数组的初始化分为静态初始化和动态初始化两种。

    1.静态初始化

      静态初始化是指在定义数组的同时就为数组元素分配空间并赋值,这种方式通常于数组元素个数不多的情况,语法如下:

        数据类型[] 数组名 = {元素1,元素2,……,元素n};

      或

        数据类型 数组名[] = {元素1,元素2,……,元素n};

      上面的初始化中,虽然没有指定数组的长度,但给出了初值个数,这时,系统会自动根据所给的初值个数计算出数组的长度,并根据数据类型分配相应的空间。

    2.动态初始化

      动态初始化是指数组的声明与数组分配空间和赋值的操作分开进行。

        示例:

public class Test{
 public static void main(String[] args){
  int[] a = new int[5];
  //初始化数组
  for(int i = 0;i<a.length;i++){
   a[i] = i;
  }
  //打印数组元素
  for(int i = 0;i<a.length;i++){
   System.out.println("a[ "+i+"]="+a[i]);
  }
 }
}

  4.一维数组的使用

    当定义了一个一维数组,并用new运算符为其分配完内存空间后,就可以通过数组名和下标来引用数组中的每个元素了。一维数组元素引用的语法如下:

      数组名 [index];

    注:index表示数组元素的下标,是整型的常量或表达式,从0开始,取值范围0~(数组长度-1)

  示例:随机产生10个1~100的数字,并求出最大最小值

public class Test{
 public static void main(String[] args){
  int[] a = new int[10];     //
  for(int i = 0;i<a.length;i++){
   a[i] = (int)(Math.random()*100)+1;
  }
  System.out.println("这十个随机数为:");
  for(int i = 0;i<a.length;i++){
   System.out.println(a[i]+" ");
  }
  System.out.println();

  int max = a[0];
  int min = a[0];
  for(int i = 1;i<a.length;i++){
   if(a[i]>max)
    max = a[i];
   if(a[i]<min)
    min = a[i];
  }
  System.out.println("max="+max);
  System.out.println("min="+min);
 }
}

  注:Math类位于java.lang包下,可以直接使用,不需要导入。该类中包含用于执行基本数学运算的方法和常量,如初等指数、对数、平方根、三角函数和常量PI等。

  选择排序示例:

public class Test{
 public static void selectSort(int[] b){     
  for(int i = 0;i<b.length;i++){
   int k = i;       //变量K用来保存数组中未排序元素值的最小的下标
   for(int j = i+1;j<b.length;j++){
    if(b[k]>b[j]){
     k=j;
    } 
   }
   if(k!=i){
     int temp = b[i];
     b[i] = b[k];
     b[k] = temp;
   }
  } 
 }
 public static void main(String args[]){
  int[] a = {1,4,2,5,7,6,3,9,8};          //静态初始化数组
  selectSort(a);       //将数组A作为方法的参数,传递的实际是该数组对象的的句柄
  for(int i=0;i<a.length;i++){
   System.out.print(a[i]+" ");
  }
 }
}

 


 

2.多维数组

  java语言不支持多维数组,但是一个数组元素可以被声明为任何数据类型,因而其元素也可以是数组类型。多维数组可以看做是数组的数组。一二维数组为例,二维数组可看成是一个特殊的一维数组,其每个元素都是一个一维数组。

  1.二维数组的声明

    二维数组的声明方式和一维数组一样,也有两种方式,语法如下:

      数据类型[][] 数组名;

    或

      数据类型 数组名[][];

          注:1.数据类型可以是任何数据类型,包括基本类型和引用类型。

      2.数组名是合法的标识符。

      3.两个方括号 []
表明的是二维数组,前面的方括号表示行,后面的方括号表示列。

      4.两个方括号
[]里面不能有数字,因为数组的长度不是在声明时指定的。

  2.二维数组的创建

    声明二维数组类型的变量并没有真正创建二维数组,想要真正使用二维数组,还必须为其分配内存空间,即创建二维数组(也叫实例化二维数组)。创建二维数组的关键字new,语法如下:

      数组名 = new 数组类型[n][m];

    注:1.n 表示所创建的二维数组的行数

      2.m 表示所创建的二维数组的列数。

      3.n必须存在,m可以存在也可以不存在。

    二维数组的声明和创建也可以采取下述语法格式一步完成。

      数据类型[][] 数组名 = new 数据类型[n][m];

    或

      数据类型 数组名[][] =  new 数据类型[n][m];

  3.二维数组的初始化

    1.静态初始化

      静态初始化是指在定义二维数组时就为数组元素分配空间并赋值,这种方式通常用于数组元素个数不多的情况。

      对于静态初始化,不必给出二维数组每一堆的大小,系统会根据给出的初始值的个数自动计算出数组每一堆的大小。

    2.动态初始化

      动态初始化是指二维数组的声明与二维数组分配空间和赋值的操作分开进行。

  4.二维数组的使用

    语法如下:

      数组名[index1][index2];

   示例:

public class Test{
 public static void main(String args[]){
  int[][] a = {{2,3,7},{1,4,6}};
  int[][] b = {{3,4,5,2},{2,7,1,6},{4,3,8,1}};
  int[][] c = new int[2][4];
  for(int i = 0;i<2;i++){
   for(int j = 0;j<4;j++){
    c[i][j] = 0;
    for(int k = 0;k<3;k++){
     c[i][j] += a[i][k]*b[k][j];
    }
   }
   System.out.println("矩阵A为:");
   for(int i = 0;i<a.length;i++){
    for(int j = 0;j<a[i].length;j++){
     System.out.println(a[i][j]+" ");
    }
    System.out.println();
   }
   System.out.println("矩阵B为:");
   for(int i = 0;i<b.length;i++){
    for(int j = 0;j<b[i].length;j++){
     System.out.println(b[i][j]+" ");
    }
    System.out.println();
    System.out.println("矩阵A与B的乘积C矩阵为:");
    for(int i = 0;i<c.length;i++){
     for(int j = 0;j<c[i].length;j++){
     System.out.println(c[i][j]+" ");
    }
    System.out.println();
  }
 }
}

  


 

数组是任何编程语言都具有的的数据结构。在java语言中,它是具有相同数据类型的有序的数据的集合,是一种引用数据类型…

一、数组

  存储同一种数据类型的多个元素的容器

定义格式
  A:数据类型[] 数组名;(推荐的使用方法)
  B:数据类型 数组名[];

举例:
  int [] arr; 定义了一个int类型的数组,数组名是arr
  int arr []; 定义了一个int类型的变量,变量名是arr数组

在Java程序开发中,使用数组之前都会对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用该数组变量来访问数组元素。所谓数组初始化就是让数组名指向数组对象的过程,该过程主要分为两个步骤,一是对数组对象进行初始化,即为数组中的元素分配内存空间和赋值,二是对数组名进行初始化,即为数组名赋值为数组对象的引用。

二、数组的初始化

  所谓的初始化,其实就是为数组开辟内存空间,并为数组中的每个元素赋予初始值。
数组的初始化有两种方式:

  • 动态初始化:只给出长度,由系统输出初始化值
  • 静态初始化:给出初始化值,由系统决定长度

图片 1

1、动态初始化

  数据类型[] 数组名 = new 数据类型[数组长度];
例:

int[] arr = new int[3];
//输出数组名
System.out.println("arr:"+arr);//打印的是数组的地址值
//输出数组的元素:数组名[索引]
System.in.println("arr[0]:"+arr[0]);//0

注意:
  1、索引是数组中元素的编号,标号从0开始,最大的编号是数组的长度-1
  2、数组的动态初始化会由系统给数组附一个初始值:
  int 类型——0
  double类型——0.0
  String类型——null
  boolean类型——false

通过两种方式可对数组进行初始化,即静态初始化和动态初始化。

2、静态初始化

  数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,…}
举例:

    int [] arr= new int[]{1,2,3};

简化的格式:
  数据类型[] 数组名 = {元素1,元素2,元素3,…}
举例:

     int[] arr = { 1, 2, 3 };

二、静态初始化

三、Java中的内存分配

  • 栈:存储的是局部变量
  • 堆:存储的是new出来的东西
  • 方法区:面向对象部分说明
  • 本地方法区:和系统相关
  • 寄存器:给CPU使用的

静态初始化是指由程序员在初始化数组时为数组每个元素赋值,由系统决定数组的长度。

1、栈

  栈存储的是局部变量,也就是定义在方法中的变量。
  使用完毕,立即回收。

数组的静态初始化有两种方式,具体示例如下:

2、堆

  堆中存储的是new出来的东西、实体、对象。
  A:每一个对象都有地址值
  B:每一个对象的数据都有默认值
  byte,short,int,long    0
  float,double      0.0
  char         ”/u0000″
  boolean        false
  引用类型        null
  C:数据使用完毕后,会在垃圾回收器空闲的时候被回收

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图