zoukankan      html  css  js  c++  java
  • Java 类型转换以及Object转成其他类型

    Object转int

    int count=(int)map.get("count")

     int count=Integer.parseInt((String)map.get("count"));
    int  count=Integer.parseInt(map.get("count").toString());

    自动数据类型转换

    自动转换按从低到高的顺序转换。不同类型数据间的优先关系如下:
        低--------------------------------------------->高
        byte,short,char-> int -> long -> float -> double

    运算中,不同类型的数据先转化为同一类型,然后进行运算,转换规则如下:

    操作数1类型操作数2类型转换后的类型
    byte、short、char int int
    byte、short、char、int long long
    byte、short、char、int、long float float
    byte、short、char、int、long、float double double

    强制数据类型转换

    强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确,下面的例子可以说明这个问题。

     
     
    1. public class Demo {
    2. public static void main(String[] args){
    3. int x;
    4. double y;
    5. x = (int)34.56 + (int)11.2; // 丢失精度
    6. y = (double)x + (double)10 + 1; // 提高精度
    7. System.out.println("x=" + x);
    8. System.out.println("y=" + y);
    9. }
    10. }

    运行结果:
    x=45
    y=56.0

    仔细分析上面程序段:由于在 34.56 前有一个 int 的强制类型转化,所以 34.56 就变成了 34。同样 11.2 就变成了 11 了,所以 x 的结果就是 45。在 x 前有一个 double 类型的强制转换,所以 x 的值变为 45.0,而 10 的前面也被强制成 double 类型,所以也变成 10.0,所以最后 y 的值变为 56。

    Object转String

    方法1:采用 Object.toString()方法
    请看下面的例子:

    1 Object object = getObject();
    2 System.out.println(object.toString());

    注1


    在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调 用此方法。但在使用时要注意,必须保证object不是null值,否则将抛出NullPointerException异常。采用这种方法时,通常派生类会覆盖Object里的toString()方法。
    方法2:采用类型转换(String)object方法
    这是标准的类型转换,将object转成String类型的值。使用这种方法时,需要注意的是类型必须能转成String类型。因此最好用instanceof做个类型检查,以判断是否可以转换。否则容易抛出CalssCastException异常。此外,需特别小心的是因定义为Object 类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外小心。如:

    Object obj = new Integer(100);
    String strVal = (String)obj;


    在运行时将会出错,因为将Integer类型强制转换为String类型,无法通过。但是,

    Integer obj = new Integer(100);
    String strVal = (String)obj;


    如上格式代码,将会报语法错误。
    此外,因null值可以强制转换为任何java类类型,(String)null也是合法的。
    方法3:采用String.valueOf(Object)
    String.valueOf(Object)的基础是Object.toString()。但它与Objec.toString()又有所不同。在前面方法1的分析中提到,使用后者时需保证不为null。但采用第三种方法时,将不用担心object是否为null值这一问题。为了便于说明问题,我们来分析一下相关的源代码。Jdk里String. valueOf(Object)源码如下:
       

    public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
    }


    从上面的源码可以很清晰的看出null值不用担心的理由。但是,这也恰恰给了我们隐患。我们应当注意到,当object为null时,String.valueOf(object)的值是字符串”null”,而不是
    null!!!在使用过程中切记要注意。试想一下,如果我们用 if(String.valueOf(object)==null){System.out.println(“传入的值是null!”);}这样的语句将可能会发生什么问题。再想一下,向控制台输出时,在视觉上如下语句在执行的结果上有什么不同:

    System.out.println(String.valueOf((Object)null)); 注2
    System.out.println(null);


    我们看到的输出将是一模一样的东西:null,但它们意义相同吗?
    注1:光就System.out.println的使用来说,语句System.out.println(object.toString()); 换为System.out.println(object); 更好。此处如是用法主要是为了说明Object#toString()的用法。
    注2:推荐使用System.out.println(String.valueOf((Object)null)); 不推荐使用System.out.println(String.valueOf(null));在使用重载方法时,这样做是一个好的习惯。
    以上是对object对象转换为String的一些总结。

    String转int

     1). int i = Integer.parseInt([String]); 或

      i = Integer.parseInt([String],[int radix]);

      2). int i = Integer.valueOf(my_str).intValue();

      注: 字串转成 Double, Float, Long 的方法大同小异.

    new Integer.valueof()返回的是Integer的对象。
    Integer.parseInt() 返回的是一个int的值。

    new Integer.valueof().intValue();返回的也是一个int的值。
    Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了。
    而Integer.parseInt(String s)只是将是数字的字符串转成数字,注意他返回的是int型变量不具备方法和属性。

    Object转int

    int a=1;
    Object ao=a;
    System.out.println((int)ao ); //也可以输出1.

     int b=Inerger.parseInt(obj.toString());

    转自:

     

    JAVA强制类型转换

  • 相关阅读:
    Ext JS学习第三天 我们所熟悉的javascript(二)
    Ext JS学习第二天 我们所熟悉的javascript(一)
    Ext JS学习第十七天 事件机制event(二)
    Ext JS学习第十六天 事件机制event(一)
    Ext JS学习第十五天 Ext基础之 Ext.DomQuery
    Ext JS学习第十四天 Ext基础之 Ext.DomHelper
    Ext JS学习第十三天 Ext基础之 Ext.Element
    Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
    针对错误 “服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF” 的原因分析
    C# 使用HttpWebRequest通过PHP接口 上传文件
  • 原文地址:https://www.cnblogs.com/youxin/p/5388436.html
Copyright © 2011-2022 走看看