Java 基本数据类型和包装类和String类的互转

本文详细介绍了Java中不同数据类型之间的转换方法,包括整型到字符串、字符串到整型的转换,以及字符串与字节数组、字符数组之间的相互转换过程。

int -> String

int i=12345;
String s="";
s=i+"";               //第一种方法:
s=String.valueOf(i);  //第二种方法:

调用String类的静态valueOf方法

 

String -> int

s="12345";
int i;
i=Integer.parseInt(s); //第一种方法
i=Integer.valueOf(s).intValue();  //第二种方法

整个转化方法: 

     * 2.字符串与字节数组间的转换
     * ①字符串---->字节数组:调用字符串的getBytes()
     * ②字节数组---->字符串:调用字符串的构造器
     * 
     * 3.字符串与字符数组间的转换
     * ①字符串---->字符数组:调用字符串的toCharArray();
     * ②字符数组---->字符串:调用字符串的构造器  

<think>我们正在讨论Java中的包装parseInt方法。根据引用,我们知道基本数据类型有对应的包装,例如int对应Integer。parseInt是Integer的一个静态方法,用于将字符串解析为整数。 首先,我们需要明确parseInt方法的定义用法。它的作用是将字符串参数解析为有符号的十进制整数。例如,将字符串"123"转换为整数123。 其次,我们需要注意parseInt方法的异常处理。如果字符串不能转换为有效的整数,它会抛出NumberFormatException。 此外,我们还可以讨论parseInt方法的重载形式,例如支持指定进制的parseInt(String s, int radix)。 最后,我们可以结合引用中提到的缓存机制(IntegerCache)来讨论自动装箱性能考虑,但parseInt本身不涉及缓存,因为它返回的是基本数据类型int。 根据以上思路,我们组织回答如下:</think>### Java 包装与 parseInt 方法详解 #### 一、包装核心概念 1. **基本数据类型包装对应关系** Java 为 8 种基本数据类型提供了对应的包装(Wrapper Classes): | 基本类型 | 包装 | 位数 | |----------|-----------|------| | `byte` | `Byte` | 8 | | `short` | `Short` | 16 | | `int` | `Integer` | 32 | | `long` | `Long` | 64 | | `float` | `Float` | 32 | | `double` | `Double` | 64 | | `char` | `Character`| 16 | | `boolean`| `Boolean` | 1 | 2. **包装核心作用** - 使基本类型具备对象特性(可存入集合如 `ArrayList<Integer>`) - 提供类型转换工具方法(如 `parseInt()`) - 扩展功能(如最大值常量 `Integer.MAX_VALUE`) - 支持泛型编程(基本类型不能直接用于泛型) #### 二、parseInt 方法深度解析 **方法签名**: ```java public static int parseInt(String s) throws NumberFormatException public static int parseInt(String s, int radix) throws NumberFormatException ``` **使用场景与示例**: 1. **十进制字符串转整数** ```java String numStr = "2023"; int num = Integer.parseInt(numStr); // 返回 int 值 2023 ``` 2. **指定进制转换** ```java // 二进制转十进制 int binary = Integer.parseInt("1010", 2); // 返回 10 // 十六进制转十进制 int hex = Integer.parseInt("A", 16); // 返回 10 ``` 3. **异常处理** 非法输入会抛出 `NumberFormatException`: ```java try { int val = Integer.parseInt("12a3"); // 包含非数字字符 } catch (NumberFormatException e) { System.out.println("格式错误: " + e.getMessage()); } ``` **执行流程**: 1. 检查字符串非空且有效 2. 处理符号位(`+`/`-`) 3. 按进制逐字符解析 4. 数值范围校验(超出 `-2^31`~`2^31-1` 抛出异常) #### 三、关键注意事项 1. **性能优化** - 优先使用基本类型 `int` 而非 `Integer`(避免不必要的装箱开销) - 高频小数值可复用缓存(`-128~127` 的 `Integer` 对象有缓存[^3][^4]) 2. **与 valueOf() 区别** ```java Integer.parseInt("123"); // 返回基本类型 int Integer.valueOf("123"); // 返回包装 Integer(可能从缓存获取) ``` 3. **进制限制** 进制范围必须为 `2~36`(超出范围抛出 `NumberFormatException`) #### 四、典型应用场景 1. 用户输入处理(如命令行参数解析) 2. 文件/网络数据转换(JSON/XML 中的数字字符串) 3. 进制转换工具实现 4. 数据库查询结果处理(`ResultSet.getString()` 转数值) > **示例:安全转换工具方法** > ```java > public static int safeParse(String input, int defaultValue) { > try { > return Integer.parseInt(input); > } catch (NumberFormatException e) { > return defaultValue; // 提供降级值 > } > } > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值