整形,字符、字符串三者的关系
-
整形与字符串相互转化
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()方法可以快速求和