Integer和String转换[通俗易懂]

Integer和String转换[通俗易懂]Integer和String相互转换//1、String转IntegerIntegervalue=Integer.parseInt(s);//2、int转StringString.valueOf(value);//Integer.toString(i)Integer.toString(value);//3、Integer转StringString.val…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Integer和String相互转换

// 1、String 转 Integer
int value = Integer.parseInt(s); //string转int
Integer value = Integer.valueof(s); //string 转 integer, 进行了装箱操作Integer.valueOf(parseInt(s, 10))

// 2、int 转 String
String.valueOf(value); //Integer.toString(i)
Integer.toString(value);

// 3、Integer 转 String
String.valueOf(value); //obj.toString()
value.toString(value); //通过实例对象value调用静态方法,Integer.toString(int)
Integer.toString(value); //通过类名Integer调用静态方法,Integer.toString(int)

Jetbrains全家桶1年46,售后保障稳定

1、String 转 Integer

Integer.parseInt(string s)

  • 对s和radix作判断 (radius是进制,默认为10进制)

  • 对符号位”+”、”-“和字符串长度作处理

  • 取出string中的每个字符转换为数字digit,不能出现非数字位(只能包含char类型 0-9)

  • result乘以radix,result 减去digit

  • 均无异常,如果是负数,则返回result;正数返回-result

// Integer.java
public static int parseInt(String s) throws NumberFormatException { 
   
        return parseInt(s,10); //默认以十进制方式进行转换
    }

public static int parseInt(String s, int radix) throws NumberFormatException { 
   
      // s为null,抛出NumberFormatException异常
      // radix小于2,或者radix,大于36,抛出NumberFormatException异常

        int result = 0;
        boolean negative = false;
        int i = 0, len = s.length();
        int limit = -Integer.MAX_VALUE;
        int multmin;
        int digit;

        if (len > 0) { 
   
            char firstChar = s.charAt(0);
            if (firstChar < '0') { 
    // 是否是以符号位"+"、"-"开头
                if (firstChar == '-') { 
   
                    negative = true;
                    limit = Integer.MIN_VALUE; //
                } else if (firstChar != '+')
                    throw NumberFormatException.forInputString(s); //以非数字,非"+"、"-"开头则抛异常

                if (len == 1) // Cannot have lone "+" or "-"
                    throw NumberFormatException.forInputString(s); //如果只包含符号位"+"、"-",抛异常
                i++;
            }
            multmin = limit / radix;
            while (i < len) { 
   
                // Accumulating negatively avoids surprises near MAX_VALUE
                digit = Character.digit(s.charAt(i++),radix);
                if (digit < 0) { 
   
                    throw NumberFormatException.forInputString(s);
                }
                result *= radix;
                result -= digit;
            }
        } else { 
   
            throw NumberFormatException.forInputString(s); // s
        }
        return negative ? result : -result;
    }
//Character.java
 public static int digit(char ch, int radix) { 
   
        return digit((int)ch, radix);
    }

public static int digit(int codePoint, int radix) { 
   
        if (radix < MIN_RADIX || radix > MAX_RADIX) { 
   
            return -1;
        }
        if (codePoint < 128) { 
   
            // Optimized for ASCII
            int result = -1;
            if ('0' <= codePoint && codePoint <= '9') { 
   
                result = codePoint - '0';
            } else if ('a' <= codePoint && codePoint <= 'z') { 
   
                result = 10 + (codePoint - 'a');
            } else if ('A' <= codePoint && codePoint <= 'Z') { 
   
                result = 10 + (codePoint - 'A');
            }
            return result < radix ? result : -1;
        }
        return digitImpl(codePoint, radix);
    }

2、Integer 转 String

无论是int类型还是integer类型,最终都是通过Integer的toString(int i)这个静态方法进行转换的
源码自行了解吧,里面还做了一次缓存。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219191.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java递归详解_java难不难学

    Java递归详解_java难不难学学习目标:提示:这里可以添加学习目标例如:一周掌握Java入门知识学习内容:提示:这里可以添加要学的内容例如:1、搭建Java开发环境2、掌握Java基本语法3、掌握条件语句4、掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、周一至周五晚上7点—晚上9点2、周六上午9点-上午11点3、周日下午3点-下午6点学习产出:提示:这里统计学习计划的总量例如:1、技术笔记2遍2、CSDN技术博客3篇

    2022年9月18日
    4
  • a标签去掉下划线_怎么去掉html a超链接下划线

    a标签去掉下划线_怎么去掉html a超链接下划线我们在HTML网页制作过程中,相信大家对css文本超链接这个概念并不陌生。我们都知道想要给某段文本或者指定元素添加一个锚点也就是超链接需要用到HTML中的a标签。程序猿的生活:打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)​zhuanlan.zhihu.com那么有的新手可能就会发现,在使用a标签时文本超链接会自动出现下划线!这就让一些小白们感到苦恼了,…

    2022年5月9日
    52
  • 软件测试用例设计 (一)等价类划分法「建议收藏」

    软件测试用例设计 (一)等价类划分法「建议收藏」软件测试对于软件的重要性不言而喻,是计算机类学生毕业后的一个重要从业方向之一。如果要从事软件测试,那么有些必备的技能还是要有的。比如,测试理论、测试工具、测试文档的编制。今天我们就来看看最最最重要的测试雷论:黑盒测试用例设计方法——等价类,可以说,这个不会,你的软件测试理论约等于0、目录1.为什么要掌握等价类用例设计方法2.等价类划分法是什么3.等价类划分法的设计步骤4.等价类划分实例走起步骤1:划分等价类步骤2:设计用例覆盖有效等价类步骤3:设计用例覆盖无效等价类

    2022年10月17日
    1
  • wireshark mysql 过滤_Wireshark过滤总结[通俗易懂]

    wireshark mysql 过滤_Wireshark过滤总结[通俗易懂]Wireshark提供了两种过滤器:捕获过滤器:在抓包之前就设定好过滤条件,然后只抓取符合条件的数据包。显示过滤器:在已捕获的数据包集合中设置过滤条件,隐藏不想显示的数据包,只显示符合条件的数据包。需要注意的是,这两种过滤器所使用的语法是完全不同的,想想也知道,捕捉网卡数据的其实并不是Wireshark,而是WinPcap,当然要按WinPcap的规则来,显示过滤器就是Wireshark对已捕捉的…

    2022年7月13日
    30
  • 万年历matlab算法,万年历算法(万年历算法和分析)[通俗易懂]

    年历的计算方法:关键是求出当年1月1日是星期几。书上给出了当年份Y>。用蔡勒(Zeller)公式即w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下,w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡.年历的计算方法:关键是求出当年1月1日是星期几。书上给出了当年份Y的公式来计算天天从已知的日期:?G=4C…

    2022年4月6日
    42
  • fastjson和Apache报错解决整理,以及编译时minSdkVersion的值设定

    fastjson和Apache报错解决整理,以及编译时minSdkVersion的值设定

    2021年9月30日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号