[Java笔记]1.1 Java基本知识——基本数据类型与类型转换

·数据类型

Java是一种强类型语言,这意味着我们需要为每一个变量声明一种类型。在Java中,数据类型分为两大类,一类是基本数据类型,一类是引用数据类型。如图。

本篇先介绍基本数据类型,引用数据类型需要在引入对象的概念之后介绍。

1.数值型

整数型:byte 1字节(-2^7 ~ 2^7-1);short 2字节(-2^15 ~ 2^15-1);int 4字节(-2^31 ~ 2^31-1);long 8字节 (-2^63 ~ 2^63-1)。在Java中,整型变量的长度是固定的,而不是像C/C++一样受处理器影响。这也是Java可移植性的重要体现。

浮点型:单精度浮点——float 4字节 (符号位 1bit ,指数位 8bit,尾数位 23bit,大约±3.40282347E+38);双精度浮点——double 8字节(符号位 1bit ,指数位 11bit,尾数位 52bit)。在Java中,浮点数默认类型为double,若要使用float需要在数字后面加字母F(大小写均可),例如 float f = 3.14F; 同样,在double类型浮点数后也可以加后缀D,double d = 3.14(D);

2.字符型

char 2字节 占一个采用UTF-16编码表示的Unicode码点的代码单元,可以表示大多数常用Unicode字符。

在实际使用中,一般不建议使用char,因为某些特殊字符需要大于一个的代码单元来表示,所以推荐在处理字符问题时使用String。

3.布尔型

boolean 1字节 仅有true和false两个值,用来判断逻辑是非。true、false必须小写且不能用1、0代替(区别于C++)。

·类型转换

在运算时,我们经常会将各种不同类型的值混合运算,而实际执行过程中,不同类型的量会转换成同一类型再进行运算。上图列出了各种基本数据类型的合法转换。实线箭头表示无信息丢失的转换,虚线箭头表示可能有精度损失的转换。例如,123456789是一个大整数,它的位数比float的精度高。当这个数转化位float时,会损失一定的精度。

int a = 123456789;

float b = a;//b等于1.23456792E8

当使用两个数值型的数据进行运算时,类型转换会遵循以下原则:

如果两个操作数中有一个是double类型,另一个也会转换为double。

当没有double时,若有一个为float类型,另一个也会转换为float。

当没有double和float时,若有一个为long类型,另一个也会转换为long。

否则,只含有byte、short或int时,两个操作数都会转换为int类型。

 

·强制类型转换

上面我们了解了在必要时,较“低级”的类型会转换为较“高级”的类型。但反过来,“高级”有时也需要转化为“低级”。虽然这种转换可能会丢失一些信息,但在Java中,这种转换是被允许的。此时,就需要用“强制类型转换”。强制类型转换的语法格式为在圆括号中填入转换的目标类型,后面紧跟待转换的量。例如:

byte a = (byte)128; //此时a等于-128,这涉及到原反补码的知识,不展开说明

double b = 3.14;

int c = (int)b; //此时c等于3,小数部分直接丢弃。

由以上语句可以看出若要将一个数值的类型强制类型转换为另一种,而又超出了目标类型的表示范围,结果会被截断成一个不同的值。所以,在强制类型转换时要非常小心数据丢失。

【注】当右操作数为较高级常量,而左操作数为较低级变量时,Java会自动判断右边的值是不是在左边类型的合法范围内。若是,则无需强转,自动将结果类型改为左操作数类型。若否,则会报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值