1. 程式人生 > 其它 >整形,字元、字串三者的關係

整形,字元、字串三者的關係

  • 整形與字串相互轉化

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()方法可以快速求和