码迷,mamicode.com
首页 > 其他好文 > 详细

程序设计的一些原理

时间:2016-06-19 01:30:32      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:java   编译器   ++   public   --   

一: 自曾自减原理

class VarDemo  {
public static void main(String[] args) {
int x = 30;
x = x++;
System.out.println(x);
}
}


结果: 30


内存中计算实现的过程

temp = x     => temp =30

x = x + 1    => x = 31

x = temp     => x =30


注: 第一步编译器发现是 x++;所以会把x先转到temp临时内存中,然后x++实现了x=31, 然后将x++赋值给x, x=temp



换成

x = ++x


内存中实现过程是:

x= x + 1  x => 31

x = x    x => 31




二: 自动转换数据类型和强制转换类型

byte x = 30;

x = x +4;


以上会报错,解释:

第一步:

byte x =30;实现的过程是,将int型的30赋值给byte类型的时候,java编译器底层会做,强制转换,(如果int型的整数能放入byte类型的话)将30转换成为byte类型(否则报错),在赋值给byte类型的变量x。

第二步:

x是byte类型 + int类型的4,因为x是变量,底层无法判断x+4是否能正确的转换到byte类型,所以报错

E:\java3200\day002>javac VarDemo2.java

VarDemo2.java:4: 错误: 可能损失精度

                x = x +4;

                      ^

  需要: byte

  找到:    int

1 个错误


但可以强制进行转换:

x = (byte)(x +4);



三:x+=5; 是否等于 x = x+5


解答:

byte x = 30;

x+=5;

以上不会报错,以上只有赋值一个步骤。


byte x = 30;

x = x +5;

这个会报错,报错的原因就是第二种情况,类型自动转换不了!以上有先计算x+5 在赋值的两个步骤




四: 双与和单与的区别(java中)


&& 

&

两种的区别是,逻辑运算的结果一样,但是过程不一样


&& 当左边的执行结果为false的时候,右边不参加运算

& 无论左边为何结果,右边都会运算


综合以上,&&的效率更高,但是有时候要得到与结果,接右边一定要参加运算的情况,要使用单与


单与还有一个作用在位运算(6&3)结果 2

0000-0000 0000-0000 0000-0000 0000-0010









本文出自 “崔德华运维打工从业路” 博客,请务必保留此出处http://cuidehua.blog.51cto.com/5449828/1790660

程序设计的一些原理

标签:java   编译器   ++   public   --   

原文地址:http://cuidehua.blog.51cto.com/5449828/1790660

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!