逻辑运算符&&与||
&&运算符是从左到右对操作数求值,遇到第一个假值操作数时立即返回;如果所有的操作数都是真值,则返回最后一个操作数的值。
||运算符是从左到右对操作数求值,遇到第一个真值操作数时立即返回;如果所有的操作数都是假值,则返回最后一个操作数的值。
简而言之,二者都有一定局限性,例如A&&B只有在A为真时才会执行B语句;相反地,A||B一旦A为真则会直接跳出并判断整个语句为真,从而忽视了B语句。
这样的逻辑在编写程序时需要外加关注,程序员需要从两种运算符的合理运用中均衡程序的运算效率和安全性。
自增(减)运算符
和本人在C语言中对这个运算符的认识不同,++a和a++的运算过程还是分为两个步骤,但是第一步都是对原值做改变,即a=a+1或a=a-1;只是第二步返回的值不同,a++返回的值是没有进行运算的原值,而++a则是引用已经进行运算的值;
这样一来,a++与我们认知中的先引用后运算并不相通。
可以这么说,真正的a++其实是先创建了一个临时变量temp,以C语言为例,以下代码最终输出的结果应当是1和2;即充当a++作用的函数fun返回了x原值,而实际上此时x已经完成了自增操作。
#include<stdio.h>
int fun(int a){
int temp;
temp = a;
a = a + 1;
return temp;
}
int main(){
int x = 1;
printf("%d\n",fun(x));
printf("%d\n",x);
}
JVM内存
先进后出原理:先执行的方法会沉底,出栈时会相对偏后
public访问修饰符的常见问题
public修饰符允许在不同的类中修改变量内容,此时当我们以public修饰两个变量时,对其中任意一个变量进行修改都会使另一个变量发生同样的变化,这是因为public修饰的变量实质上在内存中指向了同一块区域,此时任意操作对这一块内存进行修改都会导致其他变量发生不必要的变化,这也就是为什么一般给多个具有多重属性的对象赋值时常采用private修饰符的原因。