目录

1、数组声明与定义区别

2、初始化时机

2.1、初始化方法

2.2、数组初始化方式

1、静态初始化

2、动态初始化

3、区别


1、数组声明与定义区别

对于变量来说,java定义就是声明

例如:  int[] a;  我们可是说它是定义也可以说它是声明

2、初始化时机

2.1、初始化方法

初始化或者直接在声明时完成,或者放到构造函数里进行,或者用{}扩起来

没初始化时,编译器只会提示说identifier expected。

public class StudentTest {private int i ;/***  Label identifier expected 缺标号标识符*  Destructor Identifier expected 缺析构函数标识符*  Pointe type identifier expected 缺指针类型标识符*  *  编译器提示说identifier expected**/
//此处若给变量赋值,会报错,JAVA所有的除定义或声明语句之外的任何语句都必须在方法内部(而方法又必须在某个类内部,不存在游离于类外部的方法或成员)
//    i = 2;/*** 1、声明时初始化**/private int j = 2;/*** 2、{}初始化**/{Student stu = new Student();stu.name = "dd";}/*** 3、构造器初始化**/Student stu = new Student("dd");
}

Java语言中数组必须先初始化,然后才可以使用。

初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值

注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值:

基本数据类型的整数类型(byte、short、int、long)默认值是0;

基本数据类型的浮点类型(float、double)默认值是0.0;

基本数据类型的字符类型(char)默认值是'\u0000';

基本数据类型的布尔类型(boolean)默认值是false;

类型的引用类型(类、数组、接口、String)默认值是null。

2.2、数组初始化方式

1、静态初始化

初始化时由程序员显式指定每个数组元素的初始值,系统决定数组的长度

1. arrayName = new type[]{element1,element2,element3...}

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

2 简化的静态初始化方式

type[] arrayName = {element1,element2,element3...};

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

2、动态初始化

初始化时由程序员指定数组的长度,由系统初始化每个数组元素的默认值。

arrayName = new type[length];

int[] arr3 = new int[3];

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

一旦数组完成初始化,数组在内存中所占的空间将被固定下来,所以数组的长度将不可改变。

3、区别

String[] str = {"1","2","3"}; 这种形式叫数组初始化式(ArrayInitializer),只能用在声明同时赋值的情况下。

String[] str = new String[]{"1","2","3"}是一般形式的赋值,=号的右边叫数组字面量,数组字面量可以用在任何需要一个数组的地方。

方式一:
int[] arr1 = {1,2,3};//正确int[] arr11;
arr11 = {1,2,3};//错误写法 编译不同过方式二和方式三,声明和内存分配是分开的,这一步是在栈空间分配一个引用,存放的是一个引用,null
方式二直接赋值
int[] arr2;
arr2 = new int[]{1,2,3};
方式三 默认初始化,基本类型是 0 布尔类型是 false 引用类型为null
int[] arr3;
arr3 = new int[3];
到这一步的时候jvm才开始在内存堆区域分配空间,并赋值

Java基础(五):Java数组声明与初始化相关推荐

  1. java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器

    java的三大组件指Servlet.Filter.Listener.八大监听器指八个接口.前面介绍了Servlet,现在介绍一下Filter拦截器以及拦截地址的设置, Listener监听那些事件. ...

  2. Java基础篇4——数组

    Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...

  3. Java基础篇--Java 数组

    Java基础篇--Java 数组 Java 数组 声明数组变量 创建数组 处理数组 For-Each 循环 数组作为函数的参数 数组作为函数的返回值 多维数组 多维数组的动态初始化(以二维数组为例) ...

  4. Java基础-异常-throws Exception-抛声明

    Java基础-异常-throws Exception-抛声明 参考文章: (1)Java基础-异常-throws Exception-抛声明 (2)https://www.cnblogs.com/pl ...

  5. java基础总结-java技术栈快速复习

    java基础 java基础概念 java概述和语言背景 java语言是没有sun公司(Stanford University Network:斯坦福大学网络)在1995年推出的计算机语言 java之父 ...

  6. 一文带你深入理解【Java基础】· Java基本语法:程序流程控制

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  7. 黑马程序员:Java基础总结----Java语言编程规范

       黑马程序员:Java基础总结        Java语言编程规范:参考自SUN公司文档  ASP.Net+Android+IO开发..Net培训.期待与您交流!  I.   排版规范 A.  规 ...

  8. Java基础:Java抽象接口

    在Java中,一个没有方法体的方法应该定义为抽象方法,而如果一个类中含有抽象方法,则该类必须定义为一个抽象类.接口是功能的集合,同样可看做是一种特殊的数据类型,是比抽象类更为抽象的类,接口只描述所应该 ...

  9. java基础之java中的基本数据类型

    java基础之java中的基本数据类型 学习java一段时间了,使用java也差不多一年多了,可是对于后续的java的学习真的是后劲不足,或者是说懒惰吧,回想一下这一年多,用java最多的就是Andr ...

  10. JAVA基础之java语法

    JAVA基础之java语法 第一个java程序 // HelloWorld类名和文件名相同 public class HelloWorld {// 公开的 static 静态的 void 没有返回值 ...

最新文章

  1. 注入Attention,精度涨30%!谷歌发表最新多目标“动态抠图”模型
  2. mysql用户权限管理和增删改查操作
  3. 关于ie中easyui form组件load事件无法多次加载数据
  4. 操作系统实验报告4:Linux 下 x86 汇编语言3
  5. 万户OA应变大考验之新员工学习篇
  6. linux mxnet 编译,MXnet安装和编译
  7. Python实操:手把手教你用Matplotlib把数据画出来
  8. lamp+laravel
  9. Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci
  10. Android客户端获取服务器的json数据(二)
  11. C#:System.Data.SQLite数据库介绍
  12. ISO 27001解读(一)管理思路
  13. tomcat版本升级
  14. FishC笔记—26 讲 字典:当索引不好用时2
  15. [kuangbin带你飞] 专题一 简单搜索 题解(超详细注释,史上最强题解)
  16. SQL Server实现列转行
  17. 漂亮特殊字体可复制 特殊字体生成器
  18. 计算机成绩英语翻译,本科成绩单翻译中英文对照
  19. PS 怎么去掉图片上的文字
  20. HLS(HTTP Live Streaming)协议浅析

热门文章

  1. 主流视频通话SDK比较【转】
  2. codemirror 只读模式(vue)
  3. 【开发技能】研发线上事故总结!
  4. Eclipes下载安装
  5. Linux安装PHP
  6. IIP3/IMD/IM3/P1dB
  7. 今日头条下拉框推广,出效果付费
  8. Javase 笔记知识点概要
  9. html ui标记是什么,ui是啥
  10. 【C/C++】超大遥感影像读取和存储 GDAL