一、中间缓存变量机制
1.下列程序输出结果是
public class Test4 {
public static void main(String[] args) {
int j = 0;
for(int i =0;i<100;i++)
{
j=j++;
}
System.out.println(j);
}
}
结果为 j=0
Java用了中间缓存变量机制,所以 j= j++ 可换成如下写法:
Temp = j;
j = j+1;
j= temp
2.假如”int a =5,b =3;”,则执行”if(!(ab)&&(a1+b++)){}”后a和b的值分别是多少?
a = 5 ,b =4。
二、i++与++i详解
System.out.println("i、j一个数的情况");
int i = 0;
i = i++;
System.out.println("i++ ="+i);
int j = 0;
j = ++j;
System.out.println("++j ="+j);
System.out.println("A两个数的情况");
int A =0;
A = ++A + A++;
System.out.println("++A + A++ ="+A);
int A1 = 0;
A1 = ++A1 + ++A1;
System.out.println("++A1 + ++A1 ="+A1);
int A2 =0;
A2 = A2++ + A2++;
System.out.println("A2++ + A2++ ="+A2);
System.out.println("B三个数的情况");
int B = 0;
B = B++ + ++B + B++;
System.out.println("B++ + ++B + B++="+B);
int B1=0;
B1 = B1++ + B1++ + B1++;
System.out.println("B1++ + B1++ + B1++ ="+B1);
int B2 =0;
B2 = ++B2 + ++B2 + ++B2;
System.out.println("++B2 + ++B2 + ++B2 ="+B2);
System.out.println("推导");
int C = 0;
C = ++C + ++C + ++C + ++C;
System.out.println("C = ++C + ++C + ++C + ++C ="+C);
int D = 0;
D = D++ + D++ + D++ +D++;
System.out.println("D++ + D++ + D++ + D++ ="+D);
运行结果如下图
解析:
i++和++i使用的不同点在于一个是程序完毕后自增,一个是程序开始前自增。
如果是j++在式子最后一个的话,总的全体程序结束后才用到,所以相当于最后一个(j++),
保持前一个的值,对式子的总结果没影响。
总结后一项在前一项的基础上加1。++I 与i++就根据实际进行增加。
三、面试题
下列代码的执行结果是多少?
public class Test5 {
public static void main(String[] args) {
int i = 0;
i = i++ + ++i;
int j = 0;
j=++j + j++ + j++ +j++;
int k=0;
k= k++ + k++ +k++ + ++k;
int h = 0;
h = ++h + ++h;
int p1 =0,p2=0; int q1=0,q2=0;
q1=++p1;
q2=p2++;
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println("k="+k);
System.out.println("h="+h);
System.out.println("p1="+p1);
System.out.println("p2="+p2);
System.out.println("q1="+q1);
System.out.println("q2="+q2);
}
}
运行结果如下图所示