int与String的相互转换

113 阅读1分钟

int -> String


public static void main(String[] agrs) {
    Integer i = 20;
    String str1 = i + "";//第一种方法
    String str2 = String.valueOf(i);//第二种方法
    String str3 = Integer.toString(i);//第三种方法

    System.out.println(str1);//20
    System.out.println(str2);//20
    System.out.println(str3);//20
}

经过多次的反复测试,tostring()是最快的,num+""是最慢的,

在使用第一种方法或者第二种方法在使用的时候,不用去判断所传的对象是否为null,但是必须注意,如果传的是null,返回来的是一个为null的字符串而不是null值,这个地方需要切记。

public static void main(String[] agrs) {
    Integer i = null;
    String str1 = i + "";//第一种方法
    String str2 = String.valueOf(i);//第二种方法
    //String str3 = Integer.toString(i);//该方法不可以接受用null
    
    System.out.println(str1.length());//4
    System.out.println(str2.length());//4
    System.out.println(StringUtils.isEmpty(str1) && StringUtils.isEmpty(str2));//false
}

String -> int

当String类型为数字时

public static void main(String[] agrs) {
    String str = "123";
    int i1 = Integer.parseInt(str);//方法一(推荐)
    int i2 = Integer.valueOf(str).intValue();//方法二
}

当String类型为字符时

public static void main(String[] agrs) {
    String str = "aaa";
    int i1 = Integer.parseInt(str);//方法一(推荐)
    int i2 = Integer.valueOf(str).intValue();//方法二
}

执行结果:

image.png

当String超出int上限时

public static void main(String[] agrs) {
    String str = "2147483648";//int的最大值2147483647
    //System.out.println(Integer.parseInt(str));//NumberFormatException
    long l = Long.parseLong(str);
}