一、方法
1、方法的概述
方法就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
2、方法的定义
定义格式:
修饰符 返回值类型 方法名 (参数列表){
代码...
return ;
}
定义格式解释:
修饰符: 目前固定写法 public static 。
返回值类型: 目前固定写法 void
方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法。
参数列表: 目前无参数, 带有参数的方法在后面的课程讲解。
return:方法结束。因为返回值类型是void,方法大括号内的return可以不写。
public static void methodName() {
System.out.println("这是一个方法");
}
3、方法的调用
方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中,直接写要调用的方法名字就可以调用了。
public static void main(String[] args) {
//调用定义的方法method
method();
}
//定义方法,被main方法调用
public static void method() {
System.out.println("自己定义的方法,需要被main调用运行");
}
4、调用练习
public static void main(String[] args) {
//调用定义的方法operator
operator();
}
//定义方法,方法中定义三元运算符
public static void operator() {
int i = 0;
i = (1 == 2 ? 100:200);
System.out.println(i);
int j = 0;
j = (3 <= 4 ? 500:600);
System.out.println(j);
}
5 注意事项
public class Demo {
public static void main(String[] args){
}
//正确写法,类中,main方法外面可以定义方法
public static void method(){}
}
public class Demo {
public static void main(String[] args){
//错误写法,一个方法不能定义在另一方法内部
public static void method(){}
}
}
练习
public class Demo11Method {
public static void main(String[] args) {
farmer(); // 调用农民的方法
seller(); // 调用小商贩的方法
cook(); // 调用厨子的方法
me(); // 调用我自己的方法
}
// 厨子
public static void cook() {
System.out.println("洗菜");
System.out.println("切菜");
System.out.println("炒菜");
System.out.println("装盘");
}
// 我
public static void me() {
System.out.println("吃");
}
// 小商贩
public static void seller() {
System.out.println("运输到农贸市场");
System.out.println("抬高价格");
System.out.println("吆喝");
System.out.println("卖给厨子");
}
// 农民伯伯
public static void farmer() {
System.out.println("播种");
System.out.println("浇水");
System.out.println("施肥");
System.out.println("除虫");
System.out.println("收割");
System.out.println("卖给小商贩");
}
}
二、判断语句
2.1 判断语句1--if
if ( 关系表达式 ) {语句体 ;}
首先判断关系表达式看其结果是 true 还是 false如果是 true 就执行语句体如果是 false 就不执行语句体
// 单if语句
public class Demo02If {
public static void main(String[] args) {
System.out.println("今天天气不错,正在压马路……突然发现一个快乐的地方:网吧");
int age = 19;
if (age >= 18) {
System.out.println("进入网吧,开始high!");
System.out.println("遇到了一群猪队友,开始骂街。");
System.out.println("感觉不爽,结账走人。");
}
System.out.println("回家吃饭");
}
}
2.2 判断语句2--if...else
if ( 关系表达式 ) {语句体1 ;} else {语句体2 ;}
首先判断关系表达式看其结果是 true 还是 false如果是 true 就执行语句体 1如果是 false 就执行语句体 2
package day03;
// 标准的if-else语句
public class Demo03IfElse {
public static void main(String[] args) {
int num = 666;
if (num % 2 == 0) { // 如果除以2能够余数为0,说明是偶数
System.out.println("偶数");
} else {
System.out.println("奇数");
}
}
}
2.3 判断语句3--if..else if...else
if ( 判断条件 1 ) {执行语句1 ;} else if ( 判断条件 2 ) {执行语句2 ;}...} else if ( 判断条件 n ) {执行语句n ;} else {执行语句n + 1 ;}
首先判断关系表达式 1 看其结果是 true 还是 false如果是 true 就执行语句体 1如果是 false 就继续判断关系表达式 2 看其结果是 true 还是 false如果是 true 就执行语句体 2如果是 false 就继续判断关系表达式 … 看其结果是 true 还是 false…如果没有任何关系表达式为 true ,就执行语句体 n+1 。
package day03;
// x和y的关系满足如下:
// 如果x >= 3,那么y = 2x + 1;
// 如果-1 < x < 3,那么y = 2x;
// 如果x <= -1,那么y = 2x – 1;
public class Demo04IfElseExt {
public static void main(String[] args) {
int x = -10;
int y;
if (x >= 3) {
y = 2 * x + 1;
} else if (-1 < x && x < 3) {
y = 2 * x;
} else {
y = 2 * x - 1;
}
System.out.println("结果是:" + y);
}
}
练习
package day03;
public class Demo05IfElsePractise {
public static void main(String[] args) {
int score = 120;
if (score >= 90 && score <= 100) {
System.out.println("优秀");
} else if (score >= 80 && score < 90) {
System.out.println("好");
} else if (score >= 70 && score < 80) {
System.out.println("良");
} else if (score >= 60 && score < 70) {
System.out.println("及格");
} else if (score >= 0 && score < 60) {
System.out.println("不及格");
} else { // 单独处理边界之外的不合理情况
System.out.println("数据错误");
}
}
}
2.4 if语句和三元运算符的互换
package day03;
// 题目:使用三元运算符和标准的if-else语句分别实现:取两个数字当中的最大值
public class Demo06Max {
public static void main(String[] args) {
int a = 105;
int b = 20;
// 首先使用三元运算符
int max = a > b ? a : b;
// 使用if语句
// int max;
// if (a > b) {
// max = a;
// } else {
// max = b;
// }
System.out.println("最大值:" + max);
}
}
三、选择语句
3.1 选择语句--switch
switch ( 表达式 ) {case 常量值 1 :语句体1 ;break ;case 常量值 2 :语句体2 ;break ;...default :语句体n + 1 ;break ;}
package day03;
public class Demo07Switch {
public static void main(String[] args) {
int num = 7;
switch (num) {
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;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("数据不合理");
break; // 最后一个break语句可以省略,但是强烈推荐不要省略
}
}
}
switch语句使用的注意事项: 1. 多个case后面的数值不可以重复。 2. switch后面小括号当中只能是下列数据类型: 基本数据类型:byte/short/char/int 引用数据类型:String字符串、enum枚举 3. switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。 “匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”
public class Demo08SwitchNotice {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("你好");
break;
case 2:
System.out.println("我好");
// break;
case 3:
System.out.println("大家好");
break;
default:
System.out.println("他好,我也好。");
break;
} // switch
}
}
四、循环语句
4.1 循环概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
4.2 循环语句1--for
for ( 初始化表达式 ① ; 布尔表达式 ② ; 步进表达式 ④ ){循环体③}
执行顺序:①②③④ > ②③④ > ②③④ … ②不满足为止。①负责完成循环变量初始化②负责判断是否满足循环条件,不满足则跳出循环③具体执行的语句④循环后,循环条件所涉及变量的变化情况
public class Demo09For {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
System.out.println("我错啦!原谅我吧!" + i);
}
System.out.println("程序停止");
}
}
4.3 循环语句2--while
执行顺序:①②③④ > ②③④ > ②③④ … ②不满足为止。①负责完成循环变量初始化。②负责判断是否满足循环条件,不满足则跳出循环。③具体执行的语句。④循环后,循环变量的变化情况。
public class Demo10While {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println("我错啦!" + i);
}
System.out.println("=================");
int i = 1; // 1. 初始化语句
while (i <= 10) { // 2. 条件判断
System.out.println("我错啦!" + i); // 3. 循环体
i++; // 4. 步进语句
}
}
}
4.4 循环语句3--do...while
执行顺序:①③④ > ②③④ > ②③④ … ②不满足为止。①负责完成循环变量初始化。②负责判断是否满足循环条件,不满足则跳出循环。③具体执行的语句④循环后,循环变量的变化情况
public class Demo11DoWhile {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println("原谅你啦!起来吧!地上怪凉!" + i);
}
System.out.println("===============");
int i = 1; // 1. 初始化语句
do {
System.out.println("原谅你啦!起来吧!地上怪凉!" + i); // 3. 循环体
i++; // 4. 步进语句
} while (i <= 10); // 2. 条件判断
}
}
练习题:求出1-100之间的偶数和。
思路:
1. 既然范围已经确定了是1到100之间,那么我就从1、2、3……一直到100这么多数字一个一个进行检查。
2. 总共有100个数字,并非所有数字都能用。必须要是偶数才能用,判断(if语句)偶数:num % 2 == 0
3. 需要一个变量,用来进行累加操作。也就好比是一个存钱罐。
public class Demo12HundredSum {
public static void main(String[] args) {
int sum = 0; // 用来累加的变量
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) { // 如果是偶数
sum += i;
}
}
System.out.println("结果是:" + sum);
}
}
4.5 循环语句的区别
1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。
public class Demo13LoopDifference {
public static void main(String[] args) {
for (int i = 1; i < 0; i++) {
System.out.println("Hello");
}
// System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。
System.out.println("================");
int i = 1;
do {
System.out.println("World");
i++;
} while (i < 0);
// 现在已经超出了do-while循环的范围,我们仍然可以使用变量i
System.out.println(i); // 2
}
}
4.6 跳出语句
break
在选择结构 switch 语句中在循环语句中离开使用场景的存在是没有意义的
break关键字的用法有常见的两种:
1. 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
2. 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。
凡是次数确定的场景多用for循环;否则多用while循环。
public class Demo14Break {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
// 如果希望从第4次开始,后续全都不要了,就要打断循环
if (i == 4) { // 如果当前是第4次
break; // 那么就打断整个循环
}
System.out.println("Hello" + i);
}
}
}
另一种循环控制语句是continue关键字。 一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。
public class Demo15Continue {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 4) { // 如果当前是第4层
continue; // 那么跳过当前次循环,马上开始下一次(第5层)
}
System.out.println(i + "层到了。");
}
}
}
4.7 扩展
永远停不下来的循环,叫做死循环。
死循环的标准格式:
while (true) { 循环体 }
public class Demo16DeadLoop {
public static void main(String[] args) {
while (true) {
System.out.println("I love Java!");
}
// System.out.println("Hello");
}
}
嵌套循环:是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数
for ( 初始化表达式 ① ; 循环条件 ② ; 步进表达式 ⑦ ) {for ( 初始化表达式 ③ ; 循环条件 ④ ; 步进表达式 ⑥ ) {执行语句⑤ ;}}
执行顺序:①②③④⑤⑥ > ④⑤⑥ > ⑦②③④⑤⑥ > ④⑤⑥外循环一次,内循环多次。比如跳绳:一共跳 5 组,每组跳 10 个。 5 组就是外循环, 10 个就是内循环。
public class Demo17LoopHourAndMinute {
public static void main(String[] args) {
for (int hour = 0; hour < 24; hour++) { // 外层控制小时
for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟
System.out.println(hour + "点" + minute + "分");
}
}
}
}