java 强制类型转换的规则是什么?

强制类型转换的时候需要注意什么?... 强制类型转换的时候需要注意什么? 展开
 我来答
哑然o3o
推荐于2019-09-11 · TA获得超过7545个赞
知道答主
回答量:40
采纳率:100%
帮助的人:5707
展开全部

1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型等等;

2、赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;

3、函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;

4、函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回。

扩展资料

C++中强制类型转换函数有4个:

1、const_cast(用于去除const属性)。

2、static_cast(用于基本类型的强制转换)。

3、dynamic_cast(用于多态类型之间的类型转换)。

4、reinterpreter_cast(用于不同类型之间的指针之间的转换,最常用的就是不同类型之间函数指针的转换)。

隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。

在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。

在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回。

参考资料

百度百科-强制类型转换

198901245631
推荐于2017-09-05 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1673万
展开全部
规则就是转换的类型之间必须具有某一特定联系。
如:
字符串“123”,只个就是数字,可以直接Integer.valueOf("123");
char类型的“a”,可以直接“int(“a”)”,结果就是:58;
但是强制之前可以通过“instance of”(实例化)来进行判断是否可以强制转换:if(“aaaa” instance of String){//代码模块},这个代码的意思就是说如果“aaaa”可以实例化字符串类型,那么就可以强制转换,这个方法可以减少因类型不匹配和导致的转换类型抛出异常,开发过程还是有一定作用的。
备注:关于类型转换,只能是在开发过程中逐渐积累,根据实际需要进行转换即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友881abcb
2013-03-31 · TA获得超过186个赞
知道小有建树答主
回答量:262
采纳率:100%
帮助的人:122万
展开全部
强制转换的规则是小的可以转成大的,但是大的不一定都能转成小的,例如int都可以强转成string,但是string不一定都能转成int,其他类似
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-01
展开全部
表示强制转换类型.学点强制转换的知识吧
比如:
1.基本类型:
int a=0;
float a=8.2//error,这个不能被编译通过
//我们这样写就可以了
float a=(float)8.2;//把double 型的强制转换为float
//也可以这样写的float a=8.2f

2.引用类型:
一个超类能做的东西,其子类也能做,而一个子类能做的东西超类不一定能做,所以就有这样的规则:

(1).一个子类的对象可以强制转换成为其超类的对象;
(2).一个超类的对象如果强制转换成子类的对象将在运行的时候有异常抛出;
(3).如果不是同一继承树上的类强制转换,将产生编译错误.

例如:
class A {}
class B extends A{}
class C {}

B b=new B();
A a=(A)b;//被b引用的对象强制转换为类A的对象,类B的对象具有类A对象的性质,所以可以转换成功
a=new A();
b=(B)a;//原本是类A的对象,可能不具备类B的性质,这样会在运行的时候产生异常.
C c=new C();
a=(A)c;//如果c不是同一继承树类编译的时候将会产生错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
之雨天空
2013-03-31 · TA获得超过204个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:142万
展开全部
一.Java 的自动转换
如果下列2个条件都能满足,那么将一种类型的数据赋给另外一种类型变量时,将执行自动类型转换(automatic type conversion):
1.这2种类型是兼容的。
2.目的类型数的范围比来源类型的大。
当以上2个条件都满足时,拓宽转换(widening conversion )发生。例如,int 型的范围比所有byte 型的合法范围大,因此不要求显式强制类型转换语句。对于拓宽转换,数字类型,包括整数(integer )和浮点(floating-point )类型都是彼此兼容的,但是,数字类型和字符类型(char)或布尔类型(bollean )是不兼容的。字符类型(char )和布尔类型(bollean )也是互相不兼容的。
二. 不兼容类型的强制转换
其中,目标类型(target-type )指定了要将指定值转换成的类型。例如,下面的程序段将int 型强制转换成byte 型。如果整数的值超出了byte 型的取值范围,它的值将会因为对byte 型值域取模(整数除以byte 得到的余数)而减少。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式