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赋值不是一个整数常量,而是一个变量,因此就要进行强转,要不然会报错)

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

  1. Java 八大基本数据类型

    相关信息获取: (1)最小值:包装类.MIN_VALUE,如 Integer.MIN_VALUE (2)最大值:包装类.MAX_VALUE,如 Integer.MAX_VALUE (3)二进制位数:包 ...

  2. java中八大基本数据类型详解

    1.基本数据类型的分类 java中的类型分为基本数据类型和引用类型,今天我们讨论的是java中的八大基本数据类型. 基本数据类型可以分为三类:1.数值类型.2.字符类型.3.布尔类型. 数值类型又分为 ...

  3. Java的八大基本数据类型

    Java的八大基本数据类型 前言 Bit是计算机存储数据的基本单元,bit叫做位,也被称作比特位. Byte意为字节,1Byte=1字节,一字节可以存储八个二进制位的数字, 即为1Byte=8bit. ...

  4. 闲来无事——第一弹 Java基础 基本数据类型

    一个优秀的Java类一定要去优质的名称,类的命名主要有字母和数字,并且必须以字母开头:虽然说没有明确规定类名首字母要大写,但是实际上如果出现首字母小写的类名,那就呵呵了,坐等挨骂吧!类名首字母大写是业 ...

  5. Java中关于数据类型的一些问题

    Java中关于数据类型的一些问题 总结一下最近笔试遇到的一些关于Java中数据类型的一些问题. 虽然比较基础,但在实际做题却很容易出错的点,而且往往这些题出错了会给面试官很不好的感觉:你的基础不好. ...

  6. Java的基本数据类型与转换

    1.1 Java为什么需要保留基本数据类型 http://www.importnew.com/11915.html 基本数据类型对大多数业务相关或网络应用程序没有太大的用处,这些应用一般是采用客户端/ ...

  7. Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  8. Java学习——基本数据类型

    Java两大数据类型 内置数据类型 引用数据类型 变量就是申请内存存储值,内存管理系统根据变量的类型分配相应的存储空间存储该类型的数据. 内置数据类型 8中基本类型(四个整数型,两个浮点型),一种字符 ...

  9. JAVA:变量,数据类型,运算符,流程控制(简介)<1>

    一.安装和配置jdk 1.jdk是什么? (1).jdk全称是Java Development Kit, Java开发工具包; (2).jdk是sun公司开发的; (3).jdk主要包括:jre(Ja ...

随机推荐

  1. 关于python如果没有numpy模块如何处理

    1.在python中,你在python的shell输入>>>import numpy 但是编译器告诉你没有numpy库,这时候你就要导入python库,那么如何导入呢 2.收下访问h ...

  2. Archlinux运行FlashTool

    首先,http://www.flashtool.net/index.php下载linux版的FlashTool,并且按照其说明在/etc/udev加入如下字段: SUBSYSTEM== »usb », ...

  3. 【Spring】构建Spring Web应用

    前言 学习了Spring的注解.AOP后,接着学习Spring Web,对于Web应用开发,Spring提供了Web框架. Web应用 Spring MVC初探 MVC为(Model-View-Con ...

  4. [ACdream]瑶瑶带你玩激光坦克

    题目链接:http://acdream.info/contest?cid=1269#problem-B Problem Description 有一款名为激光坦克的游戏,游戏规则是用一个坦克发出激光来 ...

  5. pandas.DataFrame学习系列1——定义及属性

    定义: DataFrame是二维的.大小可变的.成分混合的.具有标签化坐标轴(行和列)的表数据结构.基于行和列标签进行计算.可以被看作是为序列对象(Series)提供的类似字典的一个容器,是panda ...

  6. 版本控制之一:SVN服务器搭建与安装(转)

    Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http:// ...

  7. php图片上传服务器

    原理是把图片上传到服务器的某个目录,然后在把他的名字存入数据库,或者不需要数据库这部分也行.读取的时候直接读取名字. HTML提交表格 <form method="post" ...

  8. webmagic学习-使用注解编写爬虫

    写在前面: 官方文档:http://webmagic.io/docs/zh/posts/ch5-annotation/README.html WebMagic支持使用独有的注解风格编写一个爬虫,引入w ...

  9. 实现一个websocket服务器-理论篇

    本文是Writing WebSocket servers的中文文档,翻译自MDNWriting WebSocket servers.篇幅略长,个人能力有限难免有所错误,抛砖引玉共同进步. websoc ...

  10. MongoDB入门系列(一):基础概念和安装

    概述 MongoDB是目前非常流行的一种非关系型数据库,作为入门系列的第一篇本篇文章主要介绍Mongdb的基础概念知识包括命名规则.数据类型.功能以及安装等. 环境: OS:Windows Versi ...