栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础数据类型与字面常量

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础数据类型与字面常量

        

前言:如果一个厨师对不了解食材,那么他就不可能做好一道菜。对程序员来说,程序就像一道菜,数据就像食材,操作符等相关的语法就像就是对菜的加工。以下是Java的数据类型的整体框架。而在所有的Java数据类型中,基础数据类型又是基础中的基础,这也是本文的主要讨论对象。

目录

数值型

int

long

short

byte

浮点型

double

  float

字符型char

布尔类型boolean

字面常量

类型转换

怎么记忆?


数值型

数值型可以简单的理解为整数。

int

        之所以先介绍int类型,是因为int类型的可以说是程序设计中最为常用的类型了,且其具备代表性,因此放在第一个介绍。

        定义方式: int 变量名 = 整数或变量;

        大小:四个字节(任何环境下)。实际上任何Java的基本数据类型在任何环境下的大小都一致,是因为JVM的存在。这也是Java程序的可移植性强的重要原因之一。以下介绍的其他基础数据类型都在任何环境下一致,因此下面就不再赘述。

       对应包装类:Interger

        取值范围:最大值为Integer.MAX_VALUE 最小值与Integer.MIN_VALUE

        注意点:int的最大值+ 1的结果是最小值,而int的最小值 - 1是最大值,这涉及原码、反码和补码的知识。

long

        当int类型的取值范围不能满足具体的需求时,就轮到Long上场了。

        定义方式: long 变量名 = 整数L或变量;或 long 变量名 = 整数l;

        一般推荐第一种定义方式,这是因为小写l容易和数字1混淆。

        大小:八个字节。

        对应包装类:Long

        取值范围:long的最值取得方式类比int类型,且其最大值 + 1 和最小值 - 1的结果同样可以参考int类型。(实际上整数基本数据类型的的最值和运算特性都类似,以下的short和byte类型的不再赘述。)

short

         定义方式: short 变量名 = 整数或变量;(不能超过short的取值范围)

        大小:两个字节。

        对应包装类:Short

byte

        实际上byte是Java中较为特殊的基础数据类型,有自己独特的使用场合,这里仅讨论基础知识。

        定义方式: byte 变量名 = 整数;(不能超过short的取值范围)

        大小:一个字节。

        对应包装类:Byte

浮点型

        浮点即带有小数点的数值,可以表示小数。

        特性:由于浮点型的内存里的存储特点,无法计算出完全精确的数值。

double

        最常用的浮点型。

         定义方式: double 变量名 = 数值或变量名;

        大小:8个字节。

        对应包装类:Double

  float

        定义方式: float 变量名 = 数值F或变量名; 或   float 变量名 = 数值f或变量名;

       大小:四个字节

        对应包装类:Float

字符型char

        大小:两个字节。

        这是值得注意的地方,不同与C语言的1个字节。实际上这是由于Java采用了不同的编码方式 nicode

        取值范围特点:没有负数。

        Java里是没有无符号数的,但char类型的特例。

        对应包装类:Character

布尔类型boolean

大小:一般认为无明确定义,存在争议。也有的书上写1个字节,有的书上写1个bit位。

取值范围:true和false两个取值(只有这两个可能)

对应包装类:Boolean

注意点:boolean和其他的基本数据类型无法转换(包括int),这与很多常见的语言不同,这是也是基本数据类型里最容易让人混淆的地方。

字面常量

        在基本数据类型的初始化过程中,最常用的就是用数值直接赋值了,这些数值有一个更规范的术语——字面常量。但这也是,这也是很容易混淆的地方。字面常量可以用十进制表示、十六进制表示和指数表示等等,还可以加后缀字符(之前你已经见到在字面常量后面加L或F的操作了,这些就是字面常量的后缀字符),本博文主要讨论字面常量的类型确定方式。

        实际上,编译器没办法直接确定所有的字面常量的类型。有时可以直接确定,有时有需要添加字面常量加后缀字符以“帮助”编译器确定字面常量的类型。

        那编译器什么时候可以直接确定字面常量的类型呢?即当字面常量没有超过你要赋值的变量的取值范围时。所以在日常编写代码时,最好不要超过要赋值的变量的取值范围,否则编译器会判定这个字面常量是另一个更大的类型,而无法成功的赋值。

        例如:

byte b = 44;

这是成功赋值的案例。

//byte b = 128;//error

        编译器报错:无法把int赋值给byte。

        这里的逻辑是:由于128超过了byte的取值范围,编译器把128认为是一个int变量,而int类型无法存放进比int小的变量中(除非用了使用强转操作符)。(顺带一提,当没有更合适的类型时,编译器会把整数字面常量认为是int类型,而浮点字面常量认为是double。)

类型转换

        这是很值得说道的一个点。基本数据类型的转换与基本数据类型息息相关,涉及了操作符的知识,本篇为了不引起混淆,本博客只提到了int和boolean类型的转换问题,而其他的类型转换没有再提。实际上类型转换包括了扩展转换(小转大)和窄化转换(大转小),这部分的内容将在操作符章节的类型转换中具体讲解。

怎么记忆?

        可以参考这样的记忆顺序:基本先按照字节大小的顺序,再把浮点和布尔单独分出来记忆。

        一个字节:byte

        两个字节:short、char

        四个字节:int

        八个字节:long

        浮点:四个字节:float、八个字节:double

        布尔:boolean

        连起来就是:byte、short、char、int、long、float、double、boolean。刚好8个。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322566.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号