Java强制数据类型转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java强制数据类型转换相关的知识,希望对你有一定的参考价值。

public class Page4
public static void main(String[] args)
int f = 80;//华氏度
double c = 5/9.0 *(f - 32);//计算摄氏度
int nowC = (int)c;
System.out.println("80°F等于" + nowC + "°C");




他的一些规则和写法int nowC = (int)c;
处了上面的写法还有别的吗?

规则可不少,挺乱的其实:
强制数据类型转换: 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 3者不会互相转换,他们各自转换为int再进行计算
7.在有些时候,容量小的会自动提升为容量大的,比如方法重载传参数时候,
但是byte 和 short 不会自动提升为char,其它类型按照我上面所述的顺序提升。

差不多就这些,不明白补充,另外需要注意的是强转虽然编译没问题,但是运行时,有可能会数据溢出,损失精度
参考技术A

java的强类型转换有两类:

    基本类型的强转:byte>short>char>int>long>float>double 左底又高,从高到低类型要强转,低类型转高类型自动转。

    继承类型的强转: 如果存在继承关系:D 》C 》 B 》 A ,》表示继承。

    那么用子类表示父类时就要强转:

    A a = new A();

    B b = (B)a;

    用父类表示子类对象时自动转:

    A a = new B();

参考技术B 除了这种就是创建一个Intenger类的对象了。 参考技术C 1 ) 整数 int 转换成字串 String , 有三种方法 :
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;

2 ) String 转 int
int i = Integer.parseInt([String]);
i = Integer.parseInt([String],[int radix]);
int i = Integer.valueOf(my_str).intValue();

3 ) 布尔类型 转 String

1. 第一种方法

boolean bool = true;
String s = new Boolean(bool).toString();//将bool利用对象封装器转化为对象

2. 第二种方法

boolean bool = true;

String s = String.valueOf( bool );

4 ) String 转 Date

1 . 导入 java.util.Date date=null;

2 . date=java.sql.Date.valueOf(String s);

5 ) 数字类型间的转换

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

第二种是向下转型 , 也就是强制
这种需要强转 , 比如
long a = 10 ;
int b = (int) a;
通过 (int)可以强制转型 , 但是这样会丢失精度 , 比如a如果超过了b的范围 , 那么强转成int型, 只会等于int的最大值

又如 : int a = ( int ) 8.8 ;
如果对编程感兴趣可以来我这个看看,希望对您有所帮助!~

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

3天后投票选最佳答案

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

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

2、根据强制转换语句的格式,易得“byte c = (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、byte short char运算会转换为Int;

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

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

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

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

特殊: 

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

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

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

参考技术A

强制类型转换有两种,转换方法如下(都需要使用C语言):

1、显式强制类型转换:

TYPE b = (TYPE) a;其中,TYPE为类型描述符,如int,float等。经强制类型转换运算符运算后,返回一个具有TYPE类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:

int n=0xab65;

char a=(char)n;

2、隐式强制类型转换:

隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。如:

int n;

double d=3.88;

n=d;//执行本句后,n的值为3,而d的值仍是3.88。

扩展资料

类型转换遵循以下规则:

1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。

a、若两种类型的字节数不同,转换成字节数高的类型。

b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型。

3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

4、char型和short型(在visual c++等环境下)参与运算时,必须先转换成int型。

5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分直接舍去。

C++语言编译系统提供的内部数据类型的隐式自动转换规则如下:

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

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

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

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

参考资料:百度百科- 强制类型转换

参考技术B

强制类型转换分两种形式:

1. 显式强制类型转换 :

C中显式强制类型转换很简单,格式如下: TYPE b = (TYPE) a, 其中,TYPE为类型描述符,如int,float等。

经强制类型转换运算符运算后,返回一个具有TYPE类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变。

2.隐式强制类型转换:

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

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

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

扩展资料:

内部数据类型的隐式自动转换规则如下:

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

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

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

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

参考资料:百度百科-强制类型转换

参考技术C

在windows下编译java文件、执行:

1、先创建一个txt,更改为test.java。

2、编写代码,为输出为holloword。

3、找到cmd,并进行打开cmd。

4、编译java文件,输入命令为javac test.java。

5、如果没有报错,查看当前目录下是否有class文件产生。

6、执行class文件,在命令输入java test,输出为holloword。

参考技术D

Java中的强制类型转换的转换方式如下:

当用一个类型的构造器构造出一个对象时,这个对象的类型就已经确定的,也就说它的本质是不会再发生变化了。

在Java中可以通过继承、向上转型的关系使用父类类型来引用它,这个时候是使用功能较弱的类型引用功能较强的对象。但是将功能较弱的类型强制转功能较强的对象时,就不一定可以行了。

扩展资料:

在Java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能。常用的转换方法有Object.toString(),(String)要转换的对象,String.valueOf(Object)等。

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

强制类型转换是把父类型转换为子类型。因为子类型比父类型的内涵要丰富,无非就是属性更多功能更强,所以要把父类型转换为子类型,需要强制。

比如:

long a = 10 ; 

int b = (int) a。

通过 (int)可以强制转型 , 但是这样会丢失精度 , 比如a如果超过了b的范围 , 那么强转成int型, 只会等于int的最大值。

参考资料来源:百度百科—强制类型转换

以上是关于Java强制数据类型转换的主要内容,如果未能解决你的问题,请参考以下文章

Java强制数据类型转换

Java数据类型转换:强制类型转换+自动类型转换

Java初学者:基本数据类型的强制类型转换

Java 强制类型转换

abap 数据类型强制转换

C++中的数据类型强制转换