Java数组的基本讲解

由于Java数组涵盖的内容比较多,这里从个人的角度对主要的内容进行相关的讲解。

如有不足,欢迎批评指正~

1)Java数组是动态还是静态的啊?

    Java语言是典型的静态语言,由此推断Java数组也是静态。何为静态,就是说Java数组在初始化的时候必须确定在内存中分配的空间的大小。

具体实现方式就是在初始化数组的时候(注意不是声明数组的时候,这两个概念别搞混了)指定数组的长度,或者指定初始化数组的内容哦。

同时需要明白数组变量并不是数组本身,数组变量是存储在栈中的,对应的数组对象是存储在堆中的。栈中的数组变量指向堆中的数组对象。

例如:

package com.yonyou.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
  int[] array=new int[10];//初始化数组的时候指定类数组的长度
  int[] array_new=new int[]{1,2,3};//初始化数组的时候指定了对应的相关元素
                                                   //需要注意的是这里不能再指定对应的长度了哦
                                                   //否则的话会报错的哦。
 System.out.println("数组一的长度为:"+array.length);
 System.out.println("数组二的长度为:"+array_new.length);

  }
}

  2)Java数组的默认初始化值

       a.基本数据类型byte,short,int,long,默认的初始化值为0;

b.基本数据类型float,double的默认初始值为0.0

c.基本数据类型char的默认初始值为:\0000

d.基本引用类型的默认初始值为null

package com.yonyou.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
      short[] array_0=new short[10];
	  int[] array_1=new int[10];
	  long[] array_2=new long[10];
	  byte[] array_3=new byte[10];
	  char[] array_4=new char[10];
	  boolean[] array_5=new boolean[10];
	  float[] array_6=new float[10];
	  double[] array_7=new double[10];
	  Car[] array_8=new Car[10];
	  System.out.println("short:"+array_0[5]);
	  System.out.println("int:    "+array_1[5]);
	  System.out.println("long: "+array_2[5]);
	  System.out.println("byte: "+array_3[5]);
	  System.out.println("char的默认值是否为\\u0000:"+(array_4[5]==‘\u0000‘));//无法直接显示字符的内容
	                                           //间接的显示
	  System.out.println("boolean: "+array_5[5]);
	  System.out.println("float     : "+array_6[5]);
	  System.out.println("double: "+array_7[5]);

	  System.out.println("引用类变量初始化值为:: "+array_8[5]);	  

  }

  /**
   * 创建一个测试对象
   * @author 小浩
   * @创建日期 2015-3-19
   */
  class Car{

  }
}

  3)Java数组一定要初始化吗?

         不是的。对于具体的反例,请看下面的内容:

package com.yonyou.test;

/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
       Car[] car1=new Car[10];
       Car[] car2;
       car2=car1;
       System.out.println(car2.length);

  }

  /**
   * 创建一个测试对象
   * @author 小浩
   * @创建日期 2015-3-19
   */
  class Car{

  }
}

  4)Java数组初始化的几种方式?

         数组的初始化一般分为两种:

一种为静态初始化:

在创建数组的时候就指定了数组的长度,如下面的内容:

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

第二种为动态初始化:

在创建数组的时候仅仅指定数组的长度

int[] array_dynamic=new int[10];

具体应用实例如下:

package com.yonyou.test;

/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
  public static void main(String[] args) {
	  //静态初始化
      int[] array_static=new int[]{1,2,3};
      //动态初始化
      int[] array_dynamic=new int[10];

  }

  4)Java中的多维数组是怎么回事?

说句到家的话,java中没有多维数组的概念。java中的多维数组可以当成一维数组来处理。初始化多维数组的时候可以转换成对应的一维数组。

只不过这时一维数组中存储的不在是具体的元素值,而是对应的数组的引用地址。具体的也不多说了,请看下面的例子:

package com.yonyou.test;

/**
 * 测试类
 * @author 小浩
 * @创建日期 2015-3-2
 */

public class Test{
	  public static void main(String[] args) {
	        Object[] obj1=new Object[4];
	        obj1[2]=new Object[2];
	        Object[] obj2=(Object[]) obj1[2];
	        obj2[1]=new Object[3];
	        Object[] obj3=(Object[]) obj2[1];
	        obj3[2]=new int[5];
	        int[] obj4=(int[]) obj3[2];
	        obj4[3]=100;
	        System.out.println(obj4);
	        System.out.println(  ((int[])((Object[])((Object[])obj1[2])[1])[2]) );
	        System.out.println(obj4[3]);
	        System.out.println(((int[])((Object[])((Object[])obj1[2])[1])[2])[3]);
	  }

	}

  

