一、语句
Java语法结构中有顺序结构、判断结构、选择结构、循环结构。
1.判断结构:
判断结构中有三种常用的格式,如下:
当小括号内的条件表达式的结果为true时,执行大括号内的执行语句。例如:
int x=2;
if(x>1)
{
System.out.println("hello");
}
如果大括号内要执行的只有一行语句,可以省略大括号。
(2)if(条件表达式){执行语句}
else{执行语句}。当if的条件表达式为true时,执行if的语句,不再执行else的语句;当小括号内的结果为false时,不执行if 下的语句,执行else下的语句。例如:
int x=2;
if(x<1)
System.out.println("hello");
else
System.out.println("byebye");
执行结果为在控制台打印“byebye”。注意有时这种格式也可以用三元运算符实现,但使用三元运算符时必须有一个返回的结果,像上面的代码就无 法用三元运算符实现,具有局限性。但有时可以实现代码的简化。
(3)if(条件表达式){执行语句}
else if(条件表达式){执行语句}
.....................(此处可以定义多条else if语句 )
else{执行语句}
当if中的条件表达式为true,执行if的语句,不再执行下面的else if语句和else语句;当if的条件表达式为false,在else if 中从上向下寻找为true的表 达式,找到后执行其下的执行语句,不再判断和执行下面的else if语句和else语句;当if语句和else if语句中都没有为true条件表达式时,执行else下的语 句。例如:
int x=4;
if(x<0)
System.out.println("haha");
else if(x>2)
System.out.println("duangduang");
else if(x>3)
System.out.println("gogo");
else
System.out.println("byebye");
执行结果为在控制台上打印“duang”。
注意:有时在操作时,会同时定义上面的两、三种格式,例如:
int x=4;
if(x<0)
System.out.println("haha");
if(x>1)
System.out.println("hehe");
if(x>2)
System.out.println("duangduang");
else if(x>3)
System.out.println("gogo");
else
System.out.println("byebye");
执行结果为在控制台先打印出“hehe”,再打印出“duangduang”。因为每出现一个if(条件表达式)就代表一个语句,代码中一共有 三条语句,会自上向下执行三条语句中符合执行条件的执行语句。
2.选择结构
选择结构主要是switch语句。
格式:
switch(表达式)
{
case 取值 1:
执行语句;
break;
case 取值 2:
执行语句;
break;
..........................
default:
执行语句;
break; //最后一行的break可以不写。
}
用法举例:
<pre name="code" class="java">/**
需求:根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
*/
class SwitchDemo
{
public static void main(String[] args)
{
int x = 8;
switch(x)
{
case 3:
case 4:
case 5:
System.out.println(x+"春季");
break;
case 6:
case 7:
case 8:
System.out.println(x+"夏季");
break;
case 9:
case 10:
case 11:
System.out.println(x+"秋季");
break;
case 12:
case 1:
case 2:
System.out.println(x+"冬季");
break;
default:
System.out.println("输入的值有误");
}
}
}
执行结果为在控制台打印出“8夏季”。
switch语句的特点:
1.switch语句选择的类型只有4种:byte,short,int,char。
2.case之间与default没有顺序,先执行第一个case,没有匹配的case执行default。
3.结束switch语句的两种情况:遇到break;执行到switch语句结束。
4.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以运行的语句,直到遇到break或者switch语句结束。
使用if或者switch语句的情况:
1.如果判断的具体数值不多,而且符合四种类型,建议使用switch语句,效率稍高。
2.其他情况:如对区间判断,对结果为Boolean类型的判断,使用if语句,if语句的使用范围更广。
3.循环结构
当对一条或多条语句要执行很多次时,就需要定义循环结构。循环结构主要为while语句,do while语句,for语句。
while语句格式: do while语句格式: while(条件表达式) do { {
执行语句; 执行语句; } }while(条件表达式) while和do while语句的区别:
while:先判断条件,只有条件满足才执行循环体。
do while:先执行循环体一次,在判断条件,如果条件,再继续执行循环体。
do while中无论条件是否满足,循环至少执行一次。
for语句格式:
for(初始化表达式;循环条件表达式(必须是boolean型结果);循环后的操作表达式)
{
执行语句;
}
例如:
for(int x = 0; x<3 ; x++)
{
System.out.println("x="+x);
}
执行结果为在控制台上分行打印出x=0,x=1,x=2.
for循环的内部执行顺序:先读一次并且只读一次初始化表达式,判断循环条件为真,就执行循环体,然后再执行循环后的操作表达式,接着判断循环条件,重复 整个过程,知道条件不满足为止。
while和for对比:while和for可以互换。区别在于for为了循环而定义的变量在for循环结束后,就在内存中释放了,而while循环使用的变量在循环结束后海可以继 续使用。在定义循环语句时一定要明确哪些语句需要参与循环,哪些不需要参与循环。在需要定义循环增量时,使用for循环更合适,会节省内存空间。
在循环结构中常用的两种语句:累加和计数器。
累加思想:即求和,通过变量记录住循环操作的结果。通过循环的形式,进行累加操作。
例如:
/*
1,获取1~10的和,并打印。
*/
class ForDemo
{
public static void main(String[] args)
{
//定义变量用于存储不断变化的和。
int sum = 0;
//定义变量,记录住不断变化的被加的数。
int x = 1;
//定义循环,重复加法的过程。
while(x<=10)
{
sum = sum + x;
x++;
}
System.out.println("sum="+sum);
}
}
执行结果为在控制台上打印出“sum=55”;
计数器思想:通过变量记录住数据的变化状态,也需要通过循环完成。
例如:
/*
需求:获得1~100之间6的倍数的个数。并打印。
*/
class ForDemo2
{
public static void main(String[] args)
{
//定义变量,记录满足条件的数的出现次数
int count = 0;
//在指定范围内进行循环
for(int x=1; x<=100; x++)
{
//判断是否满足条件,满足条件,计数的变量自增。
if(x%6==0)
count++;
}
System.out.println("count="+count);
}
}
执行结果为在控制台上打印出“count=16”;
循环嵌套:就是循环中还有循环。
例如:
/**
需求:打印九九乘法表.
*/
class ForForDemo
{
public static void main(String[] args)
{
//限定行数
for (int x=1; x<=9 ; x++)
{
//限定列数
for (int y=1; y<=x; y++)
{
//打印每次循环的两个数及它们的积
System.out.print(y+"*"+x+"="+y*x+"\t");
}
//换行
System.out.println();
}
}
}
执行结果为在控制台打印出九九乘法表。
break与continue:
break:结束、跳出,用于选择结构或循环结构。
continue:结束本次循环,继续进行下一次循环。用于循环结构。
break和continue使用时应注意:
1.这两个语句离开应用范围,存在都没有意义。
2.这两个语句单独存在,下面不可以再有语句,因为执行不到。
3.标号的出现可以让这两个语句应用于指定范围(标号只能用于循环结构);
二、函数
定义在类中的具有特定功能的一段独立程序,也称为方法。
格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
执行语句;
return返回值;//返回值类型为void时,不写return语句。
}
其中:
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
函数的特点:
提高了代码的复用性
函数中只能调用函数,不可以在函数内部定义函数。主函数是静态的,只能调用静态函数。
3. 对于函数没有具体返回值的情况,返回值类型用关键字void表示。此
定义函数:
1.明确要定义的功能的结果:即返回值类型。
2.明确在定义该功能的过程中,是否需要未知内容参与运算:即参数列表。
重载:
重载是函数的特性,在同一个类中,允许存在一个以上的同名函数,前提是它们的参数列表的个数或参数类型不同即可。重载只看参数列表,与返 回值类型无关。重载的优化了程序设计,提高了阅读性。
举例:判断下面哪些函数与void show(int a,char b,double c){}可以实现重载。
a.void show(int x,char y,double z){}//没有,因为和原函数一样。
b.int show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
c.void show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
d.boolean show(int c,char b){}//重载,因为参数个数不同。
e.void show(double c){}//重载,因为参数个数不同。
f.double show(int x,char y,double z){}//没有,这个函数不可以和给定函数同时存在与一个类中。
重载的使用:
当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名 函数。
返回两个整数的最大值 int getMax(int x,int y);
返回两个小数的最大值 double getMax(double a,double b);
返回三个整数的最大值 int getMax(int x,int y,int z);