Java基本类型与类型转换咋就这么烦?

在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型。(一个字节等于8个bit)

1.整型
类型              存储需求     bit数    取值范围      备注
int                 4字节           4*8 
short             2字节           2*8    -32768~32767
long              8字节           8*8
byte              1字节           1*8     -128~127

2.浮点型
类型              存储需求     bit数    取值范围      备注
float              4字节           4*8                  float类型的数值有一个后缀F(例如:3.14F)
double          8字节           8*8                       没有后缀F的浮点数值(如3.14)默认为double类型

3.char类型
类型              存储需求     bit数     取值范围      备注
char              2字节          2*8

4.boolean类型
类型              存储需求    bit数    取值范围      备注
boolean        1字节          1*8      false、true

 1 package com.RainFool.Test;
 2
 3 /**
 4 * <p>Title: Cast</p>
 5 * <p>Description: 本例用来在博客园上解释类型转换</p>
 6 * <p>Company: LTGames</p>
 7 * @author RainFool
 8 * @date 2014年7月1日
 9 */
10 public class Cast {
11     public static void main(String [] args) {
12         /*
13          * Widening conversion 扩展转换对于Java中的基本类型基本都能自动进行,
14          * 也就是说占用字节数低的类型可以自动向占用字节数高的类型转换(除了boolean、byte)
15          */
16
17         byte b = 0;
18         char c = ‘A‘;
19         short st = 65;
20         //byte、char、short向int自动转换
21         int i1 = c;
22         int i2 = b;
23         int i3 = st;
24         /*
25          * 同样的,int也可以向double转换,在此不再赘述
26          */
27
28         /*
29          * narrowing conversion窄化操作比较复杂,在此只总结我所验证的
30          * int类型可以在特定条件(高字节向低字节)下自动进行窄化转换,在强制进行类型转换的时候会对数值直接截断
31          * double,float不可以自动转换为int,因为浮点数和普通数字之间的差别比较大
32          */
33 //        short st4 = 1024 * 32;//编译报错,short类型有一个符号位所以这里用2^15测试
34         short st4 = 1024 * 32 - 1;//不报错,发生了窄化操作的自动转换,值为32767
35         short st5 = (short)(1024 * 32);//不报错,发生了窄化操作的强制转换,值为-32768
36
37 //        char c4 = 1024 * 64;//编译报错,char类型无符号所以用2^16测试
38         char c4 = 1024 * 64 -1;//不报错,发生了窄化操作的自动转换
39
40 //        byte bt4 = 128;//编译报错
41         byte bt4 = 128 - 1;//不报错,发生了窄化操作的自动转换
42         byte bt5 = (short)(128 - 1);//不报错,在强制将int转换为short后发生了窄化操作的自动转换
43
44
45          /*
46           * 总结:非浮点数之间如果数值在范围内,可以自动进行转换,不管是窄化还是扩展转换
47           */
48     }
49 }

Java基本类型与类型转换咋就这么烦?,布布扣,bubuko.com

时间: 2024-10-28 20:13:11

Java基本类型与类型转换咋就这么烦?的相关文章

Java——基本类型的类型转换

在Java程序中,不同的基本类型的值经常需要在不同类型之间进行转换.Java中提供了7个数值类型之间可以相互专转换,有两种类型转换方式:自动类型转换和强制类型转换. >自动类型转换 把一个基本类型的值赋给另一个基本类型的变量,这种方式被称为自动类型转换. 表数范围小的数值或变量直接赋值给表数范围大的变量时,系统可以自动类型转换. 箭头右边数值类型可以自动类型转换为箭头右边的数值类型,上例子: 不仅如此,当把基本类型的值和字符串值进行连接时,基本类型值将自动转换为字符串型,虽然字符串类型不再是基本

关于Java中的基本数据类型转换

Java中的基本类型有四种,其中整型分为byte.short.int.long,浮点型分为float.double,字符型char,布尔型boolean.8种类型的级别由低到高byte->short/char->int->long->float->double. Java中的基本数据类型转换分为隐式类型转换(自动类型转换)和显式类型转换(强制类型转换). 隐式类型转换是将一个较低级别的值或变量赋给一个较高级别的变量,在这种情况下,Java会自动地将较低级别的变量或值转换成与较

Day 2 : 变量、JAVA基本类型、运算符和表达式-1

1. 变量 1.1. 什么是变量 在日常生活中,人们会用到大量数据,像去ATM机取款,首先,需要插入银行卡,这个过程其实就是ATM机的系统在获取银行卡号这个数据,而后,输入密码,这个过程也是在获取数据,也就是密码.在后续进行的业务处理中,像存钱.取钱.转帐汇款等等,银行卡号和密码会被反复的.频繁的使用, 那就需要一个存储这些数据的地方. 在软件系统中,是将数据存储在内存之中的,而对内存中的数据的引用就是变量,可以理解为变量就是内存中数据的代词. 简单说, 变量就是指代在内存中开辟的存储空间,用于

深入理解Java注解类型(@Annotation)

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java注解类型(@Annotation) - zejian的博客 - 博客频道 - CSDN.NET zejian的博客 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &am

Java返回类型泛型的用法小结

Java返回类型泛型的用法小结 版权声明:本文为博主原创文章,未经博主允许不得转载. 关于Java泛型的基本用法就不多说了,主要是一个编译期的检查,也避免了我们代码中的强制转换,比较经典的用法有泛型DAO,泛型Page的DTO. 现在我要说的是一个挺有趣但是貌似还不是太多的人在代码中使用的方法,前段时间用guava和op4j的时候发现这样的用法,看看了源码,也是很简单的. 比如guava中创建集合的方法 List<xx> list = Lists.newArrayList(),这个代替了我们传

java表达式类型自动提升

[一道经典的Java面试题] short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 答案是:前者错,后者对.相信不管是否经历过java面试过,大家一定对这道题很熟悉.因为这道题确实太经典了,以至于成为了基本每个老师都会拿出来,当作课堂例题来讲.要说清这道题,首先看看java表达式类型转换规则. [java表达式类型转换] java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也有指定的数据类型.因此在不同类型之间进行

Java多态对象的类型转换和动态绑定

Java多态对象的类型转换这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. 在继承链中,我们将子类向父类转换称为"向上转型",将父类向子类转换称为"向下转型". 很多时候,我们会将变量定义为父类的类型,却引用子类的对象,这个过程就是向上转型.程序运行时通过动态绑定来实现对子类方法的调用,也就是多态性. 然而有些时候为

Java杂谈之各种类型转换

在写程序时,难免会遇到类型转换的问题,下面列出了各种类型的转换方法,我们要做的 只是会举一反三就可以了. package JavaTestString; //包装类 //char----charcter //float---Float //int-----Integer //boolean-Boolean public class JavaTypeConvert { public static void main(String[] args) { //Sting的类型转化--> 基本类型: 包装

Java中的自动类型转换

Java里所有的数值型变量可以进行类型转换,这个大家都知道,应该不需要详细解释为什么. 2 在说明自动类型转换之前必须理解这样一个原则“表数范围小的可以向表数范围大的进行自动类型转换” 3 关于java自动类型的转换有这样一个形象的比喻,当一个小的容器的水换到一个大的容器中毫无问题,但是一个大的容器的水换成小的容器则会装不下,就会溢出. 4 下面就是我画出的简要图.