要点:
- char与int :可以相加减;int取本身数值,char取对应的ASCII码值;得到的结果是ASCII码增大或减小了int对应的数值大小;如果结果赋值给char类型的变量即是该ASCII码对应的字符,如果赋值给int类型的变量即是该ASCII码的大小。
1
2
3
4
5
6
7
8public class Test {
public static void main(String[] args) {
char c = '2'-3;//'2'的ASCII码:50
int i = '2'-3;
System.out.println("c:"+c);//'/'的ASCII码:47
System.out.println("i:"+i);
}
}
c:/
i:47
- char与char :可以相加减;都取各自对应的ASCII码进行加减;如果结果赋值给char类型的变量即是该ASCII码对应的字符,如果赋值给int类型的变量即是该ASCII码的大小。
1
2
3
4
5
6
7
8public class Test {
public static void main(String[] args) {
char c = 'a'-'1';//'a'的ASCII码:97,'1'的ASCII码:49
int i = 'a'-'1';
System.out.println("c:"+c);//'0'的ASCII码:48
System.out.println("i:"+i);
}
}
c:0
i:48
- String与int :只能加不能减;得到的结果为String类型。
1
2
3
4
5
6public class Test {
public static void main(String[] args) {
String s = "2"+3;
System.out.println("s:"+s);
}
}
s:23
例题:
把字符串转换成整数。
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
1
2
3
4
5
6
7
8
9
10
11
12 public static int StrToInt(String str) {
if(!str.matches("(-|\\+)?\\d+"))//匹配可能带有正负号的数字形式的字符串
return 0;
int res = 0;
int flag = 1;
char strArr[] = str.toCharArray();
if(strArr[0] == '-')
flag = -1;
for (int i = (strArr[0]=='+'||strArr[0]=='-')?1:0; i < strArr.length; i++)
res = res*10 + strArr[i] - '0';//注意这里根据strArr[i] - '0'的差值得到strArr[i]对应的数字
return res*flag;
}