[新人求助]关于三目运算符和++ 之间的问题,这是为什么?

wcm_fisher 2017-07-06 09:53:34
为什么第一个运行j++后,输出了j还是等于1?
...全文
387 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
noidler 2017-07-11
  • 打赏
  • 举报
回复
int j=1; System.out.println(j>0?(j++):5); System.out.println(j); j=1; System.out.println(j>0?(++j):5); System.out.println(j); j=1; System.out.println(j>0?(j=1+j):5); System.out.println(j); 你这样打印看看,应该能比明白
什么都不能 2017-07-11
  • 打赏
  • 举报
回复
j++; System.out.println(j); 和 j = j++; System.out.println(j);的区别
君梦无悔 2017-07-11
  • 打赏
  • 举报
回复
引用 7 楼 qq_24388701 的回复:
int j=1; System.out.println(j>0?(j++):5); System.out.println(j); j=1; System.out.println(j>0?(++j):5); System.out.println(j); j=1; System.out.println(j>0?(j=1+j):5); System.out.println(j); 你这样打印看看,应该能比明白
恩,学习学习。
zang568 2017-07-07
  • 打赏
  • 举报
回复
第一个先执行赋值,再执行++吧
qq_32626543 2017-07-07
  • 打赏
  • 举报
回复
j被赋值过即不会在执行j++了,这你得去了解jvm的机制了~
君梦无悔 2017-07-07
  • 打赏
  • 举报
回复
个人感觉用三目运算符给变量赋值,有个关键就是只能通过三目运算给变量赋值,=左边变量一旦赋上值就不能再通过式子更新变量值,除非是另一个变量,∵另一个变量值不是要通过三目运算才能赋值的。
君梦无悔 2017-07-07
  • 打赏
  • 举报
回复
public class San {
	public static void main(String[] args){
		int j =0;
		j =1;
		j = j>0?(j++):5;
		System.out.println(j);//j为1 三目运算=左右两边是同一个变量,
		//三目运算给=左边变量赋值完,三目运算终止,也不会执行j++了。
		j =1;
		int i = j>0?(j++):5;
		System.out.println(j+" "+i);//j为2,i为1。三目运算=左右两边含两个变量。
		j=1;//三目运算给=左边变量i赋上值后,=右边的j还要自加
		j=j>0?(++j):5;
		System.out.println(j);//j为2
		j=1;
		j=j>0?(j=j+1):5;
		System.out.println(j);//j为2
	}
}

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