Java中的强制类型转换是如何转换的?

Python07

Java中的强制类型转换是如何转换的?,第1张

java中数据类型的强制转换是通过强制转换语句完成的,强制转换语句的格式为“目标数据类型 变量=(目标数据类型)数据;”。下面给出例子:

1、定义两个字节数据类型a、b、c,分别赋予1和2和a+b的值,进行加法运算的式子a+b=3,得出的结果“3”将会被编译环境判定为整形数据,把这个整形数据赋值给c,系统将会报错,这样就需要用到格式为“目标数据类型 变量=(目标数据类型)数据;”的强制转换语句。

2、根据强制转换语句的格式,易得“bytec=(byte)(a+b)”;

3、这样就把整形数据的“3”赋值给字节数据类型的c了,其中完成数据的强制类型转换。

扩展资料:

基本类型转换原则:

1、类型转换主要在在 赋值、方法调用、算术运算 三种情况下发生。

a、赋值和方法调用转换规则:从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换:

(1)布尔型和其它基本数据类型之间不能相互转换;

(2)byte型可以转换为short、int、、long、float和double;

(3)short可转换为int、long、float和double;

(4)char可转换为int、long、float和double;

(5)int可转换为long、float和double;

(6)long可转换为float和double;

(7)float可转换为double;

b、算术运算中的类型转换:

1、基本就是先转换为高位数据类型,再参加运算,结果也是最高位的数据类型;

2、byteshortchar运算会转换为Int;

(1)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。

(2)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。

(3)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。

(4)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。

特殊:

(1)如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。

(2) 当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char类型不发生改变;

参考资料:百度百科-java关键字

1.

转型有两种:

向上转型和向下转型(强制转型)

2.

两种分别如下:

1.

一种是向上转型

1.

对于基础数据类型

,

可以自动转型

,比如:

int

a

=

10

long

b

=

a

这里就是把int型转成了long型

,

因为

long范围比int大

,

这样的转型不会有任何影响

,

所以可以自动转型

2.

又比如

A

a

=

new

B()

其中

A

是B

的父类

,

这也是多态

,

就是父类的对象指向子类的引用

,

你调用a对象

,

实际上是B的类

,

但是B继承A

,

拥有A的一切属性和方法

(不谈复写)

3.

第二种是向下转型

,

也就是强制

这种需要强转

,

比如

long

a

=

10

int

b

=

(int)

a

通过

(int)可以强制转型

,

但是这样会丢失精度

,

比如a如果超过了b的范围

,

那么强转成int型,

只会等于int的最大值

又比如

:

B

b

=

new

A()

这样是不行的

,

需要有中间途径

,

比如

A

a

=

new

A()

Object

obj

=

a

B

b

=

(A)

a

而这种强转

,

又有要求

,

必须是同类型

,

也就是说

A

就是B

,

不然会报错.

4.

不同类型之间如果要转型

,

需要通过中间途径

,

比如JSON

,

将A转成JSON串

,

然后再转换为B

如果这2种类型是兼容的,那么Java 将自动地进行转换。

如果这2种类型是兼容的,那么Java 将自动地进行转换。例如,把int 类型的值赋给long类型的变量,总是可行的。

然而,不是所有的类型都是兼容的。因此,不是所有的类型转换都是可以隐式实现的。例如,没有将double 型转换为byte 型的定义。

幸好,获得不兼容的类型之间的转换仍然是可能的。要达到这个目的,你必须使用一个强制类型转换,它能完成两个不兼容的类型之间的显式变换。让我们看看自动类型转换和强制类型转换。