您的位置:首页 > 编程语言 > Java开发

初学java语言与选择语句与循环语句

2018-01-14 15:39 197 查看


1.高级语言的运行机制

我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。

翻译,其实翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

 


1.1编译型语言    (如C、C++、Objective-C)

使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性”翻译“成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式。

优点: 运行效率较高

缺点:编译生成的程序无法移植

 


1.2解释型语言    (如Ruby、Python)

使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会整体性的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合到一起同时完成。

优点:跨平台较容易

缺点:效率较低,不能脱离解释器独立运行

 


2.Java语言的运行机制

 


2.1Java是编译型和解释型语言的结合体。

①首先采用通用的java编译器将java源程序编译成为与平台无关的字节码文件(class文件)

②然后由java虚拟机(JVM)对字节码文件解释执行。

注意:java字节码具有平台无关性、可以在各种不同系统平台中运行,但是需要有不同版本的java虚拟机,不同系统平台的java运行环境其java虚拟机是不一样的。

 


 


2.2 JVM(Java Virtual Machine Java虚拟机)

(1)JVM是Java字节码执行的引擎,为java程序的执行提供必要的支持,还能优化java字节码,使之转换成效率更高的机器指令。程序员编写的程序最终都要在JVM上执行,JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的。  (2)ClassLoader是java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类。
(3)JVM屏蔽了与具体操作系统平台相关的信息,从而实现了java程序只需生成在JVM上运行的字节码文件(class文件),就可以在多种平台上不加修改地运行。不同平台对应着不同的JVM,在执行字节码时,JVM负责将每一条要执行的字节码送给解释器,解释器再将其翻译成特定平台环境的机器指令并执行。java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台运行。
 


2.3 ClassLoader

(1)是JVM实现的一部分,包括bootstrapclassloader(启动类加载器)
(2)ClassLoader在JVM运行的时候加载java核心的API,通过java程序实现两个ClassLoader:
①ExtClassLoader,它的作用是用来加载java的扩展API,也就是lib\ext类;
②AppClassLoader,用来加载用户机器上CLASSPATH设置目录中的Class.
(3)ClassLoader加载流程:当运行一个程序的时候,JVM启动,运行bootstrapclassloader,该ClassLoader加载java核心API,然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class.
 


2.4JRE

JRE是JavaRuntimeEnvironment,java运行时环境,它是java程序运行所必须的环境集合,主要由java虚拟机、java平台核心类和若干支持文件组成。其不包含开发工具、编译器、调试器以及其他工具。
在执行java程序的时候,操作系统会按照下面顺序寻找JRE环境。
(1)先查找当前目录下有没有JRE
(2)再查找父目录下有没有JRE
(3)接着在环境变量PATH制定的路径中查找JRE
(4)注册表查看CurrentVersion的键值指向哪个JRE
JRE自带的基础类库主要在JRE\LIB\rt.jar文件中。在程序运行时,JRE由ClassLoader(类加载器)负责查找和加载程序引用到的基类库和其他类库。基础类库,Classloader会自动到rt.jar的位置;其他的类库,ClassLoader在环境变量CLASSPATH制定的路径中搜索。
 


2.5 JDK

JDK是Java Development Kit,简称java开发工具包。
JDK是java的核心。它包括java运行环境、一堆java工具盒java基础的类库(rt.jar)。
JDK包含JRE的全部内容外,还包含开发者用以编译、调试和运行java程序的工具。
JDK、JRE、JVM之间的关系:
JDK、JRE、JVM之间是包含关系。范围由大到小依次为JDK、JRE、JVM。

选择语句:按照条件选择合适的语句执行。

选择语句分类:if语句;switch语句。

if语句:又分为三类:简单if语句、双分支if语句、多分支if语句。

什么时候使用if语句呢?

需要做判断或者不同条件下有不同操作时使用。

//简单if语句

int num = 10;

//作用:按照简单条件执行

//例:

if(num<8){

System.out.println(num);

}

System.out.println(num);

 

//双分支if语句

int num = 10;

//作用:先按照条件判断是否执行,如果正确,

//则执行,否则执行else的语句

//双分支if语句中一定会执行if或者else中的一个

//并且else中的条件不写,与if相反

//例:

if(num<8){

System.out.println(num);

}else{

num++;

System.out.println(num);

}

System.out.println(num);

 

 

//多分支if语句

int num = 10;

//作用:按照条件运行,其中if中有条件,else if中要书写条件

//而else中依然不书写条件(尤其注意else的条件是多少)

//else的条件等于if+else if中条件的相反

//注意事项:如果执行了某一个if或者else if,则整个if语句执行结束

//多分支语句中else if的个数没有限制

//例:

if(num<8){

System.out.println(num);

}else if(num>10){

System.out.println(num+1);

}else if(num>12){

System.out.println(num-1);

}else{

num++;

System.out.println(num);

}

System.out.println(num);

 

注意事项:

//特殊if语句

int num = 10;

//作用:有两个彼此之间没有关系的if语句,只要满足条件就会执行

//并且,有可能两个都执行,也有可能都不执行

//一定注意:两个if没有任何关系,顶多有值操作的关系

//例:

if(num>=10){

num--;

System.out.println(num);

}

if(num%2==0){

System.out.println(num);

}

//上述代码中只会执行第一个if语句

//原因:第一个if语句中改变了num值,为9,

//不满足进行第二个if的要求,所以只执行第一个

 

if语句更适用于条件为区间的判断,什么是区间呢?--范围

 

switch语句

格式:

<
a966
p>int num = 2;
switch (num) {

case 1:

System.out.println(1);

case 2:

System.out.println(2);

default:System.out.println("没有该选项");

}

switch中和if比较:没有判断的条件的区间,而是使用case后面跟着的值进行判断。

比如上述代码,switch中往往传入变量,将该变量的值与case中的常量或者字面量作比较,如果满足,则执行相应的case语句,并一直往下执行,直到遇到break关键字或者switch全部执行完。

 

所以一般情况下,我们会在case语句后加上一个break;表示退出switch语句。

 

switch()这个()中可以填入很多数据类型的变量

byte/short/int/char

String JDK1.7之后

枚举类型 JDK1.5之后出现的数据类型

 

switch中是不是一定有default呢?--可以没有。

 

default是不是只能放在最后面呢?--不是,但是如果不放在末尾很容易造成代码效果不正确。

 

想要尽量保证不执行其它不想要的代码,在switch中可以使用后break来结束switch语句。

 

switch主要是做特定值得比较,不适合用作范围的比较

 

--------------------------------------------------------------

 

循环语句

循环语句:for、while、do...while循环

 

for循环是将起始、结束条件、循环变量都存入()中,将循环体放在{}中

 

while循环只是将结束条件都存入()中,将循环体放在{}中,起始放在while外面,循环变量放在循环体后面。

 

do...while和while相似,区别在于do...while先执行一次,再判断,而while先判断后执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: