Java 小类型与大类型

算法流光使
• 阅读 1787

小类型向大类型(隐式类型转换)

小类型向大类型的转换JVM会自动完成,不需要编写额外的代码。如下代码:

byte b1 = 3;
b1 = b1 +3

这样会在b1 = b1 +b2处报错,原因在于Java默认的证书类型的是 int 类型,b1+b2返回的结果会通过隐式类型转换将结果变成int类型,又由于b1是 byte类型的变量,因此赋值会报错。

如果这样写代码:

int b1 = 3;
byte b2 = 3;
b1 = b1 +b2;

因为JVM会自动完成隐式类型转换,所以 b1+b2 的结果会变成 int 类型,什么事都没有、

大类型向小类型

还是上面的例子:

byte b1 = 3;
b1 = b1 +3

如果想要将结果类型保存为 byte类型,则需要强制类型转换。将代码改成如下形式:

byte b1 = 3;
b1 = (byte)b1 +3

报错便消失了。

需要注意的是大类型转换小类型时,源数据的数据位会变成符号位。

int i=257
byte b = (byte)i

因为257 = 100000001
经过强制类型转换,超出长度的位数会被丢弃,剩下的数据位成为了符号位
结果 = 00000001 ,即1

结论:
小类型向大类型的转换JVM会自动完成隐式类型转换,不需要编写额外的代码。
大类型向小类型的转换需要编写额外代码进行强制类型转换。

欢迎加入学习交流群569772982,大家一起学习交流。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java泛型总结
1.特点,好处java1.5后出现包含1.5版本泛型的出现解决程序的安全性保证程序的一致安全机制使用泛型避免了类型的强制类型转换代码就简单数据类型只能是应用类型不能使基本类型,且前后保持一致泛型的定义格式:集合类<数据类型变量new集合类<数据类型();2.定义使用
Wesley13 Wesley13
3年前
java 类型转换的原理
最近在看JDK的源码,在看源码的时候看到了0xff这么个东东,从这里引出了类型转换。因此在此记录下。在写原理之前先看几个例子。byteb1;intab;然后打印a得出的结果是1.intb1;bytea(byte)b;打印a得出来的是1。inta255;byteb(byte)255;打印b得出的结果也是1;而把这个强制转出
Stella981 Stella981
3年前
BigDecimal与Long、int之间的相互转换
在实际开发过程中BigDecimal是一个经常用到的数据类型,它和int、Long之间可以相互转换。转换关系如下代码展示:一、int转换成BigDecimal数据类型//int转换成bigDecimal类型publicstaticBigDecimalintToBigDecim
Stella981 Stella981
3年前
Python将字符串转换成ObjectId类型
MongoDB自动生成的_id是ObjectId类型的。我需要将MongoDB的_id存到ElasticSearch中,而ElasticSearch又只能存String类型的_id,所以就涉及到两种类型的转换。ObjectId类型—→String类型这个非常简单
Wesley13 Wesley13
3年前
Java中的基本数据类型和引用数据类型的区别
一、前言众所周知Java是一种强类型语言,在Java语言中,Java的数据类型一共分为两大类,分别为基本数据类型和引用数据类型,其中基本数据类型细分小类可分为整数类型、浮点类型、字符类型、布尔类型这四小类。二、基本数据类型和引用数据类型1\.基本数据类型只有
Wesley13 Wesley13
3年前
C++类型转换
隐式转换在赋值给一个兼容类型会出现隐式类型转换.比如下面这个例子.shorta2000;intb;ba;在以上例子中.值从short自动提升到int,这是标准转换。标准转换影响基本数据类型,它在类型数字类型之间(short to int, int to float, double t
Stella981 Stella981
3年前
ECMAScript——JavaScript的核心
   JavaScript(简称:JS)是一种动态类型、弱类型的直译式脚本语言。也就是说它的数据类型不需要声明,不同类型之间会隐式转换为被赋值的类型。它不需要编译,直接由浏览器解释执行。JavaScript由ECMAScript(简称:ES)、DOM、BOM三大部分组成:ECMAScript规定了语言的语法和基本对象;DOM(文本对象模型)处理网页的节
Wesley13 Wesley13
3年前
Java int与Integer的区别
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别:int是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象1.Java中的数据类型分为基本数据类型和复杂数据类型int是前者而integer是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为n
Wesley13 Wesley13
3年前
Scala一分钟小课堂
ValueClasses主要用于扩展已有类的方法和创建类型安全的数据类型,功能上类似隐式转换,但是在运行时比隐式转换更节省内存。所有的ValueClasses都继承自AnyVal,例如:classWrapper(valunderlying:Int)extendsAnyVal扩展已有类的方法结合 implicit
小万哥 小万哥
1年前
C 语言:类型转换与常量的细致理解
C语言中的类型转换有时,您必须将一种数据类型的值转换为另一种类型。这称为类型转换隐式转换当您将一种类型的值分配给另一种类型的变量时,编译器会自动进行隐式转换。例如,如果您将一个int值分配给一个float类型:c//自动转换:inttofloatfloat
小万哥 小万哥
1年前
Java 数据类型详解与类型转换技巧
Java数据类型Java中的变量必须是指定的数据类型:javaintmyNum5;//整数floatmyFloatNum5.99f;//浮点数charmyLetter'D';//字符booleanmyBooltrue;//布尔值StringmyText"H