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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • thinkphp5.0漏洞_thinkphp6漏洞

    thinkphp5.0漏洞_thinkphp6漏洞0x00框架运行环境ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。PDO查询能阻止大多数传参攻击,而且框架要求的php版本是5.4;这就防止了php在5.3.6下有个PDO本地查询造成SQL注入的漏洞。…

    2026年1月22日
    5
  • java StringBuffer和StringBuilder

    java StringBuffer和StringBuilder一、前言我们在实际的开发中,如果需要进行字符串的频繁拼接,会出现以下问题:java中的字符串是不可变的,每一次拼接都会产生新字符串。这样会占用大量的方法区内存。造成内存空间的浪费。eg.Strings=”abc”;s+=”hello”;就以上两行代码,就导致在方法区字符串常量池当中创建了3个对象:”abc””hello””abchello”因此引出StringBuffer和StringBuilder可变字符串!二、如何优化StringBuffer和StringBuild

    2022年7月17日
    14
  • Delphi考虑sql注入 QuotedStr

    Delphi考虑sql注入 QuotedStr之前只在BS架构的项目中考虑了Sql注入问题,却很少考虑到用了多年的Delphi项目也应该考虑Sql注入的问题,今天做了个实验,成功完成注入,把表里数据全部删除,以后再做Delphi项目还真的考虑这个问题。总体讲,大体知道有两种方式可以避免Delphi中的Sql注入:1、用QuotedStr替代”’进行字符串拼接;2、采用传参数的方式与数据库交互,这种方式哪天再仔细体验一下。 以下为一个小测试,…

    2022年10月18日
    3
  • RabbitMQ消费消息坑:failed to convert serialized Message content

    RabbitMQ消费消息坑:failed to convert serialized Message content文章目录一、问题描述二、解决方案方案一:共同使用一个对象方案二:消息JSON序列化(推荐)2.1.生产者发送消息JSON序列化2.2.消费者接收消息JSON反序列化三、测试一、问题描述2022-05-0314:01:40.630WARN16876—[ntContainer#0-2]s.a.r.l.ConditionalRejectingErrorHandler:ExecutionofRabbitmessagelistenerfailed.org.springfram

    2022年6月16日
    634
  • python判断一个数是否为整数

    python判断一个数是否为整数原文:https://www.cnblogs.com/cepaAllium/p/11025877.html

    2022年7月5日
    27
  • Tomcat配置SSL证书(PFX证书)

    Tomcat配置SSL证书(PFX证书)Symantec提供免费版SSL,可快速免费申请一、什么是SSL(证书)?    SSL证书服务(AlibabaCloudSSLCertificatesService)由阿里云联合多家国内外数字证书管理和颁发的权威机构、在阿里云平台上直接提供的服务器数字证书。您可以在阿里云平台上直接购买、或者免费获取所需类型的数字证书,并一键部署在阿里云…

    2022年5月2日
    49

发表回复

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

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