Java基础(五):Java数组声明与初始化
目录
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数组声明与初始化相关推荐
- java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器
java的三大组件指Servlet.Filter.Listener.八大监听器指八个接口.前面介绍了Servlet,现在介绍一下Filter拦截器以及拦截地址的设置, Listener监听那些事件. ...
- Java基础篇4——数组
Java基础篇4--数组 1.数组的概念 当需要在Java程序中记录单个数据内容时,则声明一个变量即可 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是 ...
- Java基础篇--Java 数组
Java基础篇--Java 数组 Java 数组 声明数组变量 创建数组 处理数组 For-Each 循环 数组作为函数的参数 数组作为函数的返回值 多维数组 多维数组的动态初始化(以二维数组为例) ...
- Java基础-异常-throws Exception-抛声明
Java基础-异常-throws Exception-抛声明 参考文章: (1)Java基础-异常-throws Exception-抛声明 (2)https://www.cnblogs.com/pl ...
- java基础总结-java技术栈快速复习
java基础 java基础概念 java概述和语言背景 java语言是没有sun公司(Stanford University Network:斯坦福大学网络)在1995年推出的计算机语言 java之父 ...
- 一文带你深入理解【Java基础】· Java基本语法:程序流程控制
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
- 黑马程序员:Java基础总结----Java语言编程规范
黑马程序员:Java基础总结 Java语言编程规范:参考自SUN公司文档 ASP.Net+Android+IO开发..Net培训.期待与您交流! I. 排版规范 A. 规 ...
- Java基础:Java抽象接口
在Java中,一个没有方法体的方法应该定义为抽象方法,而如果一个类中含有抽象方法,则该类必须定义为一个抽象类.接口是功能的集合,同样可看做是一种特殊的数据类型,是比抽象类更为抽象的类,接口只描述所应该 ...
- java基础之java中的基本数据类型
java基础之java中的基本数据类型 学习java一段时间了,使用java也差不多一年多了,可是对于后续的java的学习真的是后劲不足,或者是说懒惰吧,回想一下这一年多,用java最多的就是Andr ...
- JAVA基础之java语法
JAVA基础之java语法 第一个java程序 // HelloWorld类名和文件名相同 public class HelloWorld {// 公开的 static 静态的 void 没有返回值 ...
最新文章
- 注入Attention,精度涨30%!谷歌发表最新多目标“动态抠图”模型
- mysql用户权限管理和增删改查操作
- 关于ie中easyui form组件load事件无法多次加载数据
- 操作系统实验报告4:Linux 下 x86 汇编语言3
- 万户OA应变大考验之新员工学习篇
- linux mxnet 编译,MXnet安装和编译
- Python实操:手把手教你用Matplotlib把数据画出来
- lamp+laravel
- Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci
- Android客户端获取服务器的json数据(二)
- C#:System.Data.SQLite数据库介绍
- ISO 27001解读(一)管理思路
- tomcat版本升级
- FishC笔记—26 讲 字典:当索引不好用时2
- [kuangbin带你飞] 专题一 简单搜索 题解(超详细注释,史上最强题解)
- SQL Server实现列转行
- 漂亮特殊字体可复制 特殊字体生成器
- 计算机成绩英语翻译,本科成绩单翻译中英文对照
- PS 怎么去掉图片上的文字
- HLS(HTTP Live Streaming)协议浅析