第一周java.1

一维数组

java数组要求所有数组元素具有相同的数据型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能存储多种数据类型的数据 。

一旦数组的初始化完成 ,数组在内存中所占的空间将被固定下来,因此数组的长度将不可改变。即使把某个数组元素的数据清空 , 但它所占的空间依然被保留 ,依然属于该数组,数组的长度依然不变。 Java 的数组既可以存储基本类型的数据 ,也可以存储引用类型的数据,只要所有的数组元素具有相 同 的类型即可 。 值得指出的是,数组也是一种数据类型 , 它本身是一种引用类型 。 例如 int 是一个基本类型,但是Int[]是一种引用类型。

Java 语言支持两种语法格式来定义数组:

type[] arrayName; 
type arrayName[] ; 

数组是一种引用类型的变量 , 因此使用它定义一个变量时,仅仅表示定义了一个引用变量( 也就是 定义了 一个指针) 这个引用变量还未指向任何有效的内存 , 因此定义数组时不能指定数组的长度 .而 且 由 于定义数组只是定义了 一个引用变量,并未指向任何有效的内存空间 , 所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有对数组进行初始化后才可以使用。

值得指出的是 , 执行静态初始化时 , 显式指定的数组元素值的类型必须与 new 关键字后的 type 类型相同,动态初始化也是如此。

//定义一个 int 数组类型的变量,变量名为 
intArr int[] intArr;
// 初始化数组时只指定数组元素的初始值,不指定数组长度 
intArr =new i n t [] {5 , 6 , 8 , 20} ; 
定义数组时使用的 type类型的子类。
//数组的定义和初始化同时完成,使用动态初始化语法
int[] prices = new int[5] ; 

各类数组初始化值。

为些数组元素分配初始值。 指定初始值时, 系统按如下规则分配初始值 。

数组元素的类型是基本类型中 的整数类型(byte ,shot,int 和 long ) 则数组元素的值是 0 .

数组元素的类型是基本类型中 的浮点类型(float ,double ),

则数组元素的值是 0.

数组元素的类型是基本类型中的字符类型(char),则数组元素的值是'\uOOOO '。

数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是 false.

数组元素的类型是引用类型(类、接口和数组) 则数组元素的值是 null .

二维数组

public class TwoDimensionTest
{
    public static void main(Str 工 ng[] args) 
{   //定义一个二维数组
       int [][]a; 
  //把a当成一维数组进行初始化,初始化a是一个长度为4的数组
  //a数组的数组元素又是引用类型
     a=new int[4][] ; 
  //把a数组当成一维数组,遍历a数组的每个数组元素
  for (int i = 0 ,len = a.length; i < len ; i++ ) 
 {
   System.out.println(a[i]) ; 
  }
   //初始化 a 数组的第一个元素
    a[0] = new int[2]; 
  //访问 a 数组的第一个元素所指数组的第二个元素
   a[0][1] = 6; 
  //a数组的第一个元素是一个一维数组,遍历这个一维数组
 for (int i = 0 ,len = a[0].length ; i < len ;i++ ) 
   System.out.println(a[0][i]);
}
}

数组的地址

如果直接调用数组,将打印数组在内存中的地址值。调用数组值直接调用下标,数组下标从0开始。对于数组在内存中的变化,可以通过这两个空间进行分析

栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行

堆 :存储对象或者数组,new来创建的,都存储在堆内存

public static void main(String[] args)
{
 int [] arr=new int [2];
 sout(arr);
 sout(arr[0]);
 sout(arr[1]);
 }

第三行左边就是在栈中定义了一个变量——int类型的名为arr的数组,右边则是堆中开辟了一个空间,索引长度为数组长度,然后通过等号将右边的地址值赋值给左边。无论是赋值还是调用都是通过右边去查找地址,再进行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值