Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 位集toString()和valueOf()很难理解_Java - Fatal编程技术网

Java 位集toString()和valueOf()很难理解

Java 位集toString()和valueOf()很难理解,java,Java,我只想使用位集将整数转换为二进制字符串 我的代码如下 public class BitSetTest { public static void main(String[] args) { //Method_1 int value = 10; //0b1010 String bits = Integer.toBinaryString(value); BitSet bs = new BitSet(bits.length());

我只想使用位集将整数转换为二进制字符串

我的代码如下

public class BitSetTest {
    public static void main(String[] args) {

        //Method_1
        int value = 10; //0b1010
        String bits = Integer.toBinaryString(value);
        BitSet bs = new BitSet(bits.length());

        for (int i = 0; i < bits.length(); i++) {
            if (bits.charAt(i) == '1') {
                bs.set(i);
            } else {
                bs.clear(i);
            }
        }

        System.out.println(bs); //{0, 2} so 0th index and 2nd index are set. 
        System.out.println(Arrays.toString(bs.toLongArray())); //prints [5]
        System.out.println(Arrays.toString(bs.toByteArray()));

        //Method_2          
        value = 42;
        System.out.println(Integer.toBinaryString(value)); //101010
        BitSet bitSet = BitSet.valueOf(new long[] { value });
        System.out.println(bitSet);
        System.out.println(Arrays.toString(bitSet.toLongArray())); // prints [42]
        System.out.println(Arrays.toString(bitSet.toByteArray()));
    }
}
公共类BitSetTest{
公共静态void main(字符串[]args){
//方法1
int值=10;//0b1010
字符串位=整数。toBinaryString(值);
比特集bs=新比特集(bits.length());
对于(int i=0;i
Q1)我不明白的事情;哪种方法是正确的(方法1或方法2)。 方法1似乎是正确的,但是
bs.toLongArray()
给出了不同的结果

Q2)请您解释一下这个api
公共静态位集值(long[]long)
接受长值数组而不是单个长值。。?那么这个阵列到底在做什么呢

Java文档如下所示;但我真的不明白这是什么意思

更准确地说,BitSet.valueOf(longs).get(n)=((longs[n/64]&
(1L位从右侧开始编号

42=0b101010

543210位从右侧开始编号

42=0b101010
543210