程序设计的一些原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序设计的一些原理相关的知识,希望对你有一定的参考价值。

一: 自曾自减原理

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

以上是关于程序设计的一些原理的主要内容,如果未能解决你的问题,请参考以下文章

是否有在单个活动中处理多个片段的 Android 设计模式?

二级域名原理以及程序代码

Apollo Codegen 没有找到生成代码的操作或片段

简单的方法来分享/讨论/协作的代码片段?

编译时,运行时解释

数据库系统原理 片段翻译