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

java八大基本数据类型的更多相关文章
- Java 八大基本数据类型
相关信息获取: (1)最小值:包装类.MIN_VALUE,如 Integer.MIN_VALUE (2)最大值:包装类.MAX_VALUE,如 Integer.MAX_VALUE (3)二进制位数:包 ...
- java中八大基本数据类型详解
1.基本数据类型的分类 java中的类型分为基本数据类型和引用类型,今天我们讨论的是java中的八大基本数据类型. 基本数据类型可以分为三类:1.数值类型.2.字符类型.3.布尔类型. 数值类型又分为 ...
- Java的八大基本数据类型
Java的八大基本数据类型 前言 Bit是计算机存储数据的基本单元,bit叫做位,也被称作比特位. Byte意为字节,1Byte=1字节,一字节可以存储八个二进制位的数字, 即为1Byte=8bit. ...
- 闲来无事——第一弹 Java基础 基本数据类型
一个优秀的Java类一定要去优质的名称,类的命名主要有字母和数字,并且必须以字母开头:虽然说没有明确规定类名首字母要大写,但是实际上如果出现首字母小写的类名,那就呵呵了,坐等挨骂吧!类名首字母大写是业 ...
- Java中关于数据类型的一些问题
Java中关于数据类型的一些问题 总结一下最近笔试遇到的一些关于Java中数据类型的一些问题. 虽然比较基础,但在实际做题却很容易出错的点,而且往往这些题出错了会给面试官很不好的感觉:你的基础不好. ...
- Java的基本数据类型与转换
1.1 Java为什么需要保留基本数据类型 http://www.importnew.com/11915.html 基本数据类型对大多数业务相关或网络应用程序没有太大的用处,这些应用一般是采用客户端/ ...
- Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)
1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...
- Java学习——基本数据类型
Java两大数据类型 内置数据类型 引用数据类型 变量就是申请内存存储值,内存管理系统根据变量的类型分配相应的存储空间存储该类型的数据. 内置数据类型 8中基本类型(四个整数型,两个浮点型),一种字符 ...
- JAVA:变量,数据类型,运算符,流程控制(简介)<1>
一.安装和配置jdk 1.jdk是什么? (1).jdk全称是Java Development Kit, Java开发工具包; (2).jdk是sun公司开发的; (3).jdk主要包括:jre(Ja ...
随机推荐
- 新博客,新开始-从Chrome浏览器奔溃说起
新博客,新开始 今天是2015-04-09,昨天新开的博客,今天在这写上一段,算是立个标记,好留以后拿来回溯吧. 不知道是谁跟我说的,坚持写博客是个好习惯,也能帮助自己总结经验,提高技术.也许大概可能 ...
- 脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律
脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律 一丶什么是ESP定律 首先我们要明白什么是壳.壳的作用就是加密PE的. 而ESP定律就是壳在加密之前,肯定会保存所有寄存器环境,而出来的时候, ...
- C 返回函数与闭包的考虑
#include <stdio.h> typedef int (*fun)(); fun closure(int i) { int squ() { return i*i; } return ...
- Mysql Explain 参数解释
查询计划使用以及使用说明 table:显示这一行数据是关于哪张表的. type:显示使用了何种类型,从最好到最差的连接类型为system.const.eq_ref.ref.fulltext.ref_o ...
- JS的基本类型(小知识)
一:js中的基本类型: 基本类型:boolen, string ,number,null,undefined 引用类型:object,和函数 二.undedifned和null的区别: 1 undef ...
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) 解决方案
1.命令行用maven编译项目失败,提示 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compi ...
- .NET在VS2008中生成DLL并调用
1.生成DLL 打开VS2008 - >新建->项目->类库->ClassLibrary1,在ClassLibrary1中会自动创建一个Class1类 class1中加入代码如 ...
- SVN提交文件的时候过滤指定文件
如果使用TortoiseSVN作为客户端的话,可以在TortoiseSVN右键菜单中的 "设置"(settings)--常规设置(General)--全局忽略样式里设置(Globa ...
- MQTT——发布报文
发布报文的知识点并不难,只是多.看过前面几章的读者们应该或多或少都认识服务质量QOS.发布报文跟他的联系最紧的.我们也清楚订阅报文里面虽然也有用到QOS,但是他却没有更进一步的联系.往下看就知道是什么 ...
- Vue.js—组件快速入门以及实例应用
上次我们学习了Vue.js的基础,并且通过综合的小实例进一步的熟悉了Vue.js的基础应用.今天我们就继续讲讲Vue.js的组件,更加深入的了解Vue,js的使用.首先我们先了解一下什么是Vue.js ...