整形,字符、字符串三者的关系


  • 整形与字符串相互转化

int i = 56;
String str = String.valueOf(i); // 整形--》字符串
int k = Integer.parseInt(str) + 10; // 字符串--》整形
// 等价于Integer.parseInt(str,10) 默认是10进制 ,如果str是2进制,就需要设置为2
Integer.parseInt(str,2) 表示将一个2进制的字符串,转成整型数字
String hStr = Integer.toHexString(num);    // 将一个整型数字转成16进制字符串
String bStr = Integer.toBinaryString(num);  // 将一个整型数字转成2进制字符串
  • 整形与字符相互转化

int m = 65;
char c = (char) m; // 数字--》字符
char c2 = 'H';
int l = (int) c2; //字符--》数字
  • 字符与字符串相互转换

char d='M';
String s1=d+""; // 第1种 字符--》字符串
String s2=String.valueOf(d);  // 第2种 字符--》字符串
StringBuffer bf=new StringBuffer();  
bf.append(d);
String s3=bf.toString();  // 第3种 字符--》字符串

String sss="shdgaj";
char[]ch=sss.toCharArray(); // 字符串--》字符
  • 判断两个字符串是否只包含相同的字符

解释:这里使用char在ASCII表中,索引值的差值,小写字母一共26个,用当前字母与‘a’作差,‘A’-‘0’表示字符A的ASCII值65与‘0’的ASCII值48的差值为17,boolean类型的初始值是false

//1、判断两个字符串是否只包含相同的字符
public static boolean isSameChar(String s1, String s2) { // 这两个字符串自包含小写字母,
    boolean[] arr = new boolean[26];  // 比较包含任意字符的 boolean[] arr = new boolean[128];
    for (int i = 0; i < s1.length(); i++) {
        arr[s1.charAt(i) - 'a'] = true;  // arr[s1.charAt(i) -'\0'] = true;
    }
    for (int i = 0; i < s2.length(); i++) {
        if (!arr[s2.charAt(i) - 'a']) {  // if (!arr[s2.charAt(i) - '\0'])
            return false;
        }
    }
    return true;
}

ASCII表0~127,一般我们会初始化一个128大小的数组,

如果想得到某个字符在ASCII中的索引,可用该字符减去空字符(注意java空字符不能直接写成‘’,用‘\0’)

public static void main(String[] args) {
     System.out.println('A'-0);  //直接减去数字0, 获取A在ASCII中的索引 或者直接强转(int)‘a’
    System.out.println('A'-'\0');  //减去数字‘\0’, 获取A在ASCII中的索引
    System.out.println('A'-‘’);  //这种写法会报错
}
  • 快速计算数组的和

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = Arrays.stream(arr).sum();
System.out.println(sum);

Ayyays.stream()方法返回指定数组作为源的顺序流。对于 int,long,double和object类型,stream方法都有重载方法。再调stream的sum()方法可以快速求和