1、一维数组的声明方式:

type[] arrayName; 或 type arrayName[];

附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示type[]是一种引用类型(数组)而不是type类型。建议不要使用第二种方式

下面是典型的声明数组的方式:

// 声明整型数组

int[]

intArray0

;

int

intArray1

[];

// 声明浮点型数组

float

floatArray0

[];

float[]

floatArray1

;

// 声明布尔型数组

boolean

boolArray0

[];

boolean[]

boolArray1

;

// 声明字符型数组

char

charArray0

[];

char[]

charArray1

;

// 声明字符串数组

String

stringArray0[];

String[]

stringArray1;

// 错误的声明数组的方式,声明数组的时候不能指定其大小

//

int [5] intErrorArray0;

//

int intErrorArray1[5];

注:Java语言中声明数组时不能指定其长度(数组中元素的个数),这是因为数组是一种引用类型的变量,,因此使用它定义一个变量时,仅仅表示

定义了一个引用变量(也就是定一个了一个指针),这个引用变量还未指向任何有效的内存,所以定义数组时不能指定数组的长度。而且由于定义数组仅仅只是定一

个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有在数组进行初始化后才可以使用。

2、一维数组的创建

Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数]

// 创建数组,如果在创建的同时不初始化数组则必须指定其大小

intArray0

=

new

int[3];

// 错误的创建数组的方式,如果创建数组时不指定大小则必须初始化

// intArray1 = new

int[];

// 创建数组时,不指定数组大小则必须在创建的同时初始化数组

intArray1

=

new

int[]{0,1,2};

使用new创建数组对象但是分配数组时会自动为数组分配默认值,具体如下:

System.out.println(

"intArray0[0]="

+

intArray0

[0]);

floatArray0

=

new

float[3];

System.

out.println("floatArray0[0]="

+

floatArray0[0]);

boolArray0

=

new

boolean[3];

System.

out.println("boolArray0[0]="

+

boolArray0[0]);

charArray0

=

new

char[3];

System.

out.println("charArray0[0]="

+

charArray0[0]);

stringArray0

=

new

String[3];

System.

out.println("stringArray0[0]="

+

stringArray0[0]);

输出如下:

intArray0[0]=0

floatArray0[0]=0.0

boolArray0[0]=false

charArray0[0]=

stringArray0[0]=null

附:

一旦使用new关键字为数组分配了内存空间,每个内存空间存储的内容就是数组元素的值,也就是数组元素就有了初始值,即使这个内存空间存储的内容是空,这

个空也是一个值null。也就是说不可能只分配内容空间而不赋初始值,即使自己在创建数组对象(分配内容空间)时没有指定初始值,系统也会自动为其分配

附:诸如基础数据类型的包装类,其默认的初始化值均为null,因为基础数据类型的包装类创建的数组属于引用数组(对象数组),对象数组默认的初始化值都是null

3、一维数组的初始化

数组的初始化分为静态初始化、动态初始化和默认初始化:

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

动态初始化是数组在初始化时只指定数组长度,由系统为数组元素分配初始值。

a、数组静态初始化的语法格式:

arrayName = new type[]{element1,element2,element3...}或者使用简化的语法格式:arrayName = {element1,element2,element3...}

b、数组动态初始化的语法格式:

arrayName = new type[length];

附:静态初始化时不能指定元素个数,而动态初始化时则必须指定元素个数。静态初始化时数组能够知道元素的个数所以不需要指定,而动态初始化时数组元素个数未知因此必须指定。

// 静态初始化

int

intArray2

[] =

new

int[]{20,21,22};

// 静态初始化简化方式

int

intArray3

[] = {30,31,32};

// 动态初始化

int[]

intArray4

=

new

int[3];

// 错误写法:静态初始化不能指定元素个数

//

int intErrorArray5[] = new

int[3]{50,51,52};

// 错误写法:动态初始化必须指定元素个数

//

int intErrorArray6[] = new

int[];

注:一维数组这一块记住两点,数组声明的时候是不能指定大小的,也就是说等号左边的中括号中不能包含数字。另外一旦使用new关键字那么肯定在内存中为数组分配了空间,则必然数组有默认值。数组是对象数据类型

注:不要静态初始化和动态初始化同时使用,也就是说不要再进行数组初始化时,既指定数组长度,也为每个数组元素分配初始值。

4、数组进行动态初始化时系统分配初始值的规则

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

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

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

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

数组元素类型是基本类型中的引用类型(类、接口、数组),则数组元素的值是null

附:这部分源代码:

package

javabase;

public

class

