内存条通用吗型号不一能否通用

Java编程中的条件判断之if语句的用法详解
投稿:goldensun
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Java编程中的条件判断之if语句的用法详解,是Java入门学习中的基础知识,需要的朋友可以参考下
if语句使用布尔表达式或布尔值作为分支条件来进行分支控制,其中if语句有如下三种形式:
  第一种形式:
  if ( logic expression )
  statements…
  第二种形式:
  if (logic expression)
  statements…
  statements…
  第三种形式:
  if (logic expression)
  statements…
  else if(logic expression)
  statements…
  …//可以有零个或多个else if语句
  else//最后的else语句也可以省略
  statement
  在上面if语言的三种形式中,放在if之后的括号里的只能是一个逻辑表达式,即这个表达式的返回值只能是true或false.第二种情形和第三种情形是相通的,如果第三种形式中else if块不出现,则变成了第二种形式。
  上面的条件语句中,if(logic expression)、else if(logic expression)以及else后花括号括起来多行代码被称为代码块,一个代码块通常被当成一个整体来执行(除非运行过程中遇到return、break、continue等关键字,或者遇到了异常),因此这个代码块也被称为条件执行体。例如如下程序:
  程序清单:codes/04/4-2/TestIf.java
  public class TestIf
  public static void main(String[] args)
  int age = 30;
  if (age & 20)
  //只有当age & 20时,下面花括号括起来的语句块才会执行
  //花括号括起来的语句是一个整体,要么一起执行,要么一起不会执行
  System.out.println("年龄已经大于20岁了");
  System.out.println("20岁以上的人应该学会承担责任…");
  因此,如果if(logic expression)、else if(logic expression)和else后的语句块只有一行语句时,则可以省略花括号,因为单行语句本身就是一个整体,无须花括号来把它们定义成一个整体。下面代码完全可以正常执行(程序清单同上):
  //定义变量a ,并为其赋值
  int a = 5;
  if (a & 4)
  //如果a&4,执行下面的执行体,只有一行代码作为代码块
  System.out.println("a大于4");
  //否则,执行下面的执行体,只有一行代码作为代码块
  System.out.println("a不大于4");
  通常,我们建议不要省略if、else、else if后执行块的花括号,即使条件执行体只有一行代码,因为保留花括号会有更好的可读性,而且保留花括号会减少发生错误的可能,例如如下代码,则不可正常执行:
  //定义变量b ,并为其赋值
  int b = 5;
  if (b & 4)
  //如果b&4,执行下面的执行体,只有一行代码作为代码块
  System.out.println("b大于4");
  //否则,执行下面的执行体
  //对于下面代码而言,它已经不再是条件执行体的一部分,因此总会执行
  System.out.println("b不大于4");
  上面代码中以粗体字标识的代码行:System.out.println("b不大于4");,将总是会执行,因为这行代码并不属于else后的条件执行体,else后的条件执行体就是b--;这行代码。
  if、else、else if后条件执行体要么是一个花括号扩起来的语句块,则这个语句块整体作为条件执行体;要么是以分号为结束符的一行语句,甚至可能是一个空语句(空语句是一个分号)。
  如果if块后有多条语句作为条件执行体,如果省略了这个条件执行体的花括号,则会引起编译错误,看下面代码(程序清单同上):
  //定义变量c ,并为其赋值
  int c = 5;
  if (c & 4)
  //如果c&4,执行下面的执行体,将只有c--;一行代码为条件执行体
  //下面是一行普通代码,不属于条件执行体
  System.out.println("c大于4");
  //此处的else将没有if语句,因此编译出错
  //否则,执行下面的执行体,只有一行代码作为代码块
  System.out.println("c不大于4");
  在上面代码中,因为if后的条件执行体省略了花括号,则系统只把c--;一行代码作为条件执行体,当c-;语句结束后,if语句也就结束了。后面的System.out.println("c大于4");代码已经是一行普通代码了,不再属于条件执行体,从而导致else语句没有if语句,从而引起编译错误。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
Java在早期(比如JDK1.2以前)是很慢的,后续版本由于有许多优化手段的加入,Java正变得越来越快,所以现在也有很多关于Java和C/C++孰快孰慢的争论。我想就我自己的理解,谈一下影响Java程序运行速度的因素。
众所周知,Java相对C/C++的一个很大进步就是有了GC机制,它能够很大程序的避免C/C++常见的内存泄漏的发生。但是这也是有代价的,那就是因为JVM管理了所有内存分配释放,当内存不够时就需要做回收,每次回收都有扫描整个堆,然后要搬移一些内存数据,新生代还好,如果是老年代的GC,会造成程序卡顿一段时间,很多时候是不能接受的,也极大的拖慢了程序的运行速度。虽然GC算法在不断改进,但是也属于只能优化不能根治。
2、解释性语言
Java为了跨平台,没有直接编译成机器指令,而是编译成字节码,运行时JVM需要加载这些字节码,然后再逐条解释执行。这个过程中,字节码的加载需要时间,然后解释执行也需要时间。做同样一件事情,编译语言可以直接编译成机器码,运行时CPU就直接执行这些指令,而Java是编译成字节码,运行时JVM要把字节码翻译成目标机器的可执行指令,这里面就增加了一层间接性,所以也会降低运行速度。
3、JIT消耗资源
JIT是Java后续版本的改进功能,能把常执行的方法或者语句块即时编译成机器码,这样确实能加快运行速度。但是这种编译是即时发生,会和程序本身抢用运行资源,就会拖慢程序运行的速度。
4、基于栈的指令集
编译语言多采用基于目标平台寄存器的指令集,这样能充分利用寄存器的高速度。Java为了可移植性,没有绑定某个目标平台的寄存器,而是采用基于栈的指令集。频繁的栈内存访问会导致比较慢的速度,并且通常编译相同语句产生的指令数量也要多于寄存器指令集。
5、大量使用堆内存
Java中对象创建被JVM托管,能够避免越界或空指针访问之类在C/C++中常见的问题。因此对象大多是创建在堆上的,而不是栈上的,其创建和维护成本上通常要更高一些。
6、AOT技术
AOT技术能够在字节码安装到目标平台时,先编译成目标平台的执行文件,这样目标平台就可以直接运行可执行文件,速度上可以达到编译类语言的水平。但是这样会导致Java所拥有的动态加载功能丧失,所有字节码都被编译到执行文件,不论其在运行时是否被使用到,并造成其产生的可执行文件相对于字节码来说体积更大。
总言而之,Java由于其跨平台且管理内存等特性,给开发效率带来了诸多进步,但是凡事有利也有弊,伴随而来的是运行效率的降低。充分了解这些优势和劣势,才能在合适的时候选择合适的技术,以发挥最大的效能。
& 相关主题:

我要回帖

更多关于 内存条都是通用的吗 的文章

 

随机推荐