public class PrintHex { public static void main(String[] args) { int num = 565686798;// 要转换的数字 System.out.println(toHex(num)); System.out.println(Integer.toHexString(num)); int nums[] = { 2, 65, 23, 67, 989, 1, 24, 8, 12 }; bubbleSort(nums); } /* * 首先10进制的数去按位与2进制的15.这其实相当于去模16.当你要模2的N次方数的时候其等价于按位与2的N次方数减1而且效率还要高于取模运算. * 因此按位与2进制的15可以得到16进制的数 * 但是这仅仅是得到第一个数而已,因为按位与是两个数都是1才是1,因此你与的数是000000001111,也就是说前面的那些0并不会去影响 * 所以此时你右移4位的话能够取到第一个16进制数 * 然后还需要再继续与15才能取到下一位的16进制数.所以与一次15就能得到一位16进制数,然后右移4位之后再与15才能得到下一位数. */ public static String toHex(int num) { final char digits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; StringBuilder sb = new StringBuilder(); while (num > 0) { sb.append(digits[num & 15]); num >>= 4; } return sb.reverse().toString(); } public static void bubbleSort(int nums[]) { int temp; for (int i = 0; i < nums.length; i++) { for (int j = 0; j < nums.length; j++) { if (nums[j] > nums[i]) { temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } } } for (int k = 0; k < nums.length; k++) { System.out.print(nums[k] + ", "); } } }