Java强制数据类型转换
publicclassPage4{publicstaticvoidmain(String[]args){intf=80;//华氏度doublec=5/9.0*(f-32)...
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;
处了上面的写法还有别的吗? 展开
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;
处了上面的写法还有别的吗? 展开
4个回答
2013-08-29
展开全部
规则可不少,挺乱的其实:
强制数据类型转换: 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,其它类型按照我上面所述的顺序提升。
差不多就这些,不明白补充,另外需要注意的是强转虽然编译没问题,但是运行时,有可能会数据溢出,损失精度
强制数据类型转换: 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,其它类型按照我上面所述的顺序提升。
差不多就这些,不明白补充,另外需要注意的是强转虽然编译没问题,但是运行时,有可能会数据溢出,损失精度
展开全部
java的强类型转换有两类:
基本类型的强转:byte>short>char>int>long>float>double 左底又高,从高到低类型要强转,低类型转高类型自动转。
继承类型的强转: 如果存在继承关系:D 》C 》 B 》 A ,》表示继承。
那么用子类表示父类时就要强转:
A a = new A();
B b = (B)a;
用父类表示子类对象时自动转:
A a = new B();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-08-29
展开全部
除了这种就是创建一个Intenger类的对象了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 ;
如果对编程感兴趣可以来我这个看看,希望对您有所帮助!~
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 ;
如果对编程感兴趣可以来我这个看看,希望对您有所帮助!~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询