char与byte的区别,java中的Integer的toBinaryString()方法
来源:互联网 发布:ubuntu svn 库建立 编辑:程序博客网 时间:2024/06/06 07:25
byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
下面用实例来比较一下二者的区别:
1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:
结果为:
?
1
-1
127
-128
2、char可以表中文字符,byte不可以,如:
结果为:
中
国
45
结果为:
98
b
U
104
在一次面试的过程中,遇到过这样的题目,题目的大概意思是:让写出Integer类中的toBinaryString()方法
也就是说,把Integer转换为Binary的过程写出来
但是我蒙的,在查了JDK的源码,发现了这个很好用的方法,在此给大伙看看
下面是我做的一个测试:
1 /** 2 * 3 */ 4 package com.b510.test; 5 6 /** 7 * @author Hongten 8 * @date 2013-12-15 9 */10 public class TestF {11 12 public static void main(String[] args) {13 //output:100014 System.out.println(toBinaryString(8));15 //printInfo();16 }17 18 /**19 * 这里是做&操作的测试,也就是说,在1&*(其中*代表其他数字,如:0,1,2,3,4...)操作的时候20 * 他们是进行二进制之间的&(与)运算操作。只有当*为奇数(1,3,5,7...)的时候,1*&操作才可以返回:121 * 其他情况返回:022 */23 private static void printInfo(){24 for(int i =0; i< 10; i++){25 System.out.println("i= " + i + " "+(i & 1));26 }27 /*28 output:29 i= 0 030 i= 1 131 i= 2 032 i= 3 133 i= 4 034 i= 5 135 i= 6 036 i= 7 137 i= 8 038 i= 9 139 */40 }41 42 public static String toBinaryString(int i) {43 return toUnsignedString(i, 1);44 }45 46 /**47 * Convert the integer to an unsigned number.48 */49 private static String toUnsignedString(int i, int shift) {50 char[] buf = new char[32];51 int charPos = 32;52 int radix = 1 << shift;53 int mask = radix - 1;54 do {55 //这里的mask一直为:1,所以当i为奇数的时候,这里"i & mask"操作才为:156 //否则返回:057 //System.out.println(i & mask); 58 buf[--charPos] = digits[i & mask];59 i >>>= shift;//右移赋值,左边空出的位以0填充60 //System.out.println(buf);61 //System.out.println(charPos);62 //System.out.println(i);63 } while (i != 0);64 return new String(buf, charPos, (32 - charPos));65 }66 67 final static char[] digits = {68 '0' , '1' , '2' , '3' , '4' , '5' ,69 '6' , '7' , '8' , '9' , 'a' , 'b' ,70 'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,71 'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,72 'o' , 'p' , 'q' , 'r' , 's' , 't' ,73 'u' , 'v' , 'w' , 'x' , 'y' , 'z'74 };75 }
在代码中,其实我们可以简化一下digits数组,因为我们只会用到数组:digits[0],digits[1]
所以:
1 final static char[] digits = {2 '0' , '1' 3 };
方法里面用到了移位操作和&操作,这两个操作是关键。
String a = "谷雨寒";
char [] str = a.toCharArray();
char [] str = a.toCharArray();
Integer.toBinaryString(str[0]);//str[0]返回的是ascii码
0 0
- char与byte的区别,java中的Integer的toBinaryString()方法
- java中的Integer的toBinaryString()方法
- Java byte与char的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- char 与byte的区别
- char与byte的区别
- char与byte的区别
- char与byte的区别
- IDE、ACHI
- css3 制作动态饼图
- Mac OS X下使用Homebrew安装PNG支持——重新编译PHP
- Android签名详解(debug和release)
- Hbase1.0.0实战(2)连接hbase数据库
- char与byte的区别,java中的Integer的toBinaryString()方法
- JavaScript使用原型创建对象
- 191 Number of 1 Bits
- hmtl 乱码总结
- C++ 中[]操作符重载
- 【JVM】内存区域及区域异常
- 使用spring的@Async异步执行方法
- 面试题12:打印1到最大的n位数
- 每天三道冲刺工作--假设你有一个用1001个整数组成的数组