语法基础
分支语句if
if语句的写法主要分为以下四种:
*第一种写法:
- if(布尔表达式){
java语句;
} 布尔表达式为true执行大括号,否则不执行
’
*第二种写法:- if(布尔表达式){
java语句1;
}else{
java语句2;
} 布尔表达式为true执行语句1,否则执行语句2第三种写法
- if(布尔表达式1){
java语句1;
}else if(布尔表达式2){
java语句2;
}else if(布尔表达式3){
java语句3;
}…… 从上往下依次判断,第一个布尔表达式值为true对应的分支执行,执行后结束。第四种写法
- if(布尔表达式1){
java语句1;
}else if(布尔表达式2){
java语句2;
}else if(布尔表达式3){
java语句3;
}else{
java语句;//上面都没执行,执行这个 }
带有else的肯定会执行其中的一个分支
if语句的理解较为容易,所以这里就不具体举出例子了,但是有一点需要注意:在if语句中,有且只有一条分支可以执行
分支语句switch
switch语句的语法格式
- switch(值){
case 值1:
java语句;
break;
case 值2:
java语句;
break;
case 值3:
java语句;
break;
default:
java语句; }
以上是一个完整的switch语句,其中break和default不是必须的
值支持int,String,byte,short,char类型
switch的执行原理:
switch语句中值,与值1,值2等等的值进行对比,如果相同,则执行该分支中的java语句,遇到break结束,如果与值1不同,则会继续下去与后面的值对比,若没有break,在对比到相同的值时,会直接执行下面case中的所有语句,若所有case都没有匹配成功,则执行default中的语句。
案例1:
switch(0){
case 0:
System.out.println("星期日");
//break;
case 1:
System.out.println("星期一");
//break;
case 2:
System.out.println("星期二");
//break;
case 3:
System.out.println("星期三");
//break;
case 4:
System.out.println("星期四");
//break;
case 5:
System.out.println("星期五");
//break;
case 6:
System.out.println("星期六");
//break;
default:
System.out.println("日期有误");
该程序本应只输出星期日,因为没有break语句,在对比到case 0后,直接执行了下面所有case中的java语句。
输出结果:
星期日
星期一
星期二
星期三
星期四
星期五
星期六
日期有误
注:switch语句的case可以重叠,下面看例子:
String str = "不及格";
switch(grade){
case 10: case 9:
str="优秀";
break;
case 8:
str="良好";
break;
case 7:
str="中等";
break;
case 6:
str="及格";
break;
}
System.out.println(str);
}
以上案例中,当grade=9或10的时候都会输出"优秀"
循环语句
1.for循环
语法机制:
for(初始化表达式;条件表达式;更新表达式){
循环体;
}
注意:
1.条件表达式最先执行,并且在整个循环中只执行一次
2.条件表达式必须是一个布尔类型
3.执行原理:
先执行初始化表达式,然后判断条件表达式的结果,为true则执行循环体,然后执行更新表达式, 执行完后继续执行判断表达式,同上,直到为false,结束。
4.更新表达式的作用:控制循环的次数,防止死循环
案例1:输出0-9的数字
for (int i=0;i<10 ;i++ )
{
System.out.println(i);
}
这里要注意:i是定义在for循环中的局部变量,循环结束后被释放,无法再次被调用!
for循环的嵌套
注意,for循环时可以嵌套使用的,下面看案例,输出两次0-9:
for (int k =0;k<2 ;k++ )
{
for (int i =0;i<10 ;i++ )//其中两份i是不同的内存
{
System.out.println("i->"+i);
}
}
在分析外层for时,里面的for当做普通的java代码即可
2.while语句
基本结构
while (布尔表达式){
循环体;
更新表达式;
}
1.执行原理:判断布尔表达式的结果。为true就执行循环体,循环体结束后再判断布尔表达式,直到为false时停止
2.while循环的执行次数:0-n次
3.更新表达式的作用:同if,控制循环次数
案例:输出0-9的数字
int i =0;
while(i<10){
System.out.println(i);
i++;
}
3.do while语句
语法机制:
do{
循环体;
}while(布尔表达式);
这里要特别注意一点,最后的那个分号不要漏掉!
执行原理:
1.先执行一次循环体中的代码,再判断布尔表达式,true再试行再判断,false结束循环
2.do while的执行次数:1-n次
案例:输出0-9的数字
int i =0;
do{
System.out.println(i);
i++;//这句语句就相当于更新表达式,用于控制循环次数
}while(i<10);
}
4.循环语句总结
1.java中的循环语句与其他语言中的差别并不大,所以如果有其他语言的基础,学习起来是非常快的。
2.上述三大循环语句其实都是可以相互替换的。
3.循环包括分支语句,这些都是最重要的语法基础,必须掌握,只有掌握了这些,才能继续进行后面的学习。
4.转向语句
一、转向语句有哪些?
1.break;终止离本语句最近的循环
2.continue;终止本次循环,直接进入下一次循环
3.return;//这里暂时不讲
二、break语句
break的用处
1.switch语句中用来中止switch,上文已经讲过
2.在循环语句中用来中止循环
案例:
for (int i =0;i<10 ;i++ )
{
if (i==5)
{
break;//break会中止离他最近的循环
}
System.out.println(i);
}
输出结果:
0
1
2
3
4
三、continue语句
这里直接看案例:
for (int i = 0;i<10 ;i++ )
{
if (i==5)
{
continue;
}
System.out.println(i);
}
输出结果:
0
1
2
3
4
6
7
8
9
方法的语法机制
方法怎么定义,语法机制是什么?
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
其中,[]中的修饰符列表不是必写的,目前为止统一写public static
1.关于返回值类型:
第一:只要是java中合法的数据类型就行
第二:什么是返回值?
返回值一般是一个方法执行结束之后的结果结果通常是一个数据,所以被称为“返回值”
第三:当方法结束之后,不返回任何值,返回值类型必须写上void关键字。
第四:若返回值类型不是void,在方法体结束后,必须用return语句,来完成值的返回,否则会编译报错。
第五:只要有return语句,当前方法必结束,不是整个程序结束!
第六:若是void,不可以有“return 值”的语句,但是可以有“return”语句来结束方法
2.方法名
第一:方法名要见名知意
3.形式参数列表
第一:形式参数列表中的每一个参数都是局部变量,接受调用时传进来的实际参数的值,方法结束后被释放。
第二:形参的个数是0-n个,形参有多个的话,使用逗号隔开。
第三:形参的数据类型起决定性作用,形参对应的变量名随意
4.方法定了以后怎么调用?
类名.方法名(实际参数列表)
案例:
public class text
{
//main 方法结束之后不需要返回任何结果,main方法是程序的入口
public static void main (String[] args){
//调用方法
//(10,2)为实参,注意实参和形参的类型必须一一对应
int x = divide(10,2);//定义在同一个类之中的方法,调用的时候可以省类名.
System.out.println(x);
}
//定义一个方法
public static int divide (int x,int y){
int z= x/y;
return z;
}
}
输出结果:
5
下面来看一个易错点:
//下面这个方法报错:缺少返回值
public static int m(){
boolean flag =true;
if (flag)
//编译器觉得以下这行代码可能会不执行
//为了确保程序不会出现异常,所以报错
{
return 1;
}
}
//解决方法:在最后加上return语句即可。
方法递归
即方法自己调用自己,注意方法递归一定要有退出条件!否则会有溢出栈内存的错误!
案例:通过递归求斐波那契数列的第n项
public static int f(int n){
if (n == 1||n == 2)//这里为退出条件!
{
return 1;
}else {
return f(n-1)+f(n-2);//自己调用自己
}
}
方法重载
一、在java中什么时候会发生方法重载?
1.在同一个类之中
2.方法名相同
3.参数个数不同
4.参数顺序不同
5.参数类型不同
二、什么时候使用方法重载?
在同一个类中,两个方法的功能是类似的
三、方法重载有什么用?
调用方法时,通过输入不同的实参,就可以调用不同的方法!
接下来看一个简单的案例
public static void main(String[] args){
//通过不同的实参调用重载之后的不同方法!
System.out.println(sum(10,20));//int类型的30
System.out.println(sum(10l,20l));//long类型的30
System.out.println(sum(10.0,20.0));//30.0
}
public static int sum (int a,int b){
return a+b;
}
public static long sum (long a,long b){//重载
return a+b;
}
public static double sum (double a,double b){//重载
return a+b;
}