java中语句的分类

在Java中,一个语句是指一个过程的完整描述,就如流程图的一个环节。

总的来说,java中语句的分类有六类:①方法调用语句②表达式语句③复合语句④空语句⑤控制语句⑥package语句和import语句。

①方法调用语句:System.out.println("") 

首先,在我的使用次数来看,方法调用语句在初学者范围使用的最为频繁,因为在这个阶段不会接触图形界面编程,网站建设等比较高端的知识,在初学者阶段大多进行的是和控制台直接交互,还有就是用来提醒用户或者程序员自己注意哪些方面,如下面程序所示

java中语句的分类_第1张图片
②表达式语句:
表达式右变量,操作符,方法调用组成,根据语言的语法构造,计算后返回一个单独的值。表达式例子如下加粗的部分:
java中语句的分类_第2张图片

表达式计算返回的值的类型,依赖于表达式里使用的元素。表达式cadence = 0返回一个int,因为赋值运算符返回其左操作数相同的数据类型的值;该这个情况下,cadence 是int。正如你看到的其他表达式,表达式可以返回其他类型的值,例如布尔值或字符串。java编程语言,允许从多个简单的表达式构造一个复合的表达式,只要表达式的一部分要求的数据类型,复合其他数据类型。这里是一个复合类型的表达式例子:

1 * 2 * 3

这个特定的例子,表达式的计算顺序不重要,因为乘法的结果,和顺序独立;无论使用什么顺序应用乘法运算,结果都是一样的。但是,这不使用所有的表达式,下面的表达

式的结果,依靠于除法和乘法的操作哪个才是第一。

x + y / 100    // ambiguous

使用小括号:(和),精确控制哪个表达式先被执行。例如,让先前的表达式没有歧义,可以这么写:

(x + y) / 100  // unambiguous, recommended

如果你不显式指示哪个操作先执行,执行顺序,由表达式的操作的优先级决定。高优先的操作先被执行。例如,除法操作,比加法操作有更高的优先级,所以,下面的两个表

达式是一样的:

 
    
x + y / 100
x + (y / 100) // unambiguous, recommended

写复合表达式,使用小括号,显式指明哪个操作先被执行。这个实践让代码更易读,应该保持。

③空语句: 1)if()语句中的空语句循环体

bootean  x=true;

if(x);

//另一组如下:

boolean y=true;

if(y){}

以上两组语句都不会报错,没有语法错误,因为都是无限循环语句,第一组中的if(x);相当于if(x){ ; },第二组中的if(y){}效果与第一种的一样,都是空语句,不作为,成为if()语句的循环体。

2)while()语句中的空语句循环体

int  x=5;

while(x==5) ;

空语句,无限循环。

3)for()语句的空表达式与空语句循环体

for( ; ; ){ }

此语句无限循环。

④复合语句:

同C语言或其他语言相同,Java语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”开始,闭括号“}”结束。

例如在定义一个类或方法时,类体就是以“{ }”作为开始与结束的标记,方法体同样也是以“{ }”作为标记。

如下列例子中,就在主语句中嵌套进了两个语句,这两个语句就称之为复合语句。

java中语句的分类_第3张图片
控制语句:

分支流程控制语句

if-else语句

if(前提条件) 语句;

满足前提条件则执行语句,这是最简单的流程控制语句之一了。主义的一点事“前提条件”的结果必须为boolean型。true则执行。


switch语句

switch语句是一种具有处理多分支能力的流程控制语句。

switch(表达式){

case 值1 :语句1;

case 值12 :语句2;

……

[default:语句n;]

}


3、循环流程控制语句


while语句

格式:while(循环条件) 语句;

执行过程:判断循环条件,为true则执行语句,再回来判断循环条件……知道循环条件为false。因此,循环条件的结果必须为boolean值。


do-while语句

格式:do{语句序列}while(循环条件);

执行过程:执行循环体(语句序列),随后判断“循环条件”,为true则继续循环,为false则跳出。如此处循环结果为false则循环体至少执行了一次。


for语句

格式:for(初始化表达式;检测表达式;更新表达式)语句;

执行过程:“初始化表达式”是for语句第一个执行且只执行一次的语句。检测表达式的结果必须是boolean型,用于 决定是否继续循环,更新表达式在每次循环体执行完毕后自动执行。

