• 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+"
    ");          
          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);
                  
            }
        }

    结果如下:

  • 相关阅读:
    一个链表,奇数位升序偶数位降序,让链表变成升序的
    LeetCode 046 Permutations 全排列
    LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
    LeetCode 024 Swap Nodes in Pairs 交换链表中相邻的两个节点
    模板实现一个栈(内部使用动态申请的数组作为存储结构)
    004 Median of Two Sorted Arrays 两个有序数组的中位数
    静态链接与动态链接
    sizeof和strlen的区别
    const和define的区别
    lodash
  • 原文地址:https://www.cnblogs.com/9587cgq/p/13138097.html
Copyright © 2020-2023  润新知