• int 与 Integer 的转换、NumberFormatException


    【问题三】 int 与 Integer 的转换

    int 到 Integer

    int a = 3;
    Integer A = new Integer(a);
    或
    Integer A = Integer.valueOf(a);
    

    Integer 到 int

    Integer A = new Integer(5);
    int a = A.intValue();
    

    Integer.parseInt(String str) 则是将String类型转为int 类型。

    int 与 Integer的区别与联系

    1. int类型是放在栈空间的,Integer是作为对象放在堆空间的;

    2. int 是基本类型,不是类,为了符合面向对象编程,后来出现了Integer 类,它是对int进行封装的。

    3. int不是对象,是java原始的数据类型,它默认值为0。

    4. Integer是个对象,它有自己的方法,默认值为NULL。

    为什么要对基本类型进行对象包装呢?

    • 因为类能提供必要的方法,用于实现基本数据类型的数值与可打印字符串之间的转换,以及一些其他的实用方法。

    • 另外,有些数据结构库类只能操作对象,而不支持基本数据类型的遍历,包装类提供一种便利的方式,能够把基本数据类型转换成等价的对象,从而可以利用数据结构库类进行处理。

    总之,无论做了什么都应该不是“白做”,而是有目的的,能够方便我们更好的编码与使用。

    【问题四】 String 通过Integer.parseInt 转 int 时, 报错NumberFormatException

    问下面的代码的运行结果是什么?会出现异常吗,是运行时期的异常还是编译时期的异常.为什么????

    public class A {
    
      public static void main(String[] args) {
    	String s = "";
    	int a = Integer.parseInt(s);
    	System.out.println(a);
      }
    }
    

    结果:会出现异常:

       Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

    编译可以通过,因为s有值,而运行时会出现数字转换异常,空的字符串不能转换为int

    数字转换异常,便是空的字符串不知道应该转成什么样的int数。由此,引发的一个注意点,便是,通过Integer.parseInt(),解析字符串时,一定要确保 字符串的实际值 必须是数字,且只能是数字。

    【示例】

    image-20200421234738319

    【源码分析】 解释为什么 空字符串 会报错

    image-20200421235239703

  • 相关阅读:
    luogu P2852 [USACO06DEC]Milk Patterns G
    FZOJ 4267 树上统计
    CF1303G Sum of Prefix Sums
    luogu P5311 [Ynoi2011]成都七中
    luogu P5306 [COCI2019] Transport
    SP34096 DIVCNTK
    luogu P5325 【模板】Min_25筛
    luogu P1742 最小圆覆盖
    求两直线交点坐标
    1098: 复合函数求值(函数专题)
  • 原文地址:https://www.cnblogs.com/mytJava/p/12749094.html
Copyright © 2020-2023  润新知