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

java中把json怎么转换成数组?

java数据类型总结与数据类型转换问题

java中的数据在啥时候可能会发生隐式转换?

数据类型转换