JAVA_SE基础——19.数组的定义
数组是一组相关数据的集合,数组按照使用可以分为一维数组、二维数组、多维数组
本章先讲一维数组
不同点:
不使用数组定义100个整形变量:int1,int2,int3;;;;;;
使用数组定义 int i[100]
数组定义:int i[100],只是一个伪代码,只能表示含义的。
一维数组
可以存放上千万个数据,并且这些数据的类型是完全是相同的。
定义数组
方式1(推荐,更能表明数组类型)
type[] 变量名 = new type[数组中元素的个数];
比如:
int[] a = new int[10];
数组名,也即引用a,指向数组元素的首地址。
方式2(同C语言)我认为搞JAVA的 还是建议用1,3
type变量名[] = new type[数组中元素的个数];
如:
int a[] = new int[10];
方式3 定义时直接初始化
type[] 变量名 = new type[]{逗号分隔的初始化值};
其中红色部分可省略,所以又有两种:
int[] a = {1,2,3,4};
int[] a = new int[]{1,2,3,4};
其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。
数组长度
Java中的每个数组都有一个名为length的属性,表示数组的长度。
length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。
例如:int[] x=new int[5]; //通过new关键字创建了一个长度为5,元素类型是int的数组实体。
1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。
2、单精度浮点型(float)的基本类型变量的默认值为0.0f。
3、双精度浮点型(double)的基本类型变量的默认值为0.0d。
4、字符型(char)的基本类型变量的默认为 “/u0000”。
5、布尔性的基本类型变量的默认值为 false。
6、引用类型的变量是默认值为 null。
7、数组引用类型的变量的默认值为 null。关键数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。
下面用例子来看数组没有赋值的数组初始化值 ..
class Shuzhu01
{
public static void main(String[] args)
{
int[] x=new int[10];
float[] x1=new float[1];
double[] x2=new double[1];
char[] x3=new char[1];
boolean[] x4=new boolean[1];
System.out.println("int[] x="+x[0]);
System.out.println("int[] x1="+x1[0]);
System.out.println("int[] x2="+x2[0]);
System.out.println("int[] x3="+x3[0]);
System.out.println("int[] x3="+x4[0]);
System.out.println("x数组的长度是"+x.length);
}
}
结果如下图:
如果在使用数组时,不想使用这些默认初始值,也可以为这些元素赋值。接下来通过一个案例来学习如何为数组元素赋值:
public class Shuzu02 {
public static void main(String[] args) {
int[] arr = new int[4]; // 定义可以存储4个整数的数组
arr[0] = 1; // 为第1个元素赋值1
arr[1] = 2; // 为第2个元素赋值2
// 下面的代码是打印数组中每个元素的值
System.out.println("arr[0]=" + arr[0]);
System.out.println("arr[1]=" + arr[1]);
System.out.println("arr[2]=" + arr[2]);
System.out.println("arr[3]=" + arr[3]);
}
}
结果是:
注意事项
每个数组的索引都有一个范围,即0~length-1. 在访问数组的元素时,索引不能超出这个范围,否者程序会报错
下面用一个例子来体现:
public class ShuzuZhuyi01 {
public static void main(String[] args) {
int[] arr = new int[4]; // 定义一个长度为4的数组
System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素
}
}
结果如下图:
上图所提示的错误信息是 数组越界异常 ArrayIndexOut0fBoundsException 出现这个异常的原因是数组的长度为4,其索引范围为0~3 代码:
System.out.println("arr[0]=" + arr[4]);
就是访问arr[4]的元素时超出了数组的索引范围。
在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常,接下来通过代码来体现下:
public class ShuzuZuyi02 {
public static void main(String[] args) {
int[] arr = new int[3]; // 定义一个长度为3的数组
arr[0] = 5; // 为数组的第一个元素赋值
System.out.println("arr[0]=" + arr[0]); // 访问数组的元素
arr = null; // 将变量arr置为null
System.out.println("arr[0]=" + arr[0]); // 访问数组的元素
}
}
结果是:
arr = null;
为空后就会出现此提示:
空指针异常 NullPointerException
不懂的留言或者加企鹅吧654249738
JAVA_SE基础——19.数组的定义的更多相关文章
- JAVA_SE基础——20.数组的常见操作
1.遍历数组 使用for循环来遍历数组 代码如下: public class Ergodic { public static void main(String[] args) { int[] arr ...
- JAVA_SE基础——23.类的定义
黑马程序员入学blog ... java 面向对象的语言 对象:真实存在的唯一的实物. 比如:我家的狗, 类: 实际就是对某种类型事物的共性属性与行为的抽取. 抽象的概念... 比如说:车 ...
- JAVA_SE基础——21.二维数组的定义
2 二维数组的定义 基本与一维数组类似 //定义一个3行5列的二维数组 //方法1,先new对象,然后再初始化每个元素 int[][] a = new int[3][5]; a[0][0]=1; a[ ...
- 《Java基础——数组的定义与使用》
Java基础--数组的定义与使用 一. 一维数组: 格式一: 数组类型 数组变量[]=new 数据类型[长度]; //需要后续赋值,且后续赋值时只能为单个元素赋值. 或 数组类型 数组变量 ...
- Java基础_0306:数组的定义与使用
数组 数组指的就是一组相关变量的集合.例如:如果说现在要想定义100个整型变量,按照传统的思路,可能这样定义: int i1,i2 ,... i100,一共写100个变量. 以上的形式的确可以满足技术 ...
- Java基础--数组的定义
1.数组的定义 数组:一组能够储存相同数据类型值的变量的集合. 2.数组的赋值方式 (1)使用默认的初始值来初始化数组中的每一个元素 语法:数组元素类型[]数组名 = new数组元素类型[数组中元素的 ...
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- [.net 面向对象编程基础] (19) LINQ基础
[.net 面向对象编程基础] (19) LINQ基础 上两节我们介绍了.net的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...
- JAVA_SE基础——8.基本数据类型
基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...
随机推荐
- iOS开发--XMPPFramework--好友模块(四)
创了一个XMPP即时通讯交流群140147825,欢迎大家来交流~我们是一起写代码的弟兄~ 前面几篇,我们讨论了环境的配置,框架的导入和用户登陆,这一篇我们来说说好友模块. 在进入正题之前,我们来说下 ...
- Micropython Turnipbit 换挡风扇 旋转按钮控制直流电机转速
学过物理学的我们都知道换挡风扇的原理,一般按钮控制电感分压或者电容分压,以达到控制电流的目的.那么我们可不可以使用Turnipbit模拟这个系统呢?其实是很简单的.类似于之前用Tpyboard做的智能 ...
- Myeclipse插件快速生成ssh项目并配置注解 在action层注入service的超详细过程
最近发现,我对于ssh的 自动注入配置 还是不熟悉,于是整理了一下 终于做了一个 简单的 注入配置出来. 以前都是在applicationContext.xml 里面这样配 <bean id=& ...
- 杭电oj-1002-A+B Problem
Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...
- WebStorm配置Vue开发环境
虽然最新版的前端开发利器WebStorm支持了Vue,但是大部分人的WebStorm依然是默认不支持Vue的老版本(比如之前的我),所以需要手动添加WebStorm对Vue的支持.要想让WebStor ...
- C++实验指导
选择 Build > Set Active Configuration 菜单,在对话框中选择 Win32 Debug. 当程序调试成功后,一般将其生成发布版,这样可使运行程序优化,方法是在上述对 ...
- JavaScript编码规范(1)
参考的是百度公司的JS规范,分为两部分.这是第一部分 [建议] JavaScript 文件使用无 BOM 的 UTF-8 编码. 空格 [强制] 二元运算符两侧必须有一个空格,一元运算符与操作对象之间 ...
- C# 发送手机短信
由于使用 收费 第三方 屏蔽 可能有 免费 第三方. private const string Cdkey = "8S*********************";密钥id p ...
- python笔记之序列
str字符串 表达:单引号,双引号,反斜杠 'let\'s go.' #只使用单引号,外部使用单引号,内部单引号用反斜杠 "let's go. " #单双引号混合使用 长字符串 使 ...
- 功能性AI术语表
算法:一套计算机要遵循的指令.一个算法可以是一个简单的单步程序也可以是一个复杂的神经网络,但是通常被用来指一个模型. 人工智能:这是一个统称.广义上说,软件意味着模仿或取代人类智能的各个方面.人工智能 ...