对一个对象进行操作时,我们真正操作的是对对象的引用。
直接操作对象内的域容易导致混乱,并且,违背了良好的面向对象程序设计的原则。
通过在创建Random对象时提供种子(用于随机数生成器的初始化值,随机数生成器对于特定的种子总是产生相同的随机数序列),就是可以在每一次执行程序时都生成相同的随机数。
前缀递增/递减,会先执行计算,再生成值;后缀递增/递减,会先生成值,在执行运算。
尽管对象的内容相同,但是对象的引用却是不同的,而==和!=比较的就是对象的引用。如果要比较两个对象的实际内容是否相同,应该用equals()
但是,如果创建了自己的类,除非在自己的类中覆盖equals()方法,否则不可能表现出希望的行为,因为equals()的默认行为是比较引用,而不比较内容。大多数java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用。
逻辑操作符
逻辑操作符与、或、非能根据参数的逻辑关系,生成一个布尔值。
在应该使用String值的地方使用了布尔值,布尔值会自动转换成适当的文本形式。
短路,即一旦能够明确无误地确定整个表达式的值,就不再计算表达式余下部分了。因此,整个逻辑表达式靠后的部分有可能不会被运算。
直接操作对象内的域容易导致混乱,并且,违背了良好的面向对象程序设计的原则。
通过在创建Random对象时提供种子(用于随机数生成器的初始化值,随机数生成器对于特定的种子总是产生相同的随机数序列),就是可以在每一次执行程序时都生成相同的随机数。
前缀递增/递减,会先执行计算,再生成值;后缀递增/递减,会先生成值,在执行运算。
尽管对象的内容相同,但是对象的引用却是不同的,而==和!=比较的就是对象的引用。如果要比较两个对象的实际内容是否相同,应该用equals()
但是,如果创建了自己的类,除非在自己的类中覆盖equals()方法,否则不可能表现出希望的行为,因为equals()的默认行为是比较引用,而不比较内容。大多数java类库都实现了equals()方法,以便用来比较对象的内容,而非比较对象的引用。
逻辑操作符
逻辑操作符与、或、非能根据参数的逻辑关系,生成一个布尔值。
在应该使用String值的地方使用了布尔值,布尔值会自动转换成适当的文本形式。
短路,即一旦能够明确无误地确定整个表达式的值,就不再计算表达式余下部分了。因此,整个逻辑表达式靠后的部分有可能不会被运算。