目录
一、基本数据类型之间的转换
1.自动类型转换
2.强制类型转换
3.说明
二.其他类型与String之间的转换
1. 基本数据转String
2.String 转基本数据类型
3.String字符串转字符数组
4.字符数组转字符串String
5.StringBuffer,StringBuilder与String的相互转换
三、数组与List相互转换
1.引用类型数组转为List
2.List转为引用类型数组
3. 基本类型数组转List
4.List转基本类型数组
四、基本类型数组和引用类型数组相互转换
1.基本数据类型数组转引用数据类型数组
2.引用数据类型数组转基本类型数组
一、基本数据类型之间的转换
1.自动类型转换
将精度或可表示范围小的类型自动转换成精度或可表示范围大的类型
类似于1.0这样的浮点型常数,被默认为double类型,如果想指定其为float,需要在其后将一个字母f或F。
byte byt=1;
short sh=byt;
int b=99;
float a=b+1.0f;
double c=b+1.0;
2.强制类型转换
转换方式:在需要转换的数据前使用:(A),即可将该数据转换成类型A。
int a = 2147483647;
int b = 1;
long c = (long)a+b;//转换为long,防止数据溢出
要注意的一点是:我们常将高精度或较大表示范围的类型强制转换成低精度或较小表示范围的类型,这样就可能造成精度损失或是数据溢出
3.说明
1.char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a'对应97
2.整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。
byte b1 = 10;
byte b2 = 20;
byte b3 = b1 + b2;
// 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。
// 修改为:
int num = b1 + b2;
// 或者:
byte b3 = (byte) (b1 + b2);
3.boolean类型不能与其他基本数据类型相互转换
二.其他类型与String之间的转换
1. 基本数据转String
1)基本类型数据 + ” “
2)用String类中的静态方法valueOf(基本类型数值)
char b='c';
String a=b+""; //方法一
String d=String.valueOf(b); //方法二
2.String 转基本数据类型
1)使用包装类中的静态方法 XXX. parseXXX("类型字符串")
(注意事项:1.String字符串里的内容必须符合要转换类型,比如String a=“x”,不能直接转为int
2.Character没有parse方法,直接用charAt读取第一个字符就行)
String a="1";
int b=Integer.parseInt(a);
String d="1.0";
float c=Float.parseFloat(d);
2) 如果字符串被Integer进行对象的封装,可使用另一个非静态方法intValue
Integer i = new Integer("123");
System.out.println(i.intValue());
3.String字符串转字符数组
String a="abcd";
char b[]=a.toCharArray();
4.字符数组转字符串String
char[] array = new char[] {'a','b','c','d','e','f','g'};
String str2 = String.valueOf(array);
5.StringBuffer,StringBuilder与String的相互转换
1) StringBuffer转 String
//方法一 toString()
StringBuffer a=new StringBuffer();
a.append('a');
String s=b.toString();
//方法二 new String(StringBuilder sbd)
StringBuilder b=new StringBuilder();
b.append(1);
String s=new String(b);
2) String转Stringbuilder
String a = "123";
StringBuilder b =new StringBuilder(a);
System.out.println(b);
三、数组与List相互转换
1.引用类型数组转为List
1)通过 Arrays.asList(strArray) 方式
注意:
将数组转换List后,不能对List增删,只能查改,否则抛异常
String[] strArray = new String[2];
List list = Arrays.asList(strArray);
2)通过ArrayList的构造器,支持增删改查的方式
String[] strArray = new String[2];
ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
3)通过集合工具类Collections.addAll()方法
ArrayList< String> arrayList = new ArrayList<String>(d.length);
Collections.addAll(arrayList, d);
以上三种方法只适合引用数据类型如
Integer[] Character[] String[]
或者二维数组
int[][] intervals={};
List<int[]> a = new ArrayList<>();
Collections.addAll(a,intervals);
2.List转为引用类型数组
1)使用toArray()方法
List<String> testList = new ArrayList<String>(){{add("aa");add("bb");add("cc");}};
String[] array2 = new String[testList.size()];
testList.toArray(array2);
3. 基本类型数组转List
1).对int[],double[],long[]等数组,调用 Arrays 类的静态方法Stream()
Stream()把 数组对象转换成流,这里要注意需要使用 boxed() 方法把 xxxStream 流转化成 Stream 流,因为转化成 Stream 流之后才能调用 collect() 收集方法获得List
int[] a = {1, 2, 3};
List<Integer> intList = Arrays.stream(a).boxed().collect(Collectors.toList());
2).对char[]类型数组
遍历
4.List转基本类型数组
1).对int[],double[],long[]等数组的转换,stream()流的方法
List<Integer> a=new ArrayList<>();
a.add(1);a.add(2);
int[] arr=a.stream().mapToInt(Integer::valueOf).toArray();
四、基本类型数组和引用类型数组相互转换
1.基本数据类型数组转引用数据类型数组
适合除了char[]的数组
int[] obj2 = {4, 5, 6};
//方法一
Integer[] newObj2 = Arrays.stream(obj2).boxed().toArray(Integer[]::new);
//方法二
Integer[] newObj3 = IntStream.of(obj2).boxed().toArray(Integer[]::new);
2.引用数据类型数组转基本类型数组
遍历