Java基础(三) 数据类型与数组

这个系列的文章标题都是Java基础,但是并不打算谈一些所有语言共通的东西,比如变量赋值、循环、判断等等。我觉得学习一门语言应该把注意力更多的放在它的特性上,而不是太过关注语言的通性。废话不多说了,从这篇文章开始,正式进入java的学习吧。

基本数据类型和引用数据类型

java中的8种基本数据类型

  • 数值型
    • 整型:byte、int、short、long
    • 浮点型:float、double
  • 字符型:char
  • 布尔型:boolean

除了上述8种基本数据类型以外,其余的全部都是引用数据类型,数组也是引用类型。这两种类型的数据之间有着本质的区别:基本类型数据指的是值,而引用类型数据指的是地址值。虽然都是值,但二者绝不是同一种东西。

在理解上面的概念之前,我们先要知道java中的两种操作:

  • =:赋值操作
  • ==:比值操作

对于基本类型数据而言,赋值、比值指的是数值;对于引用类型数据而言,赋值、比值指的是地址值。(请一定要牢记此概念!)

8种基本数据类型在java中都有对应的引用类型,分别是Byte、Integer、Short、Long、Float、Double、Character、Boolean。

下面我们来看一个例子:

public class Test {
	
	public static void main(String[] args) {
		
		int a = 666;
		int b = 666;
		System.out.println(a == b);   // true
		
		Integer c = 666;
		Integer d = 666;
		System.out.println(c == d);   // false
	}
	
}

例子中变量a、b是基本数据类型,经过赋值操作之后变量a、b存放的都是值(666)。而对于比值操作a == b,所表达的含义应该是这样的:666 == 666。所以打印结果为true是合理的。

相对的,变量c、d是引用数据类型。将666赋值给变量c,变量c所存放的是666在内存中地址值(假设该地址值是15db9742),而变量d中所存放的则是另一个666在内存中的地址值(假设这个地址值是15db9747)。所以对于比值操作c == d,它所表达的含义是这样的:15db9742 == 15db9747。显然它们是不相等的,所以输出的打印结果为false。

具体可以参考下图:

 

数组

8种基本数据类型中并不包含数组,换而言之,数组是一种引用数据类型。所以,一个数组类型变量存放的是地址值。

数组声明

  • 一维数组

int[] arr;     // 标准的声明格式

int arr[];     // 当然你也可以这样声明

  • 二维数组

int arr[][];    // 标准的声明格式

int[] arr[];    // 声明数组对[]的位置没有强制要求,只要[]出现在类型之后即可

数组初始化

数组初始化有两种方式:静态初始化和动态初始化。

  • 静态初始化

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

int[] arr = {1,2,3};    // 简化的静态初始化

  • 动态初始化

int[] arr = new int[3];

数组的静态初始化需要提供元素的初始值(0~任意个)动态初始化则需要指定元素的个数(>=0)。需要注意的是,不要将静态初始化和动态初始化混在一起使用。

 int[] arr = new int[3]{1,2,3};  // 错误的初始化

使用动态初始化创建数组实例,数组中的每个元素也被赋予了初始值,该初始值是元素数据类型的默认值初始值。不同类型数据的默认初始值见下表:

数据类型默认值
byte,short,int,long0
float,double0.0
char一个空字符,即 ‘\u0000’
booleanfalse
引用类型null

数组一旦初始化完成,该数组的长度就被固定,无法再进行修改。

二维数组初始化

二维数组的初始化和一维数组略有不同,这个不同主要体现在动态初始化上。我们先来看二维数组是怎么进行静态初始化的:

int[][] arr = {{1,2,3}, {4,5,6}, {7,8,9}};

上面我们声明了一个由3个等长的一维数组所组成的二维数组,这不难理解。接下来我们稍作修改:

int[][] arr = {{1,2,3}, {4,5}, {6}};

上面的二维数组所包含的每个一维数组的长度都不一样。既然如此,那么我们可以试着这样来动态初始化二维数组:

int[][] arr = new int[3][];

上面声明的二维数组是由3个不定长的一维数组所组成的,换而言之,这个二维数组中所包含的是三个尚未创建的一维数组,这样一来,二维数组便有了极大的灵活性。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值