例:

for(int i = 1 , sum = 0 ; i <= 100 ; i++)

{

sum = sum + i;

}

以上程序段是计算1+2+3...+100的值,并存储在sum中。


4、中断流程控制语句

Java中,中断流程控制语句主要包括break,continute和return。


break语句

break可以用在switch\while\do...while\for语句中,它包含两种:带标签的break语句和不带标签的break语句。


不带标签的break语句:通常出现在switch中。

格式:break;

带标签的break语句:

格式:break 语句标签;

有点类似c语言中的goto。这种格式的break语句用于跳出多层嵌套的循环语句,跳至标签处。

例:

for(;;)

{

break;

}

outside: 

...


continue语句

continue语句也包括带标签、不带标签两种。continue语句与break语句最大的区别是,break语句是跳出循环,而continue语句是提前结束此次循环,提早进入下次循环。


而带标签的continue语句则可以实现从内层循环跳至外层循环,并直接执行外层循环的下一次循环。


return语句

格式一:return;(只能用于返回类型为void的成员方法)

格式二:return 表达式;

return语句可以终止成员方法的执行并返回至调用这个成员方法的位置。如果这个成员方法需要返回值,将通过return带出。

注意:一个成员方法中可以有多个return,但必须保证每种情况下都有一个return语句被执行。return带回返回值后,如果没有立即使用或保存起来,将自动丢弃。

⑥package语句和import语句:

package 为解决类的 命名冲突问题而引入的机制。

    package语句作为Java源文件的第一条语句。(若缺省该语句,则指定为无名包。) 约定俗成的给包起名为把公司域名倒过来写,如com.sun Java编译器把包对应于文件系统的目录管理,package语句中,用‘.’来指明包(目录)的层次,例如package com.sun;则该文件中所有的类位于.\com\sun目录下。

总结:

  1.如果你要把一个类放在包下面,第一句写package,你编译出来的类必须位于正确的目录下面。

     该类的源码可能会产生影响(解决办法:删除或转移到别的目录)

  2.如果想在另一个类里面引用包里面的类,要把名字写全。(相当用文件的绝对路径访问)或者用import导入,但位于同一个包中的类不需要引入

  3.必须class文件的最上层包中的父目录位于classpath下面。

  4.编译后,执行一个类的时候也需要把包名写全,不然无法执行。


J2SDK中主要的包介绍(在jdk5.0/jre/lib/rt.jar里面,可用解压软件解开查看)

  Java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能

  Java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

  Java.applet-包含applet运行所需的一些类

  Java.net-包含执行与网络相关的操作的类

  Java.io-包含能提供多种输入/输出功能的类

  Java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数

  其中就Java.lang包不用引入就能直接使用,其他包里面的类都要用import引入才能使用。

 

如何打包?

  先定位到classpath设置的目录下 jar -cvf xx.jar *.* -c 创建新的文档 -v 生成详细输出到详细输出上 -f 指定存档文件名 即把classpath下的所有文件打包成xx.jar文件 如何使用呢? 把xx.jar的绝对路径放到classpath下面,这样就可能正常访问了
eg.

在一个文件中

  package com.sun;

  public class Cat {

  }

在另一个文件中

  //import com.sun.*;

  public class T {

    public static void main(String[] args){

      com.sun.Cat c = new com.sun.Cat(); 

     }

  }

  1.把第一个文件编译生成的.class文件放到com.sun目录下,然后就可编译执行T.java了,其中Cat类必须为public

  2.第一个文件不变,修改二个文件成如下:

  import com.sun.Cat;

  public class T {

     public static void main(String[] args) {

       //com.sun.Cat c = new com.sun.Cat();

       Cat c = new Cat();

     }

   }

  同样可以达到目的。但是有点小问题,就是import com.sun.*;应该可以代替import com.sun.Cat;但在调试过程中却会报错。

  但是如果两上文件不在同一文件目录下,这时上面的程序就会报错。为此我们需要为此设置环境变量“classpath”,在里面添加路径,即com.sun的最上层目录的上一级目录,即存放com文件夹的目录名。这样程序就会从这里开始寻找需要的类。

  一个文件中可以同时有package和import存在,但在执行时要注意java 后面跟的文件名要写全。


你可能感兴趣的:(java相关基础知识)