Java 7 (数据类型转换)
Posted 青灯常伴古佛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 7 (数据类型转换)相关的知识,希望对你有一定的参考价值。
数据类型转换
主要内容:
数据类型转换概述
数值型数据的转换
数字字符串与数值型的转换
1.类型转换概述
什么是数据类型转换?
又称:类型转换
在Java程序中,常数(常量)或者变量从一种数据类型转换到另一种数 据类型。
注意:有条件地转换,类型之间 并不能任意转换
2、数值型之间的转换
分两类:
自动类型转换
augmented、conversion
加宽转换
系统自动完成
强制类型转换
explicit cast
变窄转换
显式强制转换
2.1自动类型转换
两种类型兼容
如:整数和浮点型彼此兼容,数字类型和boolean不兼容
转换原则
自动“加宽转换” ,不需要显式强制类型转换语句
转换后数据类型的表示范围比转换前的类型大
如:int → long byte →short int → double
自动类型转换范例:Test.java
public class Test { public static void main(String[] args) { int a=155; float b=21.0f; System.out.println("a="+a+",b="+b); System.out.println("a/b="+(a/b)); } }
两个数中有一个为浮点 数时,运算结果直接为 浮点型
2.2强制类型转换(“变窄转换”)
格式:(target-type) value
(target-type)指要将指定值所转换成的类型
int a;
double b=34.56;
a = (int) b;
注意:
当把一个浮点值赋给整数类型时,截断小数部分;
如 double→int
如果浮点值太大,不能适合目标整数类型,将对目标类型值域取模
int强制转成byte时,对byte型的值域取模(对byte(256)求模)
强制类型转换举例Test2.java
public class Test2 { public static void main(String[] args) { int a=155; int b=9; float g,h; System.out.println("a="+a+",b="+b); g=a/b; System.out.println("a/b="+g+"\\n"); System.out.println("a="+a+",b="+b); h=(float)a/b; System.out.println("a/b="+h); } }
不会丢失信息的类型转换:
原始类型 目标类型
byte short, char, int, long, float, double
short int, long, float, double
char int, long, float, double
int long, float, double
long float, double
float double
注意:不推荐从较长数据向较短数据 的转换,因为数据存储位数缩小,将 导致计算数据精度的降低。
3、类型转换—字符串与数值型
3.1数字字符串转换成数值型数据
String myNumber = “1234.56”; float myFloat = Float.parseFloat(myNumber);
转换方法 说明
Byte.parseByte() 将数字字符串转化为字节型数据
Short.parseShort() 将数字字符串转化为短整型数据
Integer.parseInt() 将数字字符串转化为整型数据
Long.parseLong() 将数字字符串转化为长整型数据
Float.parseFloat() 将数字字符串转化为浮点型数据
Double.parseDouble() 将数字字符串转化为双精度型数据
Boolean.parseBoolean() 将字符串转换为逻辑型
3.2数值型数据转换成字符串
用“+”来实现连接操作
用“+”来实现自动转换
若其中某个操作数不是字符串,在连接之前会自动将其转换 成字符串。
int MyInt=1234; String myString=“hello"+MyInt; //将整型数据转换成了字符串
4.编程实践
public class Conversion { public static void main(String[] args) { System.out.println("浮点型:"); double a1=0,b1=0,c1=0; a1=5/6; System.out.println("5/6="+a1); b1=5.0/6.0; System.out.println("5.0/6.0="+b1); c1=5/6.0; System.out.println("5/6.0"+c1); System.out.println("整数型:"); int a2=0,b2=0,c2=0; a2=5/6; System.out.println("5/6="+a2); b2=5.0/6.0; //有错误,请修改为正确的语句 System.out.println("5.0/6.0="+b2); c2=5/6.0; //有错误,请修改为正确的语句 System.out.println("5/6.0="+c2); } }
代码两处错误;
b2=5.0/6.0; //有错误,请修改为正确的语句
改为
b2=(int)(5.0/6.0);
c2=5/6.0; //有错误,请修改为正确的语句
改为
c2=5/(int)6.0;
必须全英文(中文括号也不行,必须全英文状态下),完整正确代码如下:
public class Conversion { public static void main(String[] args) { System.out.println("浮点型:"); double a1=0,b1=0,c1=0; a1=5/6; System.out.println("5/6="+a1); b1=5.0/6.0; System.out.println("5.0/6.0="+b1); c1=5/6.0; System.out.println("5/6.0"+c1); System.out.println("整数型:"); int a2=0,b2=0,c2=0; a2=5/6; System.out.println("5/6="+a2); b2=(int)(5.0/6.0); //有错误,已改正 System.out.println("5.0/6.0="+b2); c2=5/(int)6.0; //有错误,已改正 System.out.println("5/6.0="+c2); } }
结果如下:
以上是关于Java 7 (数据类型转换)的主要内容,如果未能解决你的问题,请参考以下文章
使用 MSSQL 数据库类型别名,jooq 3.7.3 将它们转换为正确的 Java 类型,但 3.12.3 将它们全部转换为 Java 类型 Object