数据类型的转换
-
在Java中,数据类型的转换主要分为两大类:基本数据类型之间的转换和与其他类型(如String、数组、集合等)之间的转换。
一、基本数据类型之间的转换
1. 自动类型转换(隐式类型转换)
-
自动类型转换发生在容量小的数据类型转换为容量大的数据类型时,这种转换是自动进行的,不需要程序员进行任何操作。Java中的基本数据类型按照从小到大的顺序是:byte、short、char → int → long → float → double。
-
转换规则
-
当byte、short、char类型的变量与int、long、float、double类型的变量进行运算时,会自动提升为int类型(注意:byte、short、char之间不会相互转换,它们会先转换为int类型)。
-
在进行运算时,如果操作数中有float或double类型,则整个表达式的结果类型会自动提升为float或double类型(float的优先级高于long)。
-
2.强制类型转换(显式类型转换)
-
强制类型转换发生在容量大的数据类型转换为容量小的数据类型时,这种转换需要程序员显式地进行,使用类型转换运算符(如(int))进行转换。
-
转换格式:
(目标类型)变量名
-
注意事项:
-
强制类型转换可能会导致数据精度丢失或溢出。
-
布尔类型(boolean)不能与其他基本数据类型进行转换。
-
二、与其他类型之间的转换
1. 基本数据类型与String之间的转换
基本数据类型转String
-
方法1:使用
+ ""
的方式。例如:int i = 10; String s = i + "";
-
方法2:使用
String.valueOf()
方法。例如:String s = String.valueOf(i);
String转基本数据类型
-
方法1:使用包装类中的
parseXxx(String s)
方法(Xxx代表基本数据类型对应的包装类,如Integer、Double等)。例如:String s = "123"; int i = Integer.parseInt(s);
-
方法2:如果字符串被包装类封装成对象,可以使用对象的
xxxValue()
方法(如intValue()
、doubleValue()
等)。但注意,直接使用Integer.parseInt()
等静态方法更为常见和方便。
2. 数组与String之间的转换
数组转String
-
方法1:遍历数组,使用
StringBuilder
或StringBuffer
拼接字符串。 -
方法2:使用
Arrays.toString()
方法(但该方法返回的字符串包含方括号和逗号,可能需要进一步处理)。 -
方法3:使用第三方库如Apache Commons Lang的
StringUtils.join()
方法。
String转数组
-
方法:使用
String.split()
方法,根据指定的分隔符将字符串分割成数组。
3. 集合与String之间的转换
集合转String
-
方法:遍历集合,使用
StringBuilder
或StringBuffer
拼接字符串。也可以使用String.join()
方法(Java 8及以上版本)。
String转集合
-
方法:先将字符串分割成数组,然后将数组转换为集合(如使用
Arrays.asList()
方法,但注意该方法返回的列表是固定大小的,不支持增删操作)。或者,使用Collections.addAll()
方法将数组元素添加到集合中。
-
数组与集合之间的转换
数组转集合
-
方法1:使用
Arrays.asList()
方法(但注意该方法返回的列表是固定大小的,不支持增删操作)。 -
方法2:使用
Collections.addAll()
方法将数组元素添加到集合中。 -
方法3:对于基本类型数组,可以使用Java 8的Stream API(如
Arrays.stream(intArray).boxed().collect(Collectors.toList())
)将其转换为包装类型的集合。
集合转数组
-
方法:使用集合的
toArray()
方法。如果需要特定类型的数组,可以传递一个类型匹配的数组作为参数(如toArray(new String[0])
),Java会返回一个相同类型且包含集合所有元素的数组。注意,传递的数组长度应为0,因为Java会根据集合的大小来创建数组。