自动类型转换·强制类型转换

Java中的自动类型转换

在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换。例如:

代码中 int 型变量 score1 可以直接为 double 型变量 score2 完成赋值操作,运行结果为: 82.0 

这种转换称为自动类型转换

当然自动类型转换是需要满足特定的条件的:

1.  目标类型能与源类型兼容,如 double 型兼容 int 型,但是 char 型不能兼容 int 型

2.  目标类型大于源类型,如 double 类型长度为 8 字节, int 类型为 4 字节,因此 double 类型的变量里直接可以存放 int 类型的数据,但反过来就不可以了

Java中的强制类型转换

相信小伙伴们也发现了,尽管自动类型转换是很方便的,但并不能满足所有的编程需要。   

例如,当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢?

显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小。此时就需要通过强制类型转换来实现了。

语法:( 数据类型 ) 数值

运行结果:

可以看到,通过强制类型转换将 75.8 赋值给 int 型变量后,结果为 75,数值上并未进行四舍五入,而是直接将小数位截断。

明白了吧,强制类型转换可能会造成数据的丢失哦

时间: 2024-11-08 23:51:44

自动类型转换·强制类型转换的相关文章

实用技巧 Java类型转换与强制类型转换

技巧|转换 如果你以前有编程经验,那么你已经知道把一种类型的值赋给另外类型的一个变量是相当常见的.如果这2种类型是兼容的,那么Java 将自动地进行转换.例如,把int 类型的值赋给long 类型的变量,总是可行的.然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的.例如,没有将double 型转换为byte 型的定义.幸好,获得不兼容的类型之间的转换仍然是可能的.要达到这个目的,你必须使用一个强制类型转换,它能完成两个不兼容的类型之间的显式变换.让我们看看自动类型转换和

《Java 7程序设计入门经典》一2.13 使用强制类型转换

2.13 使用强制类型转换 尽管自动类型转换很有用,但是由于它们只能用于兼容类型间扩大范围的转换,它们也不能满足所有的编程需要.对于其他情况,只能运用强制类型转换.强制类型转换(cast)是告诉编译器将一种类型转换为另一种类型.所以,它需要显式类型转换.强制类型转换具有以下一般形式: (target-type) expression 这里,target-type指定特定表达式转化到何种目标类型.例如,如果想把表达式x/y的类型转换为int类型,可以写成: 这里,尽管变量x和y都是double类型

浅谈Java中强制类型转换的问题_java

为了更好的理解我们先看下面的例子: package com.yonyou.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 测试类 * @author * @创建日期 2016-5-31 */ public class Test{ public static void main(String[] args) { List<String> list=new Array

c++中四种强制类型转换及区别对比

C++四种强制类型 reinterpret_cast<目标类型>(原类型变量)//重解释类型转换  dynamic_cast<new_type>(expression)//动态类型转换  static_cast<new_type>(expression)//静态类型转换  const_cast<new_type>(expression)//返回一个指向非常量的指针   1.const_cast:常量指针被转化成非常量的指针,并且仍然指向原来的对象:常量引用被

v是View的子类,如果要把v转化为Button类,要不要强制类型转换呢

问题描述 v是View的子类,如果要把v转化为Button类,要不要强制类型转换呢 v是View的子类,如果要把v转化为Button类,要不要强制类型转换呢 父类转换为子类是自动完成的 子类转换为父类需要强制类型转换 解决方案 当然要,给你举个例子,控件绑定id的方法findViewById方法获取到的是view,转换成子控件需要进行强转 解决方案二: 基类指针不能转换为派生类指针!!!! 解决方案三: v是View的子类,如果要把v转化为Button类,要不要强制类型转换呢,答案是不能转换,你

JAVASCRIPT学习笔记之强制类型转换

最近在读<你不知道的javascript>系列图书,收获蛮大,感慨也挺多的. 是的,关于javascript,你不是不知道,而是真的不知道. 就比如类型转换,从开始到看完到第二第三第N遍,我经历了如下的心路历程:这有什么不知道的 → 一脸懵逼 → 有点意思 → 卧槽,怎么这样? → 原来是这样 → 靠,还是坑... 真可谓是不学不知道,一学吓一跳. 为了避免再次入坑,这里做个总结,不,了结. 核心点 Javascript中的强制类型转换总是返回标量基本类型值(string, boolean,

Java核心技术卷I基础知识3.5.3 强制类型转换

3.5.3 强制类型转换 在上一小节中看到,在必要的时候,int类型的值将会自动地转换为double类型.但另一方面,有时也需要将double转换成int.在Java中,允 许进行这种数值之间的类型转换.当然,有可能会丢失一些信息.在这种情况下,需要通过强制类型转换(cast)实现这个操作.强制类型转换 的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名.例如:   这样,变量nx的值为9.强制类型转换通过截断小数部分将浮点值转换为整型. 如果想对浮点数进行舍入运算,以便得到最

php foreach 参数强制类型转换的问题

所以,为了防止这样的信息出现,我使用foreach的时候,都会把参数进行强制类型转换,形势如下: foreach((array)$arr as $key => $value); 这样做一直相安无事,就在前几天,突然出现了问题.我强制类型转换以后不能正常的调用object的方法了. 复制代码 代码如下: <?php class service implements Iterator{ function __construct($service_define,$filter=null){ $thi

C#中的AS、IS运算符和强制类型转换简介

as和强制转换之间最大的区别就在于如何处理用户自定义的转换.操作符 as和 is 都只检查被转换对象的运行时类型,并不执行其他的操作.如果被转换对象的运行时类型既不是所转换的目标类型,也不是其派生类型,那么转型将告失败.但是强制转型则会使用转换操作符来执行转型操作,这包括任何内建的数值转换(如:long转int). 一般情况我们应该先考虑使用as进行类型转换,然后再考虑使用is,最后才考虑使用强制转换. 如果你使用as来转换数据,那么用is来做检测是不必要的.只用检测返回类型是否为null就行了