0
点赞
收藏
分享

微信扫一扫

java强制类型转换(java强制类型转换有哪些)


强制类型转换指的是什么?

强制类型转换隐式自动类型转换编辑C++语言编译系统提供的内部数据类型的隐式自动转换规则如下:1、执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如:int型转换成double型,char型转换成int型等等;2、赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;3、函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;4、函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回;强制类型转换单参构造函数的类型转换功能编辑实际应用中,当一个类定义中提供了单个参数的构造函数时,该类便提供了一种将其它数据类型的数值或变量转换为用户所定义数据类型的方法;因此,可以说,单个参数的构造函数提供了数据类型转换的功能

强制类型转换有哪两种形式呢?

强制类型转换具有两种形式:显式强制转换和隐式强制类型转换

java中各数据类型是如何实现强制类型转换的?

高精度赋给低精度要强制转换,反之不用。

double d=3.444d;

float f=2.222f;

f=d;//错误,没加强制转换符

f=(float)d;//正确

d=f;//正确,低精度赋给高精度String-int integer.parseInt()

int-String valueof(int)

in-char char(int)

String-char String.getbyte()这个记得比较模糊

除此之外还有很多转型有两种: 向上转型和向下转型(强制转型)

两种分别如下:

一种是向上转型对于基础数据类型 , 可以自动转型 ,比如:int a = 10;long b = a;这里就是把int型转成了long型 , 因为 long范围比int大 , 这样的转型不会有任何影响 , 所以可以自动转型

又比如 a a = new b(); 其中 a 是b 的父类 , 这也是多态 , 就是父类的对象指向子类的引用 , 你调用a对象 , 实际上是b的类 , 但是b继承a , 拥有a的一切属性和方法 (不谈复写) 第二种是向下转型 , 也就是强制这种需要强转 , 比如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 , 不然会报错.不同类型之间如果要转型 , 需要通过中间途径 , 比如json , 将a转成json串 , 然后再转换为b

int a=(String)b;

类似这样的是强制类型转换double i = 1;

int j;

j = (int)i;

还有(char)等等

java的强制类型转换应该怎样理解?

1、所谓转换,不是指将一个对象转化为另一种类型的对象,主要是为了应用的需要和方例,比如多态的使用,有时必须要强制类型转换。如:

Father f=new Son("one");

此时的方法接口要传Father,但里边要用son中的某个特有方法,此时必须要进行强制转换才行,如Son s=(Son)f,这是这样。

2、有2种类型的强制类型转换,一种是子父类之间的转换、一种是非子父类但相关可转化的转换

3、子父类之间转化就像上边的例子,还有一种如

String str="123";

int num=(int)str;//相关可转化型的。

4、白话概括下,就是小对象我当成大对象使了,我现在又要用小对象,此我需要强制转化成小对象;A可以转化为B对象,此时的参数我需要B对象,但是我只有A对象,此时需要将A对象转化为B对象。

不知不觉写的有点多,希望有点用吧。现我慢慢帮你解释:对于 num = (int)num;这句(int)num的确等于0,但你又赋给num,这时,num你在前面已经申明为double型,所以(int)num的值由整型的0又根据java的赋值兼容性又转换成0.0了。加油学习,java非一朝一日就能完全掌握的。明白了就给我分哦,没有明白可以继续和我讨论,大家共同学习,qq564504525把int 类型的值赋给long 类型的变量,总是可行的。然而,不是所有的类型都是兼容的,因此,不是所有的类型转换都是可以隐式实现的。例如,没有将double 型转换为byte 型的定义。要达到这个目的,你必须使用一个强制类型转换,它能完成两个不兼容的类型之间的显式变换。

float a=5.8 是错误的

short b=1

b=b+1也是错误的

需要强制类型转换

float a=(float)5.8

b=(short)b+1简单的说就是 不是一个类型的数据不可以直接使用 需要强制转换成一个类型,不过要注意 由高转低会 损失精度类型转换, 就是一种数据类型转化到另一种数据类型嘛。我这样给你讲吧,不管什么语言,在计算机看来,不管什么数据类型的数据,它都是以二进制的方式存在某一个地址开始的一段内存里吧。但是对我们来说,我们并不真正了解这些二进制到底是什么数据,其实呢,你认为它是什么都可以。类型之间的转化其实就是一开始如果你以类型A来解释这段二进制码得到类型A的数据a,然后你要强制转化为类型B,就是同样的把这段二进制码解释成类型B的数据b.当然了,从java上讲,从现象上看分原生类型之间的转化以及对象类型之间的转化。具体的我就不讲了,自己看看书,翻翻两个例子就懂了,没啥难度。将一个范围大的数据类型,转换到范围小的数据类型

举报

相关推荐

0 条评论