theboyaply
theboyaply
发布于 2020-01-02 / 951 阅读
0
0

java基础一(基本数据类型介绍及定义变量)

四类八种

类型占用存储空间表数范围
byte1字节-128 ~ 127
short2字节-2^15 ~ 2^15 - 1
int(默认)4字节-2^31 ~ 2^31 - 1
long8字节-2^63 ~ 2^63 - 1
------------
float4字节-3.403E38 ~ 3.403E38
double(默认)8字节-1.798E308 ~ 1.798E308
------------
char2字节
------------
boolean1字节 or 4字节 ?

注:一个字节 = 1byte = 8bit(位)。基本数据类型定义时如果不赋予初始值,系统会默认给定一个对应的值。

定义变量

  • 整型定义

整型包括byte short int long,java中定义int变量如果直接赋值数字,默认为int型。如果没有初始化值,int类型默认值为0。

	byte b = 1;
	short s = 1;
	int i = 1;

	// 定义long,如果数值超过int数值范围,需要在后面加一个L
	long l = 1;

	// 加上一个L,表示直接定义一个long类型。
	long l = 1L;
  • 浮点型定义
	// 浮点型默认为double,double默认值为0.0
	double d = 1.1;

	// 如果需要定义float类型,需要加上一个f/F表示定义一个float类型
	float f1 = 1.1f;
	float f2 = 1.1F;
  • 字符型定义
	//单引号表示,只能表示一个字符, 涵盖所有书面语字符,包括字母、标点、数字、中文等等。char默认值为空字符。
	char c1 = 'a';
	char c2 = '9';
	char c3 = '中';

	// char可以表示转义字符, 使用\来将其后面的字符转变为特殊字符型常量
	// 例如换行符
	char c4 = '\n';

	// 使用Unicode值表示字符型常量, \uxxx,其中xxx代表一个十六进制整数, 每个字符对应一个数值
	// 例如 \u1234 表示 ?
	char c5 = '\u1234';
  • 布尔型定义
	//boolean只能是true 或者 false,默认为false
	boolean b = false;

类型转换

自动类型转换:当容量(数值范围)小的数据类型与容量大的数据类型做运算时,容量小的会自动转换为容量大的数据类型。
规则:char,byte,short -->>int -->>long -->> float -->> double
PS: 当char,byte,short之间作运算时,包括他们自己之间,结果默认为int类型

	int i = 1;
	short s = 1;
	// 默认转为容量大的int
	int i2 = i + s;

	int i = 1;
	float f = 1.1F;
	// 默认转为容量大的float
	float f2 = f + i;

float是4个字节,long是8个字节,但是long能够自动转换为float,主要是因为在内存中浮点数和整型数存储方式不一样。整数在内存中是直接以二进制形式存储的,而浮点数是以指数方式存储的。4字节的float和8字节的long,float的数值范围要远大于long,因此long能够自动转换为float。
https://blog.csdn.net/writing_happy/article/details/78880606

	long l = 1;
	float f3 = l + 2;

char表示的字符代表的是一个数字,所以char类型也可以用来做运算

	// a代表的数值是97,A代表的是65(均指ASCII码)
	char c = 'a';
	int i = c + 1; // i = 98

强制类型转换:容量大转换为容量小的,需要使用强制类型转换符: (),里面放需要转换的类型
强制类型转换存在的问题:精度损失(丢弃高位数据,保留低位数据)

	long q = 12345L;
	int i = (int) q;

	// 精度丢失举例:
	// int类型的12345二进制为0000 0000 0000 0000 0011 0000 0011 1001
	// 转换为byte(1字节/8位)时,丢弃高位数据,保留低位的0011 1001 -->> 57
	int i = 12345;
	byte q = (byte) i;

评论