CreateArray {

public

static

void

main(String

args[]){

/**************数组的声明*******************/

// 声明整型数组

int[]

intArray0

;

int

intArray1

[];

// 声明浮点型数组

float

floatArray0

[];

float[]

floatArray1

;

// 声明布尔型数组

boolean

boolArray0

[];

boolean[]

boolArray1

;

// 声明字符型数组

char

charArray0

[];

char[]

charArray1

;

// 声明字符串数组

String

stringArray0[];

String[]

stringArray1;

// 错误的声明数组的方式,声明数组的时候不能指定其大小

//

int [5] intErrorArray0;

//

int intErrorArray1[5];

/*********************数组的创建***********************/

// 创建数组,如果在创建的同时不初始化数组则必须指定其大小

intArray0

=

new

int[3];

// 错误的创建数组的方式,如果创建数组时不指定大小则必须初始化

// intArray1 = new

int[];

// 创建数组时,不指定数组大小则必须在创建的同时初始化数组

intArray1

=

new

int[]{0,1,2};

System.

out.println("intArray0[0]="

+

intArray0[0]);

floatArray0

=

new

float[3];

System.

out.println("floatArray0[0]="

+

floatArray0[0]);

boolArray0

=

new

boolean[3];

System.

out.println("boolArray0[0]="

+

boolArray0[0]);

charArray0

=

new

char[3];

System.

out.println("charArray0[0]="

+

charArray0[0]);

stringArray0

=

new

String[3];

System.

out.println("stringArray0[0]="

+

stringArray0[0]);

/**********************数组的初始化*************************/

// 静态初始化

int

intArray2

[] =

new

int[]{20,21,22};

// 静态初始化简化方式

int

intArray3

[] = {30,31,32};

// 动态初始化

int[]

intArray4

=

new

int[3];

// 错误写法:静态初始化不能指定元素个数

//

int intErrorArray5[] = new

int[3]{50,51,52};

// 错误写法:动态初始化必须指定元素个数

//

int intErrorArray6[] = new

int[];

System.

out.println("intArray2[0]="

+intArray2

[0]);

System.

out.println("intArray3[0]="

+intArray3

[0]);

System.

out.println("intArray4[0]="

+intArray4

[0]);

}

}

java new数组_Java创建数组的几种方式相关推荐

  1. Java 并发 多线程:创建线程的四种方式

    Java 并发 多线程: 创建线程的四种方式 继承 Thread 类并重写 run 方法 实现 Runnable 接口 实现 Callable 接口 使用线程池的方式创建 1. 通过继承 Thread ...

  2. java 创建线程的三种方法_java 创建线程的几种方式

    说道线程,肯定会想到使用 java.lang.Thread.java这个类 那么创建线程也主要有2种方式 第一种方式: public class MyThread extends Thread { p ...

  3. java创建线程并命名_Java创建线程的两种方式

    前言 多线程是我们开发过程中经常遇到的,也是必不可少需要掌握的.当我们知道需要进行多线程开发时首先需要知道的自然是如何实现多线程,也就是我们应该如何创建线程. 在Java中创建线程和创建普通的类的对象 ...

  4. java 产生随机数_java产生随机数的几种方式

    一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在 ...

  5. java json 解析_Java解析JSON的四种方式

    一.什么是JSON JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于阅读和编写,同时也易于解析和 ...

  6. java xml 方法_Java读取xml的四种方式

    Java读取xml的四种方式 在平时工作中,难免会遇到把 XML 作为数据存储格式.面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML ...

  7. java 创建5个线程_Java创建线程的三种方式

    1.继承Thread 类,创建线程类 ,调用start方法启动  (单一继承 ) public class Test1 extendsThread { @Overridepublic voidrun( ...

  8. java webservice 依赖_java开发webservice的几种方式

    webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录. 1.Axis2 Axis是apache下一个开源的webservice开发组件 ...

  9. java calendar格式化_java格式化日期的三种方式

    8月 29, 2014 | Nix.Huang 1)借助DateFormat类: public String toString(Date d) { SimpleDateFormat sdf = new ...

最新文章

  1. Android 自定义Toast实现多次触发只会显示一次toast
  2. putty利用密钥ssh服务登录ubuntu server 10.4
  3. 【转】js老生常谈之this,constructor ,prototype
  4. matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
  5. 机器学习算法 --- SVM (Support Vector Machine)
  6. python+selenium 自动化测试环境搭建
  7. 算法知识点——(3)监督学习——逻辑回归与线性回归
  8. 施耐德编程软件Unity Pro XL授权步骤
  9. 如何用matlab求向量在基下的坐标,请问什么是有关向量的基底、基向量、基坐标?...
  10. IP Multicast: MSDP RPF检测详细规则(转)
  11. Linux查看外网IP命令
  12. 人脸识别门禁系统有哪些功能作用
  13. Rsoft光波导软件基于七芯光纤波导耦合器模拟
  14. 浏览器渲染机制、重排、重绘
  15. Liunx中shell命令行和权限的理解
  16. Java中String与Byte之间的各种转换
  17. Qt:Qt导出Excel表格
  18. UE4 蓝图常用节点汇总及意译(一)
  19. 苹果教你如何开发iOS应用
  20. 看不见的共享电单车战争

热门文章

  1. 《golang日记》关于gio的学习一
  2. 计算机启动时间过长,电脑开机时间太长一招解决办法!
  3. 基于C语言的停车场管理系统编程(二)简单版
  4. 十代服务器芯片组,英特尔十代酷睿处理器想用先换主板 AMD锐龙将继续碾压英特尔...
  5. elasticsearch6.8.6安装配置
  6. 【转载】塔防常见的设计败笔
  7. 磁盘写保护,只读,怎么办?
  8. hash表的创建,插入数据,查询数据(包含代码)
  9. 成佩涛-站酷(ZCOOL) 刷评论漏洞
  10. 变容二极管调频器实现线性调频的条件是变容二极管的结电容变化指数γ为