数据类型转换
工作中遇到各种数据类型之间的转换,之前遇到不会的都是现查,正好找个没事时间整理了一下之前遇到的各种情况,后期有新的会继续更新
1、将字符串转换为字符数组
String str = "Manaphy";
char[] charArray = str.toCharArray();
System.out.println(Arrays.toString(charArray)); // [M, a, n, a, p, h, y]
2、将字符数组转换为字符串
str = new String(charArray);
System.out.println(str); // Manaphy
3、将字符串转换为byte数组
byte[] bytes = str.getBytes(); // 以默认编码转换(UTF-8)
byte[] gbkBytes = str.getBytes("GBK"); // 以GBK编码转换 (抛UnsupportedEncodingException异常)
System.out.println(Arrays.toString(bytes)); // [77, 97, 110, 97, 112, 104, 121]
4、将byte数组转换为字符串
str = new String(bytes);
System.out.println(str); // Manaphy
5、把其他类型数据转换为字符串
int i = 123;
String txt = "" + i; // 字符串与基本类型数据连接
txt = String.valueOf(i); // 转换基本数据类型
6、String、int、Integer的互相转换
// int 转 Integer
Integer integer1 = new Integer(10);
Integer integer2 = Integer.valueOf(10); // 官方推荐这种写法
Integer integer3 = 10; // 自动装箱
// String 转 Integer
Integer integer4 = Integer.valueOf("10");
// Integer 转 int
int int1 = integer1.intValue();
int int2 = integer3; // 自动拆箱
// int 转 String
String str2 = String.valueOf(int1);
String str3 = Integer.toString(int2);
// String 转 int
int int3 = Integer.parseInt(str2);
// Integer 转 String
String str4 = integer1.toString();
7、BigDecimal 与各种基本类型的互相转换
// String 转 BigDecimal
BigDecimal bd = new BigDecimal("12.34");
// int 转 BigDecimal
BigDecimal intBd = new BigDecimal(10);
// long 转 BigDecimal
BigDecimal longBd = new BigDecimal(12L);
// double 转 BigDecimal (不建议直接转,先转换为String类型再转为 BigDecimal)
BigDecimal doubleDb = new BigDecimal(12.34 + "");
// BigDecimal 转换为基本类型和 String
String str = bd.toString();
int intValue = intBd.intValue();
long longValue = longBd.longValue();
double doubleValue = doubleDb.doubleValue();
8、List,Set,数组之间的转换
String[] arr = new String[]{"A", "B", "C"};
// 数组 转 List
List<String> list = Arrays.asList(arr); // 长度固定不变 [list.add("D") 会报错]
List<String> list1 = new ArrayList<>(Arrays.asList(arr)); // 长度可变 [可add()]
// List 转 Set
Set<String> set = new HashSet<>(list);
// Set 转 List
List<String> list2 = new ArrayList<>(set);
// 数组 转 Set-->利用数组转List再转Set
Set<String> set1 = new HashSet<>(Arrays.asList(arr));
// List 转 数组
Object[] array = list.toArray();
// Set 转 数组
Object[] arraySet = set.toArray();
// 数组转字符串 org.apache.commons.lang3.StringUtils
String join = StringUtils.join(arr, ","); // A,B,C
9、String 与 Date 之间的互相转换
String strDate = "2019-04-13";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 将 String 转化为 Date
Date date = sdf.parse(strDate);
// 将 Date 转换为 String
String format = sdf.format(date);
10、Date与LocalDateTime(JDK8新的时间类)的转换 (需要使用Instant中转)
Date now = new Date();
// Date 转 Instant
Instant instant = Instant.ofEpochMilli(now.getTime());
Instant instant1 = now.toInstant();
// Instant 转 Date
Date date1 = Date.from(instant);
// Instant 转 LocalDateTime
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
// LocalDateTime 转 Instant
Instant instant2 = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
字符串转数组,数组转字符串
//字符串转化为数组
String str = "aa,bbb";
//1.字符串转字符串数组
String[] strArr = str.split(",");
//2.字符串转char数组
char[] charArr = str.toCharArray();
//3.读取字符串下标为i的char
char s = str.charAt(1);
String string = "a,b,c";
String [] stringArr= string.split(","); //注意分隔符是需要转译滴...
String string = "abc" ;
char [] stringArr = string.toCharArray(); //注意返回值是char数组
String string = "abc" ;
byte [] stringArr = string.getBytes();
String demo = "[a,b,c]";
方法一
String demosub = demo.substring(1,demo.length()-1);
String demoArray[] = demosub.split(",");
List<String> demoList = Arrays.asList(demoArray);
方法二
Arrays.asList("[a,b,c]").get(0)
1、数字字符串转换为int数组
String str2 = "123456";
//方法一:通过charAt()可以获得对应下标的char值,用String.valueOf()转为字符串,
//再用Integer.parseInt()转为数字
int[] intArr2 = new int[str2.length()];
for (int i = 0; i < intArr2.length; i++) {
intArr2[i] = Integer.parseInt(String.valueOf(str2.charAt(i)));
}
//方法二:先转为char[]在赋值给int[],效果同上,但多创建了一个char数组
char[] charArr2 = str2.toCharArray();
int[] intArr3 = new int[str2.length()];
for (int i = 0; i < intArr2.length; i++) {
intArr3[i] = Integer.parseInt(String.valueOf(charArr2[i]));
}
2、带分隔符数字字符串转化为int数组
String str3 = "1,2,3,4,5";
String[] strArr3 = str3.split(",");
//分隔为字符数组后,只要循环String[]用Integer.parseInt()转为数字在赋值给int[]
int[] intArr4 = new int[strArr3.length];
for (int i = 0; i < strArr3.length; i++) {
intArr4[i] = Integer.parseInt(strArr3[i]);
}
3、char[]转字符串
char[] charArr3 = new char[]{'1','2','3','4','5'};
//1.用String工具类,效率最高
String charSring1 = String.valueOf(charArr3);
//2.直接new Sring
String charSring2 = new String(charArr3);
4、String[]转字符串
String[] strings = new String[]{"12","34","56","aa"};
//用StringBuilder(效率快)或者StringBuffer(线程安全),不要用+拼接浪费内存
StringBuilder stringBuffer1 = new StringBuilder();
for (String string : strings) {
stringBuffer1.append(string);
}
String s1 = stringBuffer1.toString();
5、int[]转字符串
int[] ints = new int[]{1,2,4,3};
StringBuilder stringBuffer2 = new StringBuilder();
for (int anInt : ints) {
stringBuffer2.append(anInt);
}
String s2 = stringBuffer2.toString();
Java将String型字符串转换成int型(或int型数组)
转换成int型数组代码实现
String str = "6921168509256";
int[] arr = new int[str.length()];
for (int i = 0; i < str.length(); i++) {
arr[i] = Integer.parseInt(str.substring(i, i + 1));//substring是找出包含起始位置,不包含结束位置,到结束位置的前一位的子串
}
for(int i:arr)//输出数组arr
System.out.print(i+" ");
转换成int型代码实现
String str = "69211685";
int a = Integer.parseInt(str);
System.out.print(a);
String字符串去掉双引号
String str= str.replace("\"", ""); //去掉左边的引号
String str= str.replaceAll("\"", "") //去掉所有的引号