Integer转换char问题

有关数据类型的转换

问题

java实验要求实现String类的valueOf()方法,由于对于该类的一个私有化实例域为private char[]chars,而该函数的返回值为自定义的String类。代码如下:

1
2
3
4
public class MyString {
private char[]chars;
public static MyString valueOf(int i){};
}

实现思路

在写这个方法时,我想到的是将这个int类型的变量i通过除以10来获取每一位的数值并存入一个ArrayList<Integer>中,然后在定义一个char类型的数组,将Integer类型个list转换成char类型的数组,再创建一个MyString对象返回。但此时便需要进行类型转换。

遇到问题

在做类型转换时,我一开始想到的方法直接将Integer类型的ArrayList直接强制转换为char类型。

1
chars[y] = (char) l.get(x); //不成功,无法转换

第二个解决方案
利用两次类型转换。先用(int)转换为int型,再用’char’转化为char类型,看着就不大对,这样不行

1
chars[y] = (char)(int) l.get(x); //无法将值传入数组,原因待解决!!

第三个解决方案
先将Integer类型转化为int类型,在进行强制类型转换

1
chars[y] = (char) l.get(x).intValue(); //无法将值传入数组中,原因待解决!!!!

最终方案

最终在网上看到一段代码

1
2
3
int a = 8;//将数字8转换为char类型
char b ;
b = 8 + '0';

然后我将这个方法用得到我的代码中,最终完成我的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MyString {
private char[]chars;
public static MyString valueOf(int i){
ArrayList<Integer> l = new ArrayList<>();
int left = i;
int c = 0;
while(true){
c = left % 10;
l.add(c);
left = left / 10;
if(left == 0){
break;
}
}
char [] chars = new char[l.size()];
for(int x = 0,y = l.size() - 1;x < l.size();x++,y--){
chars[y] = (char) (l.get(x).intValue() + '0'); //类型转换先将其转化为int类型值,在与一个char类型的‘0’相加,完成类型转化。其中原理待解决!!!
}
MyString ms = new MyString(chars);
return ms;
};
}

类型转换先将其转化为int类型值,在与一个char类型的‘0’相加,完成类型转化。其中原理待解决!!!这是从中获得将Integer类型转换为char类型的变量的一个方法,其中有一些问题希望很快获得解答。总结一下该格式:
`java ArrayList<Integer> l = new ArrayList<>(); char c; c = (char)(l.get(i).intValue() + '0')