[JavaSE]数据类型【概念、划分、相互转换】—Day03

目录

前言

一、数据类型的概念

二、数据类型划分

三、基本数据类型转换

自动转型:

强制转型:

特殊点:

总结



前言

简单介绍了数据类型的概念数据类型划分、基本数据类型转换(主要针对基本数据类型)


一、数据类型的概念

数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型引用数据类型

基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。

引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。

二、数据类型划分

1)基本数据类型:byte、short、int、long、double、float、boolean、char

2)引用数据类型:类、接口、数组、枚举、注解

基本数据类型的具体定义对象如下:

 总结:

1.数字字面量:程序中出现的数字

        整数数字默认为int类型

        小数数字默认为double类型

2.float的值一定要加上f

3.字符类型的值必须使用单引号括起来

4.字符类型的值只能是一个字符

5.布尔类型的值只有trueflase

6.1个字节等于8bit(二进制中的位数)

7.取值范围:

byte:-128~127

int:-21亿~21亿

char:0~65535

8.boolean使用4个字节表示

原因:计算机底层没有boolean类型机器指令,boolean底层使用int(4字节)来表示 效率高 boolean类型的数组中元素是用1个字节表示

三、基本数据类型转换

Java的数据类型转换主要分为两种:自动转型强制转型

数值型的取值范围排序:byte<short<int<long<float<double

自动转型

取值范围小 转 大

//直接将float转成double
float f = 123.00f
double d = f;

//直接将byte转成double
byte b1 = 123;
double d1 = b1;
System.out.println(d1);

强制转型

取值范围大 转 小

	语法规则:
				变量 = (强转的类型)目标变量;

				double d = 123.123;
				float f = (float)d;//1.将double类型的变量d强转为float类型
                                   // 2.再将强转后的数据赋值给float类型的变量f
				long l = (long)f;
				int i = (int)l;
				short s = (short)i;
				byte b = (byte)s;
				
				System.out.println(b);
				
				//直接将double转成byte
				double d2 = 123.123;
				byte b2 = (byte)d2;
				System.out.println(b2);

特殊点:

案例一:

    byte b1 = 1;//1为int类型的数字字面量,但是1在byte类型的取值范围内,就直接赋值
  //byte b2 = 128;//报错:128为int类型的数字字面量,但是128不在byte类型的取值范围内,所以报错
		            
  //解决方案:
					
byte b2 = (byte)128;
					
  //底层分析:				
  //128 -- int - 32位 :0000,0000,0000,0000,0000,0000,1000,0000				
  //(byte)128  -  8位 :1000,0000					
  System.out.println(b1);				
  System.out.println(b2);//-128

案例二:

//12345678901为int类型的数字字面量,但是该数字已经超过了int类型的取值范围,所以会报错
int i = 12345678901;	

案例三:

//12345678901为int类型的数字字面量,但是该数字已经超过了int类型的取值范围,所以会报错
long l1 = 12345678901;
					
//12345678901L为long类型的数字字面量,该数字没有超过了long类型的取值范围,所以不会报错
long l2 = 12345678901L;

案列四:

float f1 = 1;//int转float:自动转型
					
//float f2 = 1.0;//double转float:强制转型
//解决方案1:
float f2 = (float)1.0;//将double(64位)转float(32位),浪费空间
//解决方案2:
float f2 = 1.0f;//直接认为1.0为float(32位),效率更高
					
System.out.println(f1);
System.out.println(f2);

问 哪一种方案更优

解决方案1:将double(64位)转float(32位)有空间的损失

解决方案2:直接认为1.0为float(32位),效率更高


总结

简单介绍了数据类型的概念数据类型划分(基本数据类型、引用数据类型)、基本数据类型转换(自动转型强制转型、特殊点)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单^不简单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值