java中的Integer的toBinaryString()方法实例

 更新时间:2013年12月18日 15:51:23   作者:  
这篇文章主要介绍了java中的Integer的toBinaryString()方法实例,有需要的朋友可以参考一下

在一次面试的过程中,遇到过这样的题目,题目的大概意思是:让写出Integer类中的toBinaryString()方法

也就是说,把Integer转换为Binary的过程写出来

但是我蒙的,在查了JDK的源码,发现了这个很好用的方法,在此给大伙看看

下面是我做的一个测试:

复制代码 代码如下:

/**
 *
 */
package com.b510.test;

/**
 * @author Hongten
 * @date 2013-12-15
 */
public class TestF {

    public static void main(String[] args) {
        //output:1000
        System.out.println(toBinaryString(8));
        //printInfo();
    }

    /**
     * 这里是做&操作的测试,也就是说,在1&*(其中*代表其他数字,如:0,1,2,3,4...)操作的时候
     * 他们是进行二进制之间的&(与)运算操作。只有当*为奇数(1,3,5,7...)的时候,1*&操作才可以返回:1
     * 其他情况返回:0
     */
    private static void printInfo(){
        for(int i =0; i< 10; i++){
            System.out.println("i= " + i + "         "+(i & 1));
        }
        /*
        output:
        i= 0         0
        i= 1         1
        i= 2         0
        i= 3         1
        i= 4         0
        i= 5         1
        i= 6         0
        i= 7         1
        i= 8         0
        i= 9         1
        */
    }

    public static String toBinaryString(int i) {
        return toUnsignedString(i, 1);
    }

    /**
     * Convert the integer to an unsigned number.
     */
    private static String toUnsignedString(int i, int shift) {
        char[] buf = new char[32];
        int charPos = 32;
        int radix = 1 << shift;
        int mask = radix - 1;
        do {
            //这里的mask一直为:1,所以当i为奇数的时候,这里"i & mask"操作才为:1
            //否则返回:0
            //System.out.println(i & mask);
            buf[--charPos] = digits[i & mask];
            i >>>= shift;//右移赋值,左边空出的位以0填充
        //System.out.println(buf);
        //System.out.println(charPos);
        //System.out.println(i);
        } while (i != 0);
        return new String(buf, charPos, (32 - charPos));
    }

    final static char[] digits = {
        '0' , '1' , '2' , '3' , '4' , '5' ,
        '6' , '7' , '8' , '9' , 'a' , 'b' ,
        'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
        'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
        'o' , 'p' , 'q' , 'r' , 's' , 't' ,
        'u' , 'v' , 'w' , 'x' , 'y' , 'z'
        };
}

在代码中,其实我们可以简化一下digits数组,因为我们只会用到数组:digits[0],digits[1]

所以:

复制代码 代码如下:

final static char[] digits = {
        '0' , '1'
        };

方法里面用到了移位操作和&操作,这两个操作是关键。

相关文章

  • JAVA数组中五种常见排序方法整理汇总

    JAVA数组中五种常见排序方法整理汇总

    本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2025-05-05
  • Java 如何将网络资源url转化为File文件

    Java 如何将网络资源url转化为File文件

    这篇文章主要介绍了Java 如何将网络资源url转化为File文件的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java线程池ExecutorService超时处理小结

    java线程池ExecutorService超时处理小结

    使用ExecutorService时,设置子线程执行超时是一个常见需求,本文就来详细的介绍一下ExecutorService超时的三种方法,感兴趣的可以了解一下
    2024-09-09
  • JavaWeb实现邮件发送接收功能

    JavaWeb实现邮件发送接收功能

    这篇文章主要为大家详细介绍了JavaWeb邮件发送接收功能的实现,邮件发送和接收功能是非常常用的功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • JavaCV使用ffmpeg实现录屏功能

    JavaCV使用ffmpeg实现录屏功能

    这篇文章主要介绍了JavaCV如何使用ffmpeg实现录屏功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 使用Spring Cache设置缓存条件操作

    使用Spring Cache设置缓存条件操作

    这篇文章主要介绍了使用Spring Cache设置缓存条件操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 详解java 单例模式及方法总结

    详解java 单例模式及方法总结

    这篇文章主要介绍了详解java 单例模式及方法总结的相关资料,需要的朋友可以参考下
    2017-05-05
  • java Nio使用NioSocket客户端与服务端交互实现方式

    java Nio使用NioSocket客户端与服务端交互实现方式

    这篇文章主要介绍了java Nio使用 NioSocket 客户端与服务端交互实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • MyBatis Map结果的Key转为驼峰式

    MyBatis Map结果的Key转为驼峰式

    今天小编就为大家分享一篇关于MyBatis Map结果的Key转为驼峰式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • SpringDataJpa写原生sql遇到的问题及解决

    SpringDataJpa写原生sql遇到的问题及解决

    这篇文章主要介绍了SpringDataJpa写原生sql遇到的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论