zoukankan      html  css  js  c++  java
  • java基础Java数据类型转换神秘面纱(2)

    2.简单Java数据类型之间的转换

    简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。

    ⑴JAVA数据类型自动转换

    具体地讲,当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。而在方法调用时,实际参数较“小”,而被调用的方法的形式参数数据又较“大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将“小”数据转换成“大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最“接近”的“大”数据并进行调用。

    这些类型由“小”到“大”分别为 (byte,short,char)--int--long--float—double。这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。

    请看下面的示例:
     
    ①下面的语句可以在Java中直接通过: 

    1. byte b;  
    2. int i=b;  
    3. long l=b;  
    4. float f=b;  
    5. double d=b;  

    ②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如 

    1. char c='c';  
    2. int i=c;   
    3. System.out.println("output:"+i);  

    输出:output:99;
     
    ③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。 

    1. short i=99 ;  
    2. char c=(char)i;  
    3. System.out.println("output:"+c);  

    输出:output:c;
     
    ④对象多态中若有方法: 

    1. f(byte x){……};  
    2. f(short x) {……};  
    3. f(int x) {……};  
    4. f(long x) {……};  
    5. f(float x) {……};  
    6. f(double x) {……};  
    7.  

    又有:char y=’A’;那么,语句f(y)会调用哪一个方法呢?答案是:f(int x) {……}方法,因为它的形参比实参“大”且是最“接近”的。
     
    而对于方法: 

    1. f(float x) {……};  
    2. f(double x) {……};  
    3.  

    又有:long y=123L;那么,语句f(y)调用的方法则是f(float x) {……}。
     
    ⑵强制JAVA数据类型转换

    将“大”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: 

    1. int n=(int)3.14159/2;  
    2.  

    可以想象,这种转换肯定可能会导致溢出或精度的下降。
     
    注:

    ①当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。 

    1. byte b;  
    2.     b=3;  
    3.     b=(byte)(b*3);//必须声明byte。  

    ②带小数的变量默认为double类型。 

    1. float f;  
    2.     f=1.3f;//必须声明f。  
    3.  

    ⑶包装类过渡类型转换

    一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:

    ①当希望把float型转换为double型时: 

    1. float f1=100.00f;   
    2. Float F1=new Float(f1);   
    3. double d1=F1.doubleValue();  
    4. F1.doubleValue()为Float类的返回double值型的方法 

    ②当希望把double型转换为int型时: 

    1. double d1=100.00;  
    2. Double D1=new Double(d1);  
    3. int i1=D1.intValue();  

    简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
    而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

  • 相关阅读:
    ubuntu下文件安装与卸载
    webkit中的JavaScriptCore部分
    ubuntu 显示文件夹中的隐藏文件
    C语言中的fscanf函数
    test
    Use SandCastle to generate help document automatically.
    XElement Getting OuterXML and InnerXML
    XUACompatible meta 用法
    Adobe Dreamweaver CS5.5 中文版 下载 注册码
    The Difference Between jQuery’s .bind(), .live(), and .delegate()
  • 原文地址:https://www.cnblogs.com/yujy/p/2988553.html
Copyright © 2011-2022 走看看