JAVA中基本数据类型:

类型: 字节: 范围: 默认值:
byte 1 -128~127 0
short 2 -32768~32767 0
char 2 0~65535 '\u0000'
int 4 -2147483648~2147483647 0
long 8 -2^63~2^63-1 0L或0l
float 4 3.402823e38~1.401298e-45 0.0F或0.0f
double 8 1.797693e308~4.9000000e-324 0.0D或0.0d
boolean 1 false 或 true false

所以,基本数据类型的精度(亦称容量大小)排序为(从小到大):(byte->short->char)->int->long->float->double

向下转换:(强制类型转换)

当精度高的类型转到精度低的类型时叫做向下转换,向下转换需要强制转换,即使用 (类型名) 运算符,可能会导致精度降低或溢出。

向上转换:(隐式类型转换)

当精度低的类型转到精度高的类型时叫做向上转换,向上转换一般直接由编译器完成,当几个基本数据类型参与运算时,计算结果的类型是参与运算中精度最高的那个运算数的类型,其他运算数的类型将被自动转为精度最高的那个运算数的类型。

之所以要给byte,short,char三个类型加上括号,是因为,当它们参与运算时首先会被提升为int类型,也就说明他们之间不会发生隐式类型转换。

另外,boolean类型不会发生类型转换,即(boolean)运算符无意义,并且boolean类型只能被关键字 true 和 false,以及逻辑运算符的结果赋值。

例如:

 byte a;
short b;
char c;
int d;
long e;
a = a+a;//错误,a + a的类型为int,因为在计算时,byte类型的a变量被自动提升为int类型
a = 'A';//正确,'A'是字符字面量,是一个常量,值为65,在byte范围内
a = 12;//正确,可能会问,12这个字面量在java中是int类型,但是 a 是byte类型,为什么不报错呢,因为,编译器知道12在byte范围内,所以自动转为(short)12,但如果赋值的是a = 200,那就错误了,因为编译器知道200是超出byte范围的(在编译的时候,编译器只知道常量的值,知道它是否超出范围,编译器不知道变量的值,所以无法判断一个变量是否超出范围,因为变量的值是在运行的时候确定的) a = Byte.MAX_VALUE +1;//报错
b = Short.MAX_VALUE +1;//报错
c = Char.MAX_VALUE +1;//报错
//上述三行报错原因是因为,byte,short,char三个类型参与计算时首先会提升为int类型,但在C语言当中(char和short类型)参与计算时不会被提升,所以在C语言中值为 -1
d = Integer.MAX_VALUE +1;//值为-1
e = Long.MAX_VALUE +1;//值为-1L
//因为int和long类型不存在提升,所以会出现-1或-1L

JAVA基本数据类型转换的注意事项的更多相关文章

  1. Java基本数据类型转换及运算符

    上次我们说到完了Java中的基本数据类型,今天我们来说说Java中的基本数据类型转换和Java中的运算符 基本数据类型转换 java中可以从任意基本数据类型转型到外的基本数据类型 注意:(boolea ...

  2. Java基本数据类型转换

    一:Java的基本数据类型和引用数据类型 1:基本数据类型 2:引用数据类型 二:基本数据的类型转换 基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型 ...

  3. java基本数据类型转换成byte[]数组

    import java.io.UnsupportedEncodingException;  public class ConToByte {      /**     * double转换byte   ...

  4. java基本数据类型转换溢出问题

    java的基本数据类型有(int.byte.double.float.char.boolean.long.short):这里介绍整型数据 示例1: public class H_Z01 { publi ...

  5. java基本数据类型转换之向上转型和向下转换

    向上转换: 整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型: byte,short,char → int → long → float ...

  6. Java 基本数据类型转换

    1. Integer/int  转 String Integer a = 1; (int a = 1) String b = Integer.toString(a); 2. float 转 Strin ...

  7. Java基本数据类型转换二

    public class TestConvert2 { /** * @param args */ public static void main(String[] args) { // TODO Au ...

  8. Java基本数据类型转换一

    public class TestConvert { /**容量小的类型自动转化为容量大的类型数据类型按容量大小排列 * byte,short,char -> int ->long-> ...

  9. java基本数据类型转换字符串

    1.基本数据类型转换为字符串 int t1 = 2; String t2 = Integer.toString(t1); 2.字符串转换为基本数据类型 int t3 = Integer.parseIn ...

随机推荐

  1. CorelDRAW关于使用鼠标的5个技巧分享

    CorelDRAW重度依赖者对快捷键和技巧性的操作爱不释手.本文我们介绍使用CorelDRAW关于鼠标操作的5个技巧,这是五种超快,非常有效,特别实用的技巧,如果每天的工作结合这些技巧的使用,效率会大 ...

  2. 【转】Linux rpm 命令参数使用详解[介绍和应用]

    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种 ...

  3. Android 性能测试初探(一)

    Android 性能测试,跟 pc 性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类: 一类为 rom 版本的性能测试 一类为应用的性能测试 对于应用性能测试,包括很多测试项,如启动 ...

  4. SQL第三节课

    常用函数 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x ...

  5. windows环境下用pip安装pyautogui遇到的几个问题

    1.不能直接使用win+r运行cmd并使用pip,必须点击开始->windows系统->命令提示符,右键->以管理员身份运行 2.运行pip install pyautogui后提示 ...

  6. redhat超级用户密码破解

    1. 开机在出现grub画面,按e键 2. 用上下键选中第二项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/) 然后按e键编辑 3. 空格sing ...

  7. [bzoj1610][Usaco2008 Feb]Line连线游戏_暴力枚举

    Line连线游戏 bzoj-1610 Usaco-2008 Feb 题目大意:Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= ...

  8. codevs——T1220 数字三角形

    http://codevs.cn/problem/1043/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descr ...

  9. JAVA版本号微信公众账号开源项目版本号公布-jeewx1.0(捷微)

    JeeWx, 敏捷微信开发,简称"捷微". 捷微是一款免费开源的微信公众账号开发平台. 平台介绍: 一.简单介绍 jeewx是一个开源,高效.敏捷的微信开发平台採用JAVA语言,它 ...

  10. Linux内核中网络数据包的接收-第二部分 select/poll/epoll

    和前面文章的第一部分一样,这些文字是为了帮别人或者自己理清思路的.而不是所谓的源代码分析.想分析源代码的,还是直接debug源代码最好,看不论什么文档以及书都是下策. 因此这类帮人理清思路的文章尽可能 ...