java八大基本数据类型

exceptionblog 2017-12-02 原文

java八大基本数据类型

java中八大数据类型的储存空间以及使用场景表示如下

)1.int:4字节,可以表示的数为-2^31 – 2^31-1。整数的默认类型。封装类也如此 。整数相除的时候,会舍弃小数部分。结果也是整数,例如 5/3 = 1;且整数在运算的时候,要注意内存溢出的问题。

 

 

)2.long:8字节,可以表示的数为 -2^63 — 2^63-1。常用来表示int表示不了的整数类型。例如System.currentTimeMills()方法,返回的是1970.1.1到今天所经历的毫秒数。这个数字就是int所不能表达的,必须用long来表达。如果long类型还不能表达你所要的整数,推荐用bigInteger,可以表示任意的整数

long a = 20;是可以的,但是如要使用他的封装类,那么数字后面必须加L/l  例如 Long a = 20L;

 

)3.float:4字节,由于浮点数的默认类型是double,因此想使用float的时候就要在浮点数后面加f/F。整数后面可以不用加,因为这是强制转化。在封装类Float中,无论是整数还是浮点数,后面都要加f/F。

 

)4.double:8字节:常用来表示浮点数。默认的浮点数数据类型(Double中也如此)。且在计算机二进制中,无法正确的表示十分之一。所以会出现舍入误差。

如果double类也无法达到你所要表示的浮点数,推荐使用BigDecimal来表示,他可以表示任意的浮点数。

 

)5.boolean:1个字节:只有两种值,true/flase

 

)6 char:2字节,只能表示0-2^16-1也就是0- 65535的整数。这个值对于Unicode编码。对于世界上所有的字符符号。对char类型和他的包装类Character的赋值如下

  )6.1  char a = 5254;直接使用(0-65535)常量赋值.

  )6.2 char a = ‘A’; 直接使用字符赋值

  )6.3 char a = ‘\u0041’使用Unicode中16进制的格式

由于java中某些字符有独特的意义,因此要使用这些字符时,需要用转义字符 ‘\’

 

)7.byte:1字节,用来表示 -128 – 127之间的整数。赋值的时候可以直接用整数常量赋值。对其包装类也是如此。即 Byte(byte) a = 20;

)8.short :2字节,用来表示-2^15 – 2^15-1之间的整数。赋值的时候可以直接用整数常量,对其包装类也是如此。即 Short(short) b = 20;

 

 

接下来时基本数据类型之间的转化

 

  )自动类型转化:从小类型到大类型之间的转化称为自动类型转化,因为大类型肯定可以表示小类型的数据,不会发生精度丧失。编译器会帮我们自动的进行自动类型转化。类型间的大小关系如下。在多种类型的运算中,结果会自动向较大的类型转化。且在三目运算符中,结果也会向较大的数据类型转化,如

int a = (5 > 4)? 20 : 6.0; 此时a为20.0.因为在三目运算符中有浮点数,因此,结果会自动向大类型转化。

也就是说,该图中左边的小类型都能被编译器自动转化成右边的大类型。

 

  )强制类型转化:从大类型到小类型之间的转化。需要强制转化符。且可能出现精度丧失或者精度溢出的风险。精度丧失指的是小类型无法准确的描述大类型的数据,尤其时浮点数。很可能小数点后面的几个就不见了。精度丧失不会四舍五入。而是直接抹去后面无法表示的内容。例如 int a = (int) 20.56484615;a = 20;

精度溢出是指大类型的数据超出了小类型的容量,此时编译器不会报错,但是结果就不如你意了。例如 int a = (int)1024^4*20; 此时a = 0;

 

 

最后说一个难点,就是int/short/byte/char之间的赋值,有他们独特的规定。也就说说,short/byte/char类型的赋值。如果赋值为一个整数常量,虽然整数常量默认是int,但是也无须进行强制转化。但是如果赋值为一个变量,无论该变量内部是否为整数,都必须进行强制转化。且他们三者在运算的时候,要先自动转化为int之后,再开始运算,也就是说,运算结果都是int。那么这个时候,就必须对这个结果进行强制类型转化才能赋值给byte,char,short他们了。

在java运算符中,+=、-=、*=、/=这些运算符都会自动帮你进行类型转化,包括强转类型转化,因此byte a = 1; a += 1;就不会报错。无需显示进行强制转化。

例如: byte a = 20;(虽然20默认是int,但是不用强制转化)

   byte a = 20 + 20;(此时也无需进行强转,因为赋值为整数常量)

   byte b =  a + 20;(此时a在运算的时候,自动转化成了int,运算结果也是int,此时该写法就是错的。因为int的值不能直接赋给byte,必须进行强制转化)

改为 byte b = (byte) a + 20;

  int   a = 20; chat b = a;(此时b赋值不是一个整数常量,而是一个变量,因此就要进行强转,要不然会报错)

 

发表于 2017-12-02 15:54 一个待业码农的救赎 阅读() 评论() 编辑 收藏

 

版权声明:本文为exceptionblog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:http://www.cnblogs.com/exceptionblog/p/7954519.html

java八大基本数据类型的更多相关文章

  1. continue,break以及加上标签的使用(goto思路)

    continue,break以及加上标签的使用(goto思路) 代码例子在java编程思想70-73页。这里只 […]...

  2. 数据库01创建表和DML语言

    数据库01创建表和DML语言 楼主用的数据库时mysql,用的时navacat for mysql。 数据库层 […]...

  3. java开发环境

    java开发环境 1.java的加载过程 编译器将java的源文件.java编译成.class文件。JVM加载 […]...

随机推荐

  1. Chrome谷歌浏览器离线安装包下载

    谷歌Chrome浏览器离线安装包可以从以下几个地方获取: 1、360软件管家(360安全卫士)http://b […]...

  2. Word删除单独页页眉与分节处理

    通常在word中处理页眉页脚时,我们会发现一删全删,一改全变的情况,而网上方案往往难以解决且晦涩难懂,因此,将 […]...

  3. hbase读取快照数据-lzo压缩遇到的问题

    1.读取hbase快照数据时报UnsatisfiedLinkError: no gplcompression […]...

  4. 磁盘挖矿时代开启——GitHub 热点速览 v.21.16

    作者:HelloGitHub-小鱼干 本周的 GitHub 热点非常经常,因为一贫如洗的小鱼干突然发现了发家致 […]...

  5. dedecms首页入口的详细注释

    今天闲来无事,就拿来dede首页的文件给大家详细解释一遍,以便于新手学习,注释过程非常非常非常的详细,里面解释 […]...

  6. Microsoft Word 2019 for mac(word mac) v16.52中文正式版

    内容介绍 Microsoft Office是由Microsoft(微软)公司开发的一套基于 Windows 操 […]...

  7. React Hooks 你不来了解下?

    前言 最近在看 React 的新语法—— React Hooks,只能一句话概括:React 语法真的是越来越 […]...

  8. Kafka03–Kafka消费者使用方式

          前言   与生产者客户端一样,消费者端也由最初的scala版本过渡到现在的Java版本。   正常 […]...

展开目录

目录导航