Java将字符串String转换为整型Int的两种方式
作者:码说TM 发布时间:2021-12-11 10:01:32
Java 如何将String转化为Int
在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换.
例1:
String str = "123";
try {
int a = Integer.parseInt(str);
} catch (NumberFormatException e) {
e.printStackTrace();
}
例2:
String str = "123";
try {
int b = Integer.valueOf(str).intValue()
} catch (NumberFormatException e) {
e.printStackTrace();
}
在转换过程中需要注意,因为字符串中可能会出现非数字的情况,所以在转换的时候需要捕捉处理异常
附录:Java将字符串String转换为整型Int
用法
在java中经常会遇到需要对数据进行类型转换的场景,String类型的数据转为Int类型属于比较常见的场景,主要有两种转换方法:
1. 使用Integer.parseInt(String)方法
2. 使用Integer.valueOf(String)方法
具体demo如下:
public void convert() {
// 1.使用Integer.parseInt(String)
String str1 = "31";
Integer num1 = Integer.parseInt(str1);
System.out.print("字符串31转换为数字:");
System.out.println(num1);
// 2.使用Integer.valueOf(String)
String str2 = "32";
Integer num2 = Integer.valueOf(str2);
System.out.print("字符串32转换为数字:");
System.out.println(num2);
}
执行结果:
根据执行结果可见,两种方式都能完成字符串到整型的转换。
注意点
但需要注意的是,使用这两种方法都有一个前提,那就是待转换字符串的内容必须为纯数字。
不难发现上面demo中的待转换字符串都是"31"、"32"这种由纯数字组成的字符串,如果待转字符串中出现了除数字以外的其他字符,则程序会抛出异常。
如下demo所示,在字符串中加入小写英文字母,并用try-catch语句包裹代码段以捕捉会出现的异常。(因为我们已经知道,带字母的字符串转换为整型会出现数字格式转换的异常,所以选择catch NumberFormatException)
public void convert() {
// 1.Integer.parseInt(String)
try {
String str1 = "31a";
Integer num1 = Integer.parseInt(str1);
System.out.print("字符串31a转换为数字:");
System.out.println(num1);
} catch (NumberFormatException e) {
System.out.println("Integer.parseInt(String)方法执行异常");
e.printStackTrace();
}
// 1.Integer.valueOf(String)
try {
String str2 = "32b";
Integer num2 = Integer.valueOf(str2);
System.out.print("字符串32b转换为数字:");
System.out.println(num2);
} catch (NumberFormatException e) {
System.out.println("Integer.valueOf(String)方法执行异常");
e.printStackTrace();
}
}
从执行结果可见,这段代码分别在Integer.parseInt(String)方法和Integer.valueOf(String)位置触发了NumberFormatException,其原因都是被转换的字符串中存在英文字母,无法转换成整型。
性能比较
我们可以通过查看源码来比价两个方法的性能:
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}
不难发现,Integer.parseInt(String) 和Integer.valueOf(String)的实现中,都是调用的一个方法:Integer.parseInt(String, Integer);但是Integer.valueOf(String)还多嵌套了一层Integer.valueOf(Integer)方法,因此从源码可得知:Integer.parseInt(String)方法的性能更胜一筹。
来源:https://blog.csdn.net/qq_33323054/article/details/126256907
猜你喜欢
- 1.前言string是属于引用类型的,这个大家都知道吧?但是平常在使用的过程中,发现它还是拥有一些值类型的特征的,这到底是为什么呢?原因就是
- Java Double相加出现的怪事问题的提出编译运行下面这个程序会看到什么public class test { public stati
- 一、注解是什么Java 注解用于为 Java 代码提供元数据,看完这句话也许你还是一脸懵逼,用人话说就是注解不直接影响你的代码执行,仅提供信
- Java流程控制用户交互Scannerjava.util.Scanner是Java5的新特征,可以通过Scanner类来获取用户的输入基本语
- 本文实例讲述了Java类加载器和类加载机制。分享给大家供大家参考,具体如下:一 点睛1 类加载器负责将.class文件(可能在磁盘上,也可能
- RestTemplate未设置超时时间,导致RabbitMQ队列大量堆积,消费者假死,不进行消费,类似线程堵塞。排查:从日志排查问题,在从进
- 前言研究表明,Java堆中对象占据最大比重的就是字符串对象,所以弄清楚字符串知识很重要,本文主要重点聊聊字符串常量池。Java中的字符串常量
- Java中可以使用关键字synchronized进行线程同步控制,实现关键资源顺序访问,避免由于多线程并发执行导致的数据不一致性等问题。sy
- 前言图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳。搭配精美的文章配图则会使文章内容更加丰富,增加文
- 在多线程对一个整数进行自增操作时,需要用synchronized进行同步。然而,如果synchronized的对象选取的不合适的话,就无法实
- 一、什么是 LRU 算法就是一种缓存淘汰策略。计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。但问题是,删除哪些内容呢?
- [LeetCode] 9. Palindrome Number 验证回文数字Determine whether an integer is
- 根据用户系统时区动态展示时间当我们使用SpringBoot+Mysql开发系统时,总是统一设置UTC+8时区,这样用户在任何地区访问系统,展
- 前言本文将提供一个redis的工具类,可以用在Spring boot以及Spring Cloud项目中,本工具类主要整合了将Redis作为N
- 前言最近在给熔断器组件增加一个降级策略(Hystrix好像没有这个配置),我们提供了如下几种策略:1、默认策略2、返回常量值3、抛出指定异常
- 前端控制器是整个MVC框架中最为核心的一块,它主要用来拦截符合要求的外部请求,并把请求分发到不同的控制器去处理,根据控制器处理后的结果,生成
- 前言总是觉得对HashMap很熟悉,但最近连续被问到几个关于它的问题,才发现它其实并不简单。这里对关于它的一些问题做个总结,也希望能够大家一
- 1、代码设计的代理模式代理模式属于构建型模式(Proxy),提供了对目标对象的一种访问方式; 即通过代理对象访问目标对象。这样做的好处是:可
- 事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂。而这些东西却往往又是编程中常用且非常重要的东西。大家都知道win
- 过滤器实现过滤器需要实现 javax.servlet.Filter 接口。重写三个方法。其中 init() 方法在服务启动时执行,destr