好吧,就先到这里吧。

时间: 2024-08-25 15:00:50

Java数组的基本讲解的相关文章

简单的例子 关于Java内存管理的讲解

我想做的是,逐行读取文件,然后用该行的电影名去获取电影信息.因为源文件较大,readlines()不能完全读取所有电影名,所以我们逐行读取. 就这段代码,我想要在位置二处使用base64,然后结果呢? 两处位置都打印了,位置一得到base64,ok,没问题.当我在位置二想使用base64时,问题来了?onload队列的问题,位置二总是无法正确的获取到想要的base64,这个时候就可以考虑异步问题了. 在还没有接触到angular的时候,还真的不知道它到底有什么作用,直到我开始学习它,并且运用到它

Java千问:七个问题帮助初学者深入理解Java数组

几乎所有的高级语言当中,都提供了一种叫做"数组"的东西,Java语言当然也不例外.我们通过数组可以很方便的存储和管理一组数据.因为在Java语言当中使用数组非常的方便,所以导致很多初学者忽略了对数组的深入学习,本文就通过七个问题,来帮助初学者深入理解一下Java语言的数组到底是怎么回事. 一.数组是变量的简单叠加吗? 我们在学习Java的时候,知道一个int类型的变量可以存储一个整数,而一个int类想的数组可以存储多个整数.于是很多人认为数组只不过是变量的简单叠加而已,无非是变量存1个

Java 数组学习笔记

数组的简单认识 简单理解java数组,就是可以创建并组装它们,通过使用整型索引值访问它们的元素,并且它们的尺寸不能改变,这里的它们就是数组. 数组的特殊性 在java中有很多方式去持有对象,那么数组的与众不同点在哪里? 数组与其他种类的容器区别有三个方面:效率.类型和保存基本类型的能力. 在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式.数组就是一个简单的线性序列,这使得元素访问非常迅速.但是为之付出的代价就是数组对象的大小被固定,并且在其生命周期中不可改变. 在泛型之前,其他

Java数组与内存控制

一.Java数组初始化 Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值.(文章来源于李刚老师的<突破java程序员的16课>) 1:基本类型数组的两种初始化方式 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度. 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值. 不要同时使用静态初始化和动态初始化,也就是

JAVA数组的定义及用法

数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素. 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; 当中类型(type)能够为Java中随意的数据类型,包含简单类型组合类型,数组名arrayName为一个合法的标识符,[]指明该变量是一个数组类型变量. 另外一种形式对C++开发人员可能认为非常奇怪,只是对JAVA或C#这种开发语言来说,另外一种形式可能更直观,由于这里定义的仅仅是个变量而已,系统

java 数组比较,元素的比较,Comparable,Comparator比较的应用实现,排序,查找示例

java 数组比较,元素的比较,自定义Comparator的实现,排序,查找示例 package org.rui.array.compar; import java.util.Arrays; import java.util.Random; import org.rui.generics.anonymity.Generator; /** * 程序设计的基本目标是"将保持不变的事物与会发生改变的事物相分离" * 而这是,不变的是通用的排序算法,变化的是各种对象相互比较的方式, * 因此,

Java 数组工具类排序,最大值最小值等

public class ArrayUtils{ /** * 返回数组最大值 * * @param a * @return */ public static int max(int[] a){ // 返回数组最大值 int x; int aa[]=new int[a.length]; System.arraycopy(a,0,aa,0,a.length); x=aa[0]; for(int i=1;i<aa.length;i++){ if(aa[i]>x){ x=aa[i]; } } retu

java 数组声明

Java 数组声明常用的方式 1.类型  数组名称[] = new 数组类型[个数] 2,类型  数组名称    =  new 数组类型[] {} 3,类型[] 数组名称 = {} //类型 数组名[] = new 数组类型 [个数] int $arr[] = new int [4]; $arr[0] = 1; $arr[1] = 2; $arr[2] = 3; $arr[3] = 4; //类型 数组名称 = new 数组类型[]{} int $arr1[] = new int[]{1,2,3

JAVA数组插入数值

将一个数值插入JAVA数组,并排序. import java.util.Scanner; public class xr{ public static void main(String[] args){ int[] arr={14,24,35,48,69}; Scanner in=new Scanner(System.in); System.out.println("请输入一个要插入的值"); int a=in.nextInt(); arr[arr.length-1]=a; for(i