概要
本篇主要讲解Java中的常用的数据类型转换,以Win10+Java8为例!
1、基本数据类型相互转化
public class Test {
public static void main(String[] args) {
/*
* int 转 char
* 当 i < 10, 使用"Character.forDigit(int i, radix)"方法。
* 当 i >= 10, 使用"String.valueOf(int i).charAt(index)"获取对应位置。
*/
int i = 1;
if (Character.isDigit(i)) {
char i_char = Character.forDigit(i, 10);
}
/*
* char 转 int
* 仅当char为'1'这种数字类型的char时候,结果应该为数字
* 当char为'c'这种非数字类型的char时候,结果是该char的ASCII码,这种就不应该叫做"char 转 int"
*/
char c1 = '1';
if (Character.isDigit(c1)) {
int c_int = Character.getNumericValue(c1);
}
}
}
2、基本数据类型转String
统一调用String类的valueOf方法,因其内部调用各个对象的转String的方法。
public class Test {
public static void main(String[] args) {
int in = 1;
// byte、short、int: 内部调用"Integer.toString(int i)"方法
String in_str = String.valueOf(in);
long lo = 2L;
// long: 内部调用"Long.toString(Long i)"方法
String lo_str = String.valueOf(lo);
char c = 'c';
// char: 内部调用"new String(data, true)"方法
String c_str = String.valueOf(c);
}
}
3、数组转List集合
public class Test {
public static void main(String[] args) {
// *** int[] 转 List集合(同样适用于long、double等整型) ***
int[] intArray = new int[]{1, 2, 3, 4, 5};
List<Integer> aa = Arrays.stream(intArray).boxed().collect(Collectors.toList());
// *** char[] 转 List集合 ***
char[] charArray = new char[]{'h', 'e', 'l', 'l', 'o'};
List<Character> ee = Arrays.toString(charArray).chars().mapToObj(i -> (char) i).collect(Collectors.toList());
// *** String[] 转 List集合 ***
String[] stringArray = new String[]{"this", "is", "my", "book"};
// 此处转的是java.util.Arrays的内部类ArraysList,非java.util.ArrayList
List<String> bb = Arrays.asList(stringArray);
// 通过Java8的流进行转换
List<String> cc = Stream.of(stringArray).collect(Collectors.toList());
// 若需要的为ArrayList,可以通过构造器来转换
ArrayList<String> dd = new ArrayList<String>(Arrays.asList(stringArray)) ;
}
}
以上就是比较常用的数据类型转换,建议点进源码看看实现机制,其实很多就是最原始的方法,比如"String[] 转 List集合",就是新建了一个ArrayList,然后把String的所有元素加进去了而已。