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

猜你喜欢

转载自www.cnblogs.com/mytJava/p/12749094.html