java设置变量

时间:2012-03-12 09:00:48

标签: java variables colors

我在使用下面的代码时遇到了一些问题。我的问题是变量BGCLRFORPNLS与变量c的值不同。但它应该有效,因为这个变量是一个参考。

public static Color BGCLRFORPNLS = Color.BLACK;
private static void Initialze() {
    List<Color> colors = new ArrayList<Color>();

    colors.add(BGCLRFORPNLS);
    Color c = colors.get(0);

    JOptionPane.showMessageDialog(null, "hashcode of c: "+ c.hashCode());
    JOptionPane.showMessageDialog(null, "hashcode of BGCLRFORPNLS: "+ BGCLRFORPNLS.hashCode());

    c = Color.red;

    JOptionPane.showMessageDialog(null, "color of c: "+ c.toString());
    JOptionPane.showMessageDialog(null, "color of BGCLRFORPNLS: "+ BGCLRFORPNLS.toString());
}

2 个答案:

答案 0 :(得分:4)

不,它不应该起作用,因为c是对Color对象的引用,当您更改它时,您不会更改对该对象的任何其他引用不要更改对象的值,只能更改特定的引用。

statement                   |  BGCLRFORPNLS |     colors[0]     |     c
---------------------------------------------------------------------------------
BGCLRFORPNLS = Color.BLACK; |  Color.BLACK  |     ----          |      ------
colors.add(BGCLRFORPNLS);   |  Color.BLACK  |    Color.BLACK    |      ------
Color c = colors.get(0);    |  Color.BLACK  |    Color.BLACK    |   Color.BLACK
c = Color.red;              |  Color.BLACK  |    Color.BLACK    |   Color.red

答案 1 :(得分:1)

您只是更改引用,即您将引用c指向对象Red。这对您之前引用的对象完全没有副作用。