在Java中,一个语句是指一个过程的完整描述,就如流程图的一个环节。
总的来说,java中语句的分类有六类:①方法调用语句②表达式语句③复合语句④空语句⑤控制语句⑥package语句和import语句。
①方法调用语句:System.out.println("")
首先,在我的使用次数来看,方法调用语句在初学者范围使用的最为频繁,因为在这个阶段不会接触图形界面编程,网站建设等比较高端的知识,在初学者阶段大多进行的是和控制台直接交互,还有就是用来提醒用户或者程序员自己注意哪些方面,如下面程序所示
表达式计算返回的值的类型,依赖于表达式里使用的元素。表达式cadence = 0返回一个int,因为赋值运算符返回其左操作数相同的数据类型的值;该这个情况下,cadence
是int。正如你看到的其他表达式,表达式可以返回其他类型的值,例如布尔值或字符串。java编程语言,允许从多个简单的表达式构造一个复合的表达式,只要表达式的一部分要求的数据类型,复合其他数据类型。这里是一个复合类型的表达式例子:
1 * 2 * 3
这个特定的例子,表达式的计算顺序不重要,因为乘法的结果,和顺序独立;无论使用什么顺序应用乘法运算,结果都是一样的。但是,这不使用所有的表达式,下面的表达
式的结果,依靠于除法和乘法的操作哪个才是第一。
x + y / 100 // ambiguous
使用小括号:(和),精确控制哪个表达式先被执行。例如,让先前的表达式没有歧义,可以这么写:
(x + y) / 100 // unambiguous, recommended
如果你不显式指示哪个操作先执行,执行顺序,由表达式的操作的优先级决定。高优先的操作先被执行。例如,除法操作,比加法操作有更高的优先级,所以,下面的两个表
达式是一样的:
写复合表达式,使用小括号,显式指明哪个操作先被执行。这个实践让代码更易读,应该保持。
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语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”开始,闭括号“}”结束。
例如在定义一个类或方法时,类体就是以“{ }”作为开始与结束的标记,方法体同样也是以“{ }”作为标记。
如下列例子中,就在主语句中嵌套进了两个语句,这两个语句就称之为复合语句。
分支流程控制语句
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.编译后,执行一个类的时候也需要把包名写全,不然无法执行。
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引入才能使用。
如何打包?
在一个文件中
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 后面跟的文件名要写全。