java强制类型转换,Java强制类型转换int转float数值怎么算

发布时间:2023-01-05

本文目录一览:

  1. JAVA如何进行强制类型转换?
  2. java 强制类型转换的规则是什么?
  3. Java强制数据类型转换
  4. JAVA如何进行强制类型转换

JAVA如何进行强制类型转换?

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

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

  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后面表达式的数值强制转换为函数返回值类型后,再将值返回。

参考资料

  • 百度百科-强制类型转换

Java强制数据类型转换

规则可不少,挺乱的其实: 强制数据类型转换: int nowC = (int)c; 还可以这样,使用intValue方法,返回一个int值:

Double d = 5 / 9.0 * (f - 32);
int nowC = d.intValue();

Double类是基本数据类型double所对应的包装类。

基本数据类型转换的规则:

Java中基本数据类型共有8种,其中boolean类型不能转换为其它类型,其它类型也不能转换为boolean型。 除了boolean类型,还有7种,按照它们的容量(也就是表数范围,就是能表示的数的大小范围,比如char是0——65535)的大小,从小到大,排序依次为:

byte short char int long float double
  1. 容量小的向容量大的转换,可以自动转换,比如可以直接将一个int类型赋值给double:
    double d = 34;
    
  2. 容量大的向容量小的转换,必须强制类型转换,就是你上面的那种形式,比如:
    double c = 5/9.0 *(f - 32);
    int nowC = (int)c;
    
  3. 整数类型常量默认为int类型,比如17。
  4. 浮点类型常量默认为double类型,比如3.14。
  5. 在多种数据类型混合运算时,容量小的自动转换为整个表达式中容量最大的,然后再进行计算,比如:
    int i = 9; 
    float f = 4f; 
    double d = 3.14; 
    double dd = i + f + d;
    
    此时,i和f都各自先转换成double,再进行+运算。
  6. 在多种数据类型混合运算时,byte、short、char三者不会互相转换,他们各自转换为int再进行计算。
  7. 在有些时候,容量小的会自动提升为容量大的,比如方法重载传参数时候,但是byte 和 short 不会自动提升为char,其它类型按照上面所述的顺序提升。 差不多就这些,不明白可以补充。另外需要注意的是强转虽然编译没问题,但是运行时,有可能会数据溢出,损失精度。

JAVA如何进行强制类型转换

转型有两种:向上转型和向下转型(强制转型) 两种分别如下: 一种是向上转型: 对于基础数据类型,可以自动转型,比如:

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。