数据类型详解

数据类型详解,第1张

数据类型用来声明变量,程序在运行过程中个根据不同数据类型分配不同大小的空间。
数据类型在java语言中包括两种
第一种基本数据类型:
		基本数据类型又分为四大类、八小种:
			第一类:整数型 没有小数的
					byte、short、int、long
			第二类:浮点型
					float、double
			第三类:布尔型
					boolean 只有两个值true真、false假
			第四类:字符型
					char   java中规定字符型字面量必须使用单引号括起来,属于文字
			八小种:
				byte、short、int、long
				float、double
				boolean
				char
第二种:引用数据类型
		字符串型String属于引用数据类型
		String字符串型不属于基本数据类型范畴
		java中除了基本数据类型之外,剩下的都是引用数据类型。
8中种基本数据类型中
	整数型byte、short、int、long有什么区别?
	浮点型float和double有什么区别
	区别 占用的空间大小不同
		关于计算机存储单位
			计算机只能识别二进制
			1字节=8bit (比特)
			1bit就是一个1或0
			byte b =2  0000 0010
			short s =2  00000000 00000010
			……
			类型		占用字节数量		取值范围
			---------------------------------------------------
			byte			1				-128~127
			short			2			-32768~32767
			int				4			-2147483648~2147483647
			long			8				
			float			4
			double			8
			boolean			1
			char			2				0~65535
		字符型	char		单引号
		关于java中的转义字符
			java语言中“\”负责转义
			\t表示制表符tab		
			\n表示换行		
			\’表示一个普通的 ‘		
			\表示一个普通的\
			\u 表示后面的是一个字符的unicode编码
		整数型早java语言中共四种类型
		byte 	1个字节	
		short	2个字节
		int		4个字节
		long	8个字节
		对于以上的四个类型来说,最常用的是int
		在java语言中,整数型字面量有四种表示形式
		十进制		二进制		八进制		十六进制

在任何情况下整数型的字面量数据默认被当作int类型处理,如果希望该整数型字面量被当作long类型来处理,需要在字面量后面添加L/l
小容量可以直接赋值给大容量,称为自动类型转换
大容量赋值给小容量必须加强制类型转换符,进行强制类型转换(可能造成精度损失)
long x=100; int y =(int)x
long 类型100L:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100
以上的long类型100L强制转换成int类型,会自动将前面的四个字节“砍掉“,
00000000 00000000 00000000 01100100
当整数型字面量没有超过byte、short的取值范围,那么这个整数型字面量可以直接赋值给byte类型的变量
关于数据类型详解
字符型 char
整数型 byte short int long
浮点型 float double
布尔型 boolean
整数能否直接赋值给char?
char c2=97;
System.out.println(c2); //输出”a”
当一个整数赋值给char类型变量的时候,会自动转换成char字符型,最终的结果是一个字符
当一个整数没有超出byte short char的取值范围的时候,这个整数可以直接赋值给byte short char类型的变量

原码、补码、反码

计算机在任何情况下都只能识别二进制。
计算机在底层存储数据的时候,一律存储的是“二进制的补码形式”
计算机采用补码形式存储数据的原因是:补码效率最高

什么是补码

对于一个正整数来说,:二进制补码、原码、反码是同一个,完全相同
对与一个负数来说:
byte i = -1
对应的二进制原码 100000001
对应的二进制反码(符号位不变,其他位取反)11111110
对应的二进制补码 (反码加一)11111111
分析byte b = (byte)150;
这个b 是多少?
int 类型的4个字节的150的二进制码 00000000 00000000 00000000 10010110
将以上的int类型强制转换为一个字节的byte,最终在计算机中的二进制码是:10010110

	注:计算机永远存储的都是二进制补码形式,也就是说上面的10010110是一个二进制补码形式,可以采用逆推的方式推算出二进制补码对应的原码为 -106(强制转换精度损失)

char 、short、 byte 做混合运算的时候 是各自先转换成int 再做运算
char c1 = ‘a’;
byte b1 = 1;
//这里的 + 负责求和
System.out.println(c1 + b); //98
多种数据类型做混合运算的时候,最终的结果是最大容量对应的类型
char 、short、 byte 除外,他们做混合运算的时候 是各自先转换成int 再做运算
int temp = 10/3; //3
int temp2 = 1/2; //0
在java中计算结果不一定是精确的

浮点型

float //4个字节 double //8个字节
float是单精度 double是双精度 double更精确
但是,如果是在银行或财务方面,double也是远远不够的,对于这种情况,java提供了一种精度更高的引用数据类型,java.math.BigDecimal

//long类型占用8个字节,float占用4个字节,但是float的容量更大。
//任意一个浮点型都比整数型空间大
java中规定任意一个浮点型数据被当作double来处理,如果想让这个浮点型数据被当作float类型来处理,那么请在字面量后面加F/f
1.0 //double 1.0F //float型
float f = 3.14; 不兼容的类型,从double转换到float可能会有精度损失
float f = 3.14f; 或float f = 3.14F; 或float f = (float)3.14;
int i = 10.0/5; //不兼容的类型,从double转换到int可能会有损失
int i = (int)10.0/5; //2 或 int i = (int)(10.0/5); //2

布尔型

在java语言中,boolean只有两个值 true和false
布尔类型在实际开发中使用在逻辑判断当中,通常放到条件的位置上(充当条件)
在类型转换的时候需要遵循的规则

  1. 八种基本数据类型中,除boolean不能转换,其他七种类型间都可以进行转换
  2. 如果整型字面量没有超过byte、short、char的取值范围,可以直接将其赋值给byte、short、char类型的变量
  3. 小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte
  4. 大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但是运行时可能出现精度损失
  5. byte、short、char类型混合运算时,先各自转换成int类型再做运算,多种数据类型混合运算,各自先转换成容量最大的哪一种再做运算
如果你在阅读完本文之后觉得内容有用的话请顺手点赞关注!!!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/915980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存