前段时间开始刷LeetCode上面的题目,想着数据结构不会,我先做做简单的算法题目吧。好家伙,拿到题目,发现最基础的数据类型转换都不知道,然后进入了小自闭。所以今天就集中整理了一下,最最最基础的四种数据格式的转换,帮助自己学习,也希望对你们有帮助!!!
文章目录
- 1、int与String转换
- 2、int与char转换
- 3、String与Array转换
- 4、String与char转换
- 5、其他
1、int与String转换
int变为String
1 2 3 4 5 6 7 8 9 10 11 | int num = 1; String str; //1.直接和空字符串相加 str = "" + num; //2.使用Integer的toString()方法 str = Integer.toString(num); //3.使用String的valueOf()方法 str = String.valueOf(num); |
String变为int
1 2 3 4 5 6 7 8 9 | //字符串一定要符合规范(数字型字符串),否则会抛出异常 String str = "33"; int num; //1.使用Integer的parseInt方法 int num = Integer.parseInt(str); //2.使用使用Integer的valueOf()方法,再将结果由Integer类型转变为int类型 int num = Integer.valueOf(str).intValue(); |
补充:对于String变为int的转换中的第二种方法,如果我们想使用对应数字的包装类(毕竟包装类Integer的功能比基本类型int的功能要多很多),就可以不需要直接去掉intValue()。
1 2 3 | public static Integer valueOf(String s) throws NumberFormatException { return Integer.valueOf(parseInt(s, 10)); } |
2、int与char转换
int变为char
1 2 3 4 5 6 7 8 9 | //由于char只能占一位,所以num在0-9可转为字符型数字,再往上则为其他字符 int num = 1; char c; //1.先加 '0' ,再强转为char c = (char) (num + '0'); //2.在ASCII表中,'0'和48等价 c = (char) (num + 48); |
char变为int
1 2 3 4 5 6 7 8 | char c ='3'; int num; //1.和上面的转换方式反着来,减去 '0',由于数据会自动向上转型,所以这里不需要强制转换 num = c-'0'; //2.直接减去48 num = c-48; |
补充:如果直接不减去48,就类似于两个数据在ASCII表中转换。'3’字符对应的ASCII转换为对应的同位置的数字。此处为51。
1 | num = c; |
ASCII表部分:
| Bin(二进制) | Oct(八进制) | Dec(十进制) | Hex(十六进制) | 缩写/字符 | 解释 |
|---|---|---|---|---|---|
| 0010 1111 | 057 | 47 | 0x2F | / | 斜杠 |
| 0011 0000 | 060 | 48 | 0x30 | 0 | 字符0 |
| 0011 0001 | 061 | 49 | 0x31 | 1 | 字符1 |
| 0011 0010 | 062 | 50 | 0x32 | 2 | 字符2 |
| 0011 0011 | 063 | 51 | 0x33 | 3 | 字符3 |
| 0011 0100 | 064 | 52 | 0x34 | 4 | 字符4 |
3、String与Array转换
String型数组
String变为Array
1 2 3 4 5 6 7 8 9 10 | String str= "abc"; //1.转换为char[]数组 char[] ch = str.toCharArray(); //2.使用String.charAt(i)循环放入 char[] cha= new char[str.length()]; for(int i =0;i<str.length();i++) { cha[i] = str.charAt(i); } |
Array变为String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | char[] chars ={'','','',''}; String str; //1.使用copyValueOf方法 str =String.copyValueOf(chars); //2.直接转换 str = String.valueOf(chars); //3.int型数组可以使用StringBuffer int nums = {1,2,3,4,5,6}; StringBuffer str1 = new StringBuffer(); for (int i = 0; i <ints.length ; i++) { str = str.append(ints[i]); } str1 = str.toString(); |
补充:创建数组的三种方式
1 2 3 4 5 6 7 8 | //1.动态创建,声明并创建内存空间,等待赋值。 int[] arr = new int[5]; //2.动态创建,声明并创建内存空间,并赋值。 int[] a = new int[]{1, 2, 3, 4, 5}; //3.属于静态创建,声明并直接赋值,创建内存空间。 int[] x = {1, 2, 3, 4, 5}; |
4、String与char转换
char变为String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | char c = 'a'; String str; //1.建议使用该方法 str = String.valueOf(c); //2.其对应的底层就是方法1 str = Character.toString(c); //3.已过时,不建议使用 str = new Character(c).toString(); //4.这是最方便的,但是效率是最低的 str = "" + c; |
String变为char
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | char c; String str = "a"; //1.先将String字符串转换为数组,再 char[] charArray = str.toCharArray(); for(char c : charArray) { System.out.println(c); } //2.直接遍历获取每一个元素 for (int i = 0; i < str.length(); i++) { c = str.charAt(i); } |
补充:如果String字符串只有一个或者只想获取首元素,那么我们可以直接打印str.charAt(0),或者str.toCharArray()[0]
5、其他
本文整理的更多的是Java数据类型本身的方法,而不是使用自己的逻辑运算去变化。如果你想让一个int类型的数字变成一个Array类型的数组,你可以直接new一个数组,然后将数组直接让进去。这偏向于简单的逻辑,不再本文的范围内。对于其它复杂点转换,你还可以转化两次,当然,个人觉得出现的几率比较小!!!
另外补充一个判断数据是什么类型的方法(利用反射的性值,获取对应数据的模板类型):
1 2 3 4 5 6 7 8 9 10 11 | public class Test { public static void main(String[] args) { String str = "mobian"; System.out.println(getType(str)); } //判断数据是什么类型 public static String getType(Object o) { return o.getClass().toString(); } } |