Java基础(03)——Java语法结构(顺序与选择结构)

版权声明

  • 本文原创作者:清风不渡
  • 博客地址:https://blog.csdn.net/WXKKang

Java中的语法结构

Java中的基本语法结构有几种呢,下面就先来列举一下吧 ~ ~

  • 顺序结构
  • 选择结构
  • 循环结构

1、顺序结构

我们都知道,对于我这样一个Java界的小学生来说,Java就好像是由一个单词一个单词,一句一句的“英文”组成的一片“文章’,那么既然是一片“文章”,当虚拟机运行它的时候就像是一个人在阅读这篇”文章“,一句话一句话的往下读,这样的话就好理解了

所谓的顺序结构,就是指程序按照语句的结构一条一条的执行,我们在使用这种语法结构的时候,只需将合法语句按照合理的执行顺序一 一排列好,就可以逐一执行了。

下面就是一个简单的小段Java代码,来形象的说明顺序语法结构:

public class Demo{
/*
原创作者:清风不渡
博客地址:https://blog.csdn.net/WXKKang
*/
 public static void main(String[] args){
 	System.out.println("还有三天就是祖国母亲的七十周年纪念日了!");
 	System.out.println("我现在不想工作!");
 	System.out.println("不想学习!");
 	System.out.println("只想祝我伟大的祖国母亲生日快乐!");
 }
}

运行效果:
顺序结构示例代码
我们可以看到,代码中的输出语句按照代码的顺序被逐一打印出来,它是有顺序的并且它的顺序就是编写的代码顺序,而这就是所谓的顺序语句结构,是不是很容易理解呢??

2、选择结构

我们可以联想一下,当程序执行Java代码的时候,就像是一个人在读一篇”文章“;那么,我们是否可以选择性的去读呢,如果我”喜欢“这段文章,我就去读这一段,如果我喜欢下下一段文章,那么我是否可以跳过这段文章去读那一篇我喜欢的文章呢?答案肯定是可以的嘛。

当然,程序去执行代码的时候肯定不是因为”喜欢“而去读取的哟,那是什么呢?肯定是”需要“呀,当程序需要执行这段代码的时候执行这段代码,它就会跳过不需要运行的代码,而选择自己需要运行的代码去运行他们,这样是不是方便了很多呢?

通过了我们的联想之后,我们来认真学习一下选择结构语句吧!

选择结构也叫分支结构,它可根据判断条件来选择需执行的分支,常用的分支结构有两种:

  1. if…else
    通过if后的关系表达式进行判断,通常是一个二选一的分支
  2. switch…case
    这是一个多路分支语句,根据选择值的不同,选择不同的分支进行执行

那么,现在我们就来认真学习它们吧,首先是if语句,一般情况下,它有三种写法,现在就来一 一学习吧:

(1)简单的if语句

(1)语法

if(判断条件){
	如果符合条件执行的代码;
}

通俗的来说,就是当小括号内的判断条件满足(即结果为true)的时候,就执行大括号内的代码;如果小括号内的条件不满足(即结果为false)的时候,则跳过大括号内的代码,直接遵从顺序结构语句执行这段代码之后的代码

话不多说,我们直接上代码来使用一下它,思想就会变得很明朗了:

public class Demo{
	public static void main(String[] args){
		if(1>2){
			System.out.println("这是if大括号内的代码");
		}
		System.out.println("这是if大括号外的代码");
	}
}

运行之后我们会发现,if大括号内部的代码没有被执行,而是执行了下面的代码,这是为什么呢?显而易见,是因为1不大于2,所以小括号里的条件没有满足(即结果为false),这样就不会执行if大括号内的代码,而是直接跳过了这段代码。当我们把1>2改成1<2的时候,不只是if大括号外面的代码会执行,它里面的也会执行,这就是简单的if选择语句。

(2)if…else 语句

语法:

if(判断条件){
	满足判断条件时执行的代码;
}else{
	不满足判断条件时执行的条件;
}

有了上面的思想之后,这个语句就变得好理解了,不过是当满足判断条件的时候执行与if相对应的大括号里的代码,否则(也就是不满足判断条件)的时候执行与else相对应的大括号里的代码而已,废话不多说,咱直接上代码瞧瞧:

  • if…else语句例子
public class Demo{
	/*
	原创作者:清风不渡
	博客地址:https://blog.csdn.net/WXKKang
	*/
	public static void main(String[] args){
		int i = 0;
		if(i>2){
			System.out.println("这是与if相对应的大括号里的内容");
		}else{
			System.out.println("这是与else相对应的大括号里的内容");
		}
	}
}

运行结果:
if...else运行结果
当程序运行之后,执行了与else对应的大括号里的内容,而与if对应的大括号里的内容则没有被执行,这是为什么呢?很显然是因为1不大于2嘛,这样,小括号里的判断语句没有满足(即为false),这样就跳过了与if对应的大括号里的内容,那么当小括号里的判断条件满足的话,会发生什么事呢?

通过上面的例子,我们更加理解了if…else选择语句,现在我们就可以根据需要写出一段具有两个分支的代码了,那么,当我们对于一件事的判断有几种情况的话,是不是就要写很多很多if…else语句呢?答案肯定的不是的呀,那么如何解决这个问题呢,在这种情况之下,我们的多分支if语句就横空出世了 ~ ~

(3)多分支if语句

让我们先来看看语法思考一下吧:

