理解Java,为什么会这样?

时间:2015-10-01 20:50:10

标签: java

Home = React.createClass({
 render: function() {
    <div>
       <ComponentA />
       <ComponentB />
       <ComponentC />
       <ComponentD />
    </div>
  };
});

ComponentA = React.createClass({
  componentDidMount: function() {
   window.addEventListener('scroll', this.handleScroll);
},
  componentWillUnmount: function() {
    window.removeEventListener('scroll', this.handleScroll);
   },

handleScroll: function() {
  var domElement = this.refs.domElement.getDOMNode();
  this.inViewPort(domElement);
},

inViewPort: function(element) {
  var elementBounds = element.getBoundingClientRect();
  (elementBounds.top <= 769 && elementBounds.bottom >= 430) ? TweenMax.to(element, 1.5, { opacity: 1 }) : TweenMax.to(element, 1.5, { opacity: 0 });
},
render: function() {
  return (/* html to render */);
 }

});

您好,我正在尝试自学一些Java基础知识,我现在正在研究这个例子。在这里,我知道输出将是:4,8

但是,我不知道为什么这是输出,为什么第一个x出现为4而不是8?

如果我还将int x更改为其他内容,它也会使代码不兼容。我原以为,因为它似乎与x = 4参数不同,如果int x改变了也没关系?

如果int x在x = 4线上以某种方式依赖,为什么输出那么4,8而不是8,8?我不知道为什么x = 4对代码的其余部分有影响?

感谢您提前获取有关此问题的任何帮助。

4 个答案:

答案 0 :(得分:6)

可能更容易看到逐行发生的事情:

int x = 8; // Declare your variable "x" and save 8 into it.

int y = x; // Assign the value of x to the new variable y.
           //  at this point, y = 8 and x = 8. Note that the value of 
           //  x does not change.

x = 4;  // Now set the value of x to 4. y is still 8 and x is now 4.

答案 1 :(得分:1)

在java中,当你使用等号时,如果你使用的是对象或原语,它可能意味着不同的东西。对象等于对象意味着第一个对象引用等于第二个对象引用 - 所以如果修改一个,则第二个对象引用也被修改。但是当你等于两个基元时,你将第二个值分配给第一个,所以当你修改一个时,第二个值保持不变。

答案 2 :(得分:0)

好吧,想象一下你在玩足球比赛。直到&#34; int x = 8;&#34;你不是在比赛中,你是替补。然后经理告诉你&#34;进去穿黄色衬衫&#34;。所以这里你穿着一件黄色衬衫。我称黄色为&#34; 8&#34;。在接下来的一分钟,经理告诉你,&#34;给y&#34;再穿一件黄色衬衫。你也是这样做的。现在x和y都穿着黄色衬衫。经过一段时间后,经理告诉你,它已经足够黄色,拿走它并穿上黑色衬衫&#34;。在这里&#34;黑&#34;意思是4.然后你戴上它。

裁判现在问道:&#34;嘿,你x和y,你的衬衫是哪种颜色?&#34;。

你告诉黑人是x。 y告诉黄色。我的意思是4,8。

这只是我所知道的一个虚拟示例,但有时将现实生活示例与代码联系起来非常有用。

另外一件事,java有两个变量值类型。基元和参考文献。请看一下这个主题。如果您理解这一点非常好,那么您对此类代码片段毫无疑问。

答案 3 :(得分:-1)

为什么不应该有另一个输出而不是4,8?在Java中,没有像C ++那样的参考概念,即使那样输出也是4,4。所以你真正(唯一)做的是:

  1. x设为8
  2. y设置为8,因为x具有此值
  3. x覆盖到4而不更改y上的任何内容,因为它们之间绝对没有关联
  4. 此时输出xy,因此:4,8