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. fio2.1.10--HOWTO

    1.0 Overview and history    ------------------------ fio was originally written to save me the hassl ...

  2. VS2010开发程序打包详解

    VS2010开发程序打包详解 转自:http://blog.sina.com.cn/s/blog_473b385101019ufr.html 首先打开已经完成的工程,如图: 下面开始制作安装程序包. ...

  3. zookeeper 笔记-小结

    1.zookeeper为分布式应用设计的分布式开源协调服务 2.分布式应用可以建立在同步配置管理,选举,分布式锁,分组和命名等服务的更高级别的实现基础上 3.znode维护数据,ACL时间戳等交换版本 ...

  4. JS难点--面向对象(封装)

    我觉得js的难点之一就是面向对象编程. 面向对象 它是一种编程思想,它在写法上比面向过程相对来说复杂一些: 以下是我学习中关于面向对象的知识点总结:   1.什么是对象 从广义上说,"一切皆 ...

  5. lynx---CentOS终端访问IP

    1.官网 http://lynx.isc.org 2.稳定版本 http://invisible-mirror.net/archives/lynx/tarballs/lynx2.8.8rel.2.ta ...

  6. geolocation h5

    navigator. geolocation.getCurrentPosition() 触发浏览器弹窗询问用户同意访问地址.接收三个参数:成功回调函数,可选的失败回调,可选选项对象   成功回调函数接 ...

  7. J1001.Java原生桌面及Web开发浅谈

    自从Java问世以来,在服务端开发方面取得了巨大的发展.但是在桌面/Web开发方面,一直没有得到大的发展.从最初的AWT,到Swing,再到JavaFX,Java从来没有在桌面/Web解决方案中取得重 ...

  8. [转]彻底弄懂css中单位px和em,rem的区别

    难怪会问我 rem 和 em, 这俩或在移动端还是很有必要学习的. root em OK? 国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? P ...

  9. idea 新建的xml文件显示为文本问题

    由于是新手 在用idea 中出现了 显示问题,一开始 都随它去 ,结果发现几次 都一样 由于 mybatis配置的config 我都命名为 mybatis-config.xml 网上搜索了下 没有搜到 ...

  10. C#的Main(String[] args)参数输入问题

    1.新建一个控制台应用程序,保存在桌面上,Main函数如下所示 using System;using System.Collections.Generic;using System.Linq;usin ...