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]);
} }
多维数组的内存模型图如下:

好吧,就先到这里吧。
Java数组的基本讲解的更多相关文章
- 第二十三节:Java语言基础-详细讲解函数与数组
函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...
- 简单的例子 关于Java内存管理的讲解
我想做的是,逐行读取文件,然后用该行的电影名去获取电影信息.因为源文件较大,readlines()不能完全读取所有电影名,所以我们逐行读取. 就这段代码,我想要在位置二处使用base64,然后结果呢? ...
- java集合框架的讲解
下面要开始java中相关集合框架的学习啦. Are you ready?Let's go~~ 今天要讲解的Java中的集合框架. 1) 首先查看jdk中Collection类的源码后会发现如下内容: ...
- Java-杂项:Java数组Array和集合List、Set、Map
ylbtech-Java-杂项:Java数组Array和集合List.Set.Map 1.返回顶部 1. 之前一直分不清楚java中的array,list.同时对set,map,list的用法彻底迷糊 ...
- Java 数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如numbers[100 ...
- 第5章 Java数组
1.什么是数组 数组可以想象成一个巨大的盒子,这个盒子里面存放的是同一个数据类型的数据 例如:int[] scores = {78,68,94,93}; 2.如何使用Java中的数组 2.1申明数组 ...
- Java 数组基础
数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...
- Java数组及其内存分配
几乎所有的程序设计语言都支持数组.Java也不例外.当我们需要多个类型相同的变量的时候,就考虑定义一个数组.在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静 ...
- [转载]Java数组扩容算法及Java对它的应用
原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...
随机推荐
- python基础6 ----python函数
python函数 一.函数的参数 1.函数的参数从调用的角度来讲可以分为形式参数和实际参数,也可叫形参和实参. 形参:变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元. ...
- static_class
<?php class MyObject { public static $myStaticVar = 0; function myMethod() { self::$myStaticVar + ...
- iOS 在视图控制器里面判断 应用程序的前台 后台切换 UIViewController
1.时机 用户点击home 键 应用退到后台 再次点击进入前台 在UIViewController里面 控制器如何获取相关的事件? 2.需求 (1)NSTimer 在应用程序进入后台 10秒 ...
- java并发实现原子操作
来自<java并发编程的艺术>.只是方便自己以后查找. 处理器如何实现原子操作 32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作.首先处理器会自动保证基 ...
- Javascript中闭包的个人理解
Javascript的一个特殊点就在于它的闭包和回调特性,这两个特性让初学Javascript的我是云里雾里,至今仍在苦苦摸索与理解.在一番苦思之后,整理了一下资料,将自己的理解思路记录下来,以 ...
- TortoiseGit做push时提示Disconnected: No supported authentication methods available (server sent: publickey)错误
通过Git从远程服务器上获得到自己的项目,但是通过TortoiseGit做push时提示Disconnected: No supported authentication methods availa ...
- linux 交换分区 swap
linux swap分区用来保证内存过载时也可以使用,是在磁盘级别对内存的一次扩展,swap分区必须是一个单独的分区 创建过程: 1.用fdisk 命令新建分区,在创建过程中通过L命令和t命令来调整分 ...
- 分享知识-快乐自己:Liunx-大数据(Hadoop)初始化环境搭建
大数据初始化环境搭建: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘 ...
- C 字节对齐.我的算法学习之路
C/C++基础笔试题1.0(字节对齐) http://blog.csdn.net/dengyaolongacmblog/article/details/37559687 我的算法学习之路 http:/ ...
- hbase_学习_00_资源帖
一.官方资料 1.官网:http://hbase.apache.org/ 2.官方文档:HBase 官方文档中文版 二.apache软件下载基地 1. Apache Software Foundati ...