Java的数据类型(了解)

在定义常量和变量之前,我们首先了解有哪些数据类型。Java是强类型语言,对于每一种数据都定义了明确的数据类型。

  • 基本数据类型:整数、小数、布尔、字符。
  • 引用数据类型:class(类)、interface(接口)、数组、Enum(枚举)。
  • String:字符串。
  • null:为除基本类型以外的类型赋值。

基本类型和其他如下表格:

类型关键字说明
整数byte8位有符号整数,范围:-128 到 127
short16位有符号整数,范围:-32,768 到 32,767
int32位有符号整数,范围:-2³¹ 到 2³¹-1
long64位有符号整数,范围:-2⁶³ 到 2⁶³-1
小数float单精度32位浮点数
double双精度64位浮点数
布尔boolean逻辑类型,只有 true 和 false 两个值
字符char16位Unicode字符,范围:‘\u0000’ 到 ‘\uffff’
字符串String字符序列,是类不是基本数据类型
nullnull不是数据类型,是引用类型的特殊值,表示不引用任何对象

变量的定义和使用

变量是在内存中开辟一块空间,用于存储可变数值。
变量的定义语法:[数据类型] [变量名];
初始化变量的定义语法:[数据类型] [变量名] = [变量值];
同类型多个变量定义语法:[数据类型] [变量名] = [变量值],[变量名],[变量名];

变量定义说明:

  • 定义变量可以不赋值,如果我们定义的时候就赋值,该值为初始值
  • 同类型定义多个变量,变量名之间用逗号,隔开
  • 变量名也称为标识符,命名可以参考Java命名规范

我们要使用定义好的变量,只要写定义的变量名即可获取对应的值(这里会涉及到变量作用域,先了解后面会阐述),下面演示在main方法中定义,变量只能在main方法内使用。

VarietyDemo演示类:

class VarietyDemo{
	public static void main(String args[]) {
		byte byteVal = 2,byNum = 7; //同类型定义多个变量并初始化值
		short shortVal = 9;
		int intVal; //未初始化值
		intVal = 10;
		long longVal = 666L;
		float floatVal = 3.3F;
		double doubleVal = 3.1415926;
		boolean blnVal = true;
		char charVal = 'a';
		String strVal = "hhhhh";
		System.out.println(intVal); //输出intVal的值
		intVal = 110; //修改intVal的值
		System.out.println(intVal); //再次输出intVal的值
	}
}

注意:float类型值后面要加 F(不区分大小写),long类型值后面要加 L(不区分大小写),整数默认是Int类型,小数默认是double类型。

编译运行后,结果如下:
在这里插入图片描述

上面intVal赋值的内存图解:
在这里插入图片描述

常量(final修饰)的定义和使用

常量是用final修饰的变量,且一旦定义不能改变的数值为常量。
常量定义语法:[final] [数据类型] [常量名];
初始化常量定义语法:[final] [数据类型] [常量名] = [常量数值];
同类型多个常量定义语法:[final] [数据类型] [常量名] = [常量值],[常量名],[常量名];

常量定义说明:

  • 定义常量可以不赋值,如果我们定义的时候就赋值,该值为初始值
  • 同类型可以定义多个常量,每个常量名用逗号,隔开。
  • 如果定义时没有赋值,一旦赋值后就不能改变
  • 常量名也称为标识符,命名规范可以参考Java命名规范
  • 其实常量也是变量,只是赋值后不能改变。

根据上面的数据类型,常量也有整数常量、小数常量、布尔常量、字符常量、字符串常量和null。

FinalDemo演示类:

class FinalDemo{
	public static void main(String[] args){
		final int INT_VALUE; //未初始化值
		INT_VALUE = 12;
		final double DOUBLE_VALUE = 3.14;
		final boolean BLN_VALUE = true, FLAG = false; //定义同类型多个常量
		final char CHAR_VALUE = 'A';
		final String STR_VALUE = "我爱Java";
		//null不能在基本类型使用
		final String NULL_VALUE = null;
		System.out.println(INT_VALUE); //输出“12”
		System.out.println(DOUBLE_VALUE ); //输出“3.14”
		System.out.println(BLN_VALUE ); //输出“true”
		System.out.println(CHAR_VALUE ); //输出“A”
		System.out.println(STR_VALUE); //输出“我爱Java”
		System.out.println(NULL_VALUE); //输出“null”
	}
}

编译运行,结果如下:
在这里插入图片描述
注:以上定义的常量是局部常量,只能在定义的方法内使用。

错误演示代码:改变赋值后的常量

class FinalDemo{
	public static void main(String[] args){
		final int INT_VALUE;
		INT_VALUE = 12;
		System.out.println(INT_VALUE); //输出“12”
		INT_VALUE = 30; //再次给INT_VALUE赋值,编译报错
		System.out.println(INT_VALUE);
	}
}

编译后报错如下:
在这里插入图片描述

如果定义的常量在main方法外,编译运行,提示“无法从静态上下文中引用非静态变量STR_VALUE”,因为main方法是static修饰的静态方法(后面会学到这里先不过多阐述),我们可以定义的常量都用static修饰,变成静态常量,或者定义成局部常量(在main方法内定义常量)。
在这里插入图片描述

修改FinalDemo演示类常量为静态常量:

class FinalDemo{
	static final int INT_VALUE = 12;
	static final double DOUBLE_VALUE = 3.14;
	static final boolean BLN_VALUE = true;
	static final char CHAR_VALUE = 'A';
	static final String STR_VALUE = "我爱Java";
	//null不能在基本类型使用
	static final String NULL_VALUE = null;

	public static void main(String[] args){
		System.out.println(INT_VALUE); //输出“12”
		System.out.println(DOUBLE_VALUE ); //输出“3.14”
		System.out.println(BLN_VALUE ); //输出“true”
		System.out.println(CHAR_VALUE ); //输出“A”
		System.out.println(STR_VALUE); //输出“我爱Java”
		System.out.println(NULL_VALUE); //输出“null”
	}
}

编译运行,结果如下:
在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