Fork me on GitHub

Java中char,int,String的相加减

要点:

  • char与int :可以相加减;int取本身数值,char取对应的ASCII码值;得到的结果是ASCII码增大或减小了int对应的数值大小;如果结果赋值给char类型的变量即是该ASCII码对应的字符,如果赋值给int类型的变量即是该ASCII码的大小。
    1
    2
    3
    4
    5
    6
    7
    8
    public 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
    8
    public 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
    6
    public 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;
}

您的支持将鼓励我继续创作!