if(判断条件1){
	满足判断条件1时执行的代码;
}else if(判断条件2){
	满足判断条件2时执行的代码;
}else if(判断条件3){
	满足判断条件3时执行的代码;
}else{
	以上判断条件都不满足的时候执行的代码;
}

有了上面两种if语句的基础之后,我相信理解这一部分内容就不是事儿了,无非就是多加了几个判断条件实现多个选择嘛,理解了之后让我们来写个例子练习一下

  • if多分支语句例子

小明周末的时间安排是周六看电影,周日去游乐场,写入如下程序:

public class Demo{
	/*
	原创作者:清风不渡
	博客地址:https://blog.csdn.net/WXKKang
	*/
	public static void main(){
		int day = 1;
		if(day==6){
			System.out.println("今天的天气真适合看电影");
		}else if(day==7){
			System.out.println("今天是要去游乐场玩哦");
		}else if(day>=1&&day<=5){
			System.out.println("今天不能去玩哦,要上课的");
		}else{
			System.out.println("地球上之后星期一到星期天哦");
		}
	}
}

那么,对于这个问题只能使用这种方法呢,肯定不是呀,我觉得Java是一个特别灵活的语言,同一个问题都有不同的方法去解决,那么,我们再学习一种多分支选择语句吧,那就是switch…case语句了

(4)switch…case语句

概念:switch…case语句提供多路分支,用于选择的数据类型可以是整数、Char、枚举类型。

switch(表达式){
	case 取值1:
		执行语句;
		breakcase 取值2:
		执行语句;
		break...
	default:
		当得到的值上面都没有时执行的代码;
		break;
}

switch语句特点:

  1. switch语句的选择类型支持数值,如byte、short、int、char。
  2. case与default之间的执行顺序:先判断所有的case,若没有匹配的case则执行default
  3. switch语句的停止条件是遇到了break关键字或者switch结束的大括号
  4. 如果匹配的case或者default没有break,那么程序将会继续向下执行,直到遇见break或着switch结尾结束
  5. case中的值必须与switch表达式的值具有相同的数据类型,而且case后跟的必须是常量而不能是变量
  6. break最好不要省略,不然将会出现:case穿透

注:没有default的switch语句是不规范或者是有问题的,最好不要这样写,或者说:所有的switch语句都要定义default分支

  • break语句
    在每个case分支之后,通常都要写break语句,这将跳出switch语句,否则的话程序会顺序执行,这就是所谓的case穿透

那么我们可以利用case穿透吗,当然是可以的,虽然它本义上是一个不好的现象,但是聪明的程序员会将任何有用的东西利用,这样,我们来写一个例子理解一下吧

例子:通过输入的月份数来判断是哪一个季度(2月、3月、4月为春季,5月、6月、7月为夏季,8月、9月、10月为秋季,11月、12月、1月为冬季)

正常情况下,我们是这样写的:

public class Demo {
	/*
	原创作者:清风不渡
	博客地址:https://blog.csdn.net/WXKKang
	*/
	public static void main(String[] args) {
		int month = 3;
		switch (month) {
		case 1:
			System.out.println(month + "月是冬季");
			break;
		case 2:
			System.out.println(month + "月是春季");
			break;
		case 3:
			System.out.println(month + "月是春季");
			break;
		case 4:
			System.out.println(month + "月是春季");
			break;
		case 5:
			System.out.println(month + "月是夏季");
			break;
		case 6:
			System.out.println(month + "月是夏季");
			break;
		case 7:
			System.out.println(month + "月是夏季");
			break;
		case 8:
			System.out.println(month + "月是秋季");
			break;
		case 9:
			System.out.println(month + "月是秋季");
			break;
		case 10:
			System.out.println(month + "月是秋季");
			break;
		case 11:
			System.out.println(month + "月是冬季");
			break;
		case 12:
			System.out.println(month + "月是冬季");
			break;
		default:
			System.out.println("地球上只有十二个月哟");
			break;
		}
	}
}

很多人觉得,哇这也太麻烦了吧,这么麻烦的话学这个还有什么意思,停停停,不是告诉你了嘛,聪明的程序员会将任何有用的东西利用(划重点),现在,我们就将case穿透利用起来,写一个比上面稍简单的代码来实现它吧。

利用了case穿透后的代码是这个样子的:

public class Demo {
	/*
	原创作者:清风不渡
	博客地址:https://blog.csdn.net/WXKKang
	*/
	public static void main(String[] args) {
		int month = 3;
		switch (month) {
		case 2:
		case 3:
		case 4:
			System.out.println(month + "月是春季");
			break;
		case 5:
		case 6:
		case 7:
			System.out.println(month + "月是夏季");
			break;
		case 8:
		case 9:
		case 10:
			System.out.println(month + "月是秋季");
			break;
		case 11:
		case 12:
		case 1:
			System.out.println(month + "月是冬季");
			break;
		default:
			System.out.println("地球上只有十二个月哟");
		}
	}
}

这样子是不是就简单多了呢,所以说,任何事物都是有两面性的,虽然它是一个“事故”,但是,我们也可以将它利用起来呀,是不是觉得很有趣呢,当然,既然同样是选择,那么if语句是否也可以解决它呢,答案当然是可以的,大家一起动动脑吧 ~ ~,而我要去睡觉觉咯 ~ ~

我还是那个java界的小学生,一起努力吧!!
欢迎各位看官评论哟 ~ ~ 小生在此谢过了 ~ ~

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值