在foreach循环中改变布尔数组

时间:2015-12-20 02:16:53

标签: java arrays foreach

我有一个带随机条目的布尔矢量。我用反转方法改变它。一个人使用传统的for循环。另一个使用foreach。

为什么wp_register_script('luna_portfolio', get_template_directory_uri() . '/js/jquery.portfolio.js', 'jquery', true); wp_localize_script('luna_portfolio', 'lunaAjax', array('ajaxurl'=>admin_url('admin-ajax.php'),'nonce' => wp_create_nonce('ajax-nonce'))); 不能用作 function luna_getCols(){ var cols = 1; var windowWidth = jQuery(window).width(); if(windowWidth>=380 && windowWidth<1160) cols = 3; else if(windowWidth>=1160 && windowWidth<1640) cols = 4; else if(windowWidth>=1640 && windowWidth<2100) cols = 5; else if(windowWidth>=2100) cols = 6; return cols; } ?我认为invert2()中的invert1()是对向量中b元素的引用。因此我尝试使用invert2()作为对象。 boolean类似于Booleanb是一个循环变量吗?

BooleanVector.java

vector[i].clone()

Main.java

i

输出:

public final class BooleanVector {

    private boolean[] vector;
    private Stack<boolean[]> undoStack = new Stack<>();


    public BooleanVector(final int vectorSize) {
        this.vector = new boolean[vectorSize];
        //Generates random Array for test purposes
        Random random = new Random();
        for (int i = 0; i < vector.length; i++) {
            vector[i] = random.nextBoolean();
        }   
    }

    public void invert1() {
        for (int i = 0; i < this.vector.length; i++) {
            this.vector[i] = !this.vector[i];
        }
    }
    public void invert2() {
        for (Boolean b : vector) {
            b = !b;
        }
    }

    public void printVector() {
        System.out.println(Arrays.toString(this.vector));
    }
}

1 个答案:

答案 0 :(得分:1)

invert1()中,您正在修改数组值,因此值也会反转。在invert2()中,您正在更改引用b,因此实际上并未修改列表中的值。