黑马程序员03——基础2

来源:互联网 发布:大逃杀新手知乎 编辑:程序博客网 时间:2024/06/01 12:05

------- android培训、java培训、期待与您交流! ----------


1:if语句
(1)用于做判断使用的。
  常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。
(2)格式:
A:第一种格式
if(条件表达式)
{
语句体;
}


执行流程:
如果条件表达式为true,就执行语句体;
否则,什么都不执行。


B:第二种格式
if(条件表达式)
{
语句体1;
}
else
{
语句体2;
}




执行流程:
如果条件表达式为true,就执行语句体1;
否则,就执行语句体2;


特殊:
可以和条件表达式在某些情况下进行替换。
一般是在赋值的情况下可以。


举例:
获取两个数中的最大值。

C:第三种格式
if(条件表达式1)
{
语句体1;
}
else if(条件表达式2)
{
语句体2;
}
...
else
{
语句体n;
}


执行流程:
如果条件表达式1为true,就执行语句体1;
如果条件表达式2为true,就执行语句体2;
...
否则,就执行语句体n;

D:注意事项
a:什么时候时候哪一种if语句。
第一种格式在判断条件为一种情况下使用。
第二种格式在判断条件为两种情况下使用。
第三种格式在判断条件为多种情况下使用。
b:每一种if语句其实都是一个整体,如果有地方执行了,
 其他的就不执行了。
c:如果if或者else里面控制的语句体是一条语句,是可以省略大括号的,
 但是,如果是控制多条语句,就必须写上大括号。
 建议:永远写上大括号。
d:大括号和分号一般不同时出现。

E:作用域
所有变量的定义只在它所属的大括号内有效。
(3)案例:
A:根据键盘录入的成绩,判断等级。
B:根据键盘录入的月份,输出该月份所对应的季节。

/*if语句是可以嵌套if语句的通过笔试题来判断标准150的卷对于软件工程师:高级软件工程师   90中级软件工程师中级三等 80中级二等 70中级一等 60初级软件工程师初级三等 50初级二等 40初级一等 30*/class  IfDemo3{public static void main(String[] args) {//来一个变量来记录分数int number = 36;if(number>=90&&number<=150){System.out.print("高级软件工程师");}else if(number>=60&&number<=89){System.out.print("中级软件工程师");if(number>=60&&number<=69){System.out.print("一等");}else if(number>=70&&number<=79){System.out.print("二等");}else{System.out.print("三等");}}else if(number>=30&&number<=59){System.out.print("初级软件工程师");if(number>=30&&number<=39){System.out.print("一等");}else if(number>=40&&number<=49){System.out.print("二等");}else{System.out.print("三等");}}else if(number>=0&&number<=29){System.out.print("需要继续学习!");}else {System.out.print("您输入的分数有误");}}}



4:switch语句
(1)用于做选择使用的。一般用于几个常量的判断。
switch会把几个常量值直接加载到内存,在判断的时候,效率要比if高。
所以,针对几个常量的判断,一般选择switch语句。
(2)switch语句的格式:
switch(表达式)//byte,short,int,char,String
{
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
...
default:
语句体n;
break;
}


A:针对格式的解释
switch:表示这里使用的是switch语句,后面跟的是选项。
表达式:byte,short,int,char
       JDK5以后可以是枚举(就业班讲)
JDK7以后可以是字符串(后面讲)
case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。
    case后面的值是不能够重复的。
break:
switch语句执行到这里,就结束了。
default:
当所有的case和表达式都不匹配的时候,就走default的内容。
它相当于if语句的else。一般不建议省略。
B:执行流程
进入switch语句后,就会根据表达式的值去找对应的case值。
如果最终没有找到,那么,就执行default的内容。

C:注意事项:
a:default整体可以省略吗?
可以,但是不建议。
b:default的位置可以放到前面吗?
可以,但是不建议。
c:break可以省略吗?
可以,但是不建议。
default在最后,break是可以省略的。
case后面的break可以省略,但是结果可能有问题。
d:switch语句什么时候结束呢?
就是遇到break或者执行到程序的末尾。
/*输入数字1-7,打印星期一到日switch格式:switch(表达式){case 取值1:执行语句;break;case 取值2:执行语句;break;…...default:执行语句;break;  }default:除了所有的case情况之外要运行的语句case:变量可能的值,不能是范围,并且只在第一次起作用,再判断不再起作用break:一遇到break就跳出switch语句在switch后边可有byte,short,int,char,String(JDK7),enum(就业班内容)case的判断不存在先后顺序。default可以放到最前边,但是通常放在最后。if与switch的使用情况:如果变量是一些具体的值时,使用switch语句如果变量是一个区间,或多个区间时,使用if语句if后边加布尔值switch后边加需要判断的值在循环中,通常要与if语句配合,不使用switch语句*/class  SwitchDemo{public static void main(String[] args) {int week = 8;switch(week){default:System.out.println("您输入的不是地球的星期");break;case 1:System.out.println("星期"+week);break;case 2:System.out.println("星期"+week);break;case 3:System.out.println("星期"+week);break;case 4:System.out.println("星期"+week);break;case 5:System.out.println("星期"+week);break;case 6:System.out.println("星期"+week);break;case 7:System.out.println("星期日");break;    }System.out.println("Hello World!");}}




5:Scanner的使用
(1)Scanner是JDK5以后设计的用来接收键盘录入数据使用的。
(2)目前我们要通过键盘录入int类型数据,必须按照如下步骤:
A:导包
import java.util.Scanner;
B:创建对象,封装键盘录入
Scanner $$$$ = new Scanner(System.in);
C:调用方法,获取数据

int number = $$$$.nextInt();


6:循环语句

6.1 for循环

for(变量初始化;循环判断条件;循环变量变化){
执行循环体
}
for(1;2;4){
    3
}
1可以省略,需要放在循环前
2不可以省略,省略会出现死循环
3省略没有意义,不可以省略
4可以省略,放在循环体最后

(1)如果我们发现有很多重复的内容的时候,就该考虑使用循环改进代码。
  让我们代码看起来简洁了。
(2)循环的组成
A:循环体,就是要做的事情。
B:初始化条件。一般定义的是一个初始变量
C:判断条件。用于控制循环的结束。
D:变量的变化。一般都是一个++/--操作。
(3)循环的分类:
A:for
for(初始化条件;判断条件;控制条件)
{
循环体;
}


执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。


B:while
初始化条件;
while(判断条件)
{
循环体;
控制条件;
}

执行流程:
a:先执行初始化条件;
b:执行判断条件
c:根据判断条件的返回值:
true:执行循环体。
false:就结束循环。
d:最后执行控制条件。返回到b继续。


C:do...while(了解)
初始化条件;
do{
循环体;
控制条件;
}while(判断条件);


执行流程:
a:先执行初始化条件;
b:执行循环体和控制条件;
c:执行判断条件
d:根据返回值
true:返回b。
false:就结束循环。


注意:
a:一般使用for循环或者while循环。而且这两种循环是可以等价转换的。
b:do...while循环至少执行一次循环体。


*(4)案例:(掌握)
A:请在控制台输出5次"我爱Java"
B:请在控制台输出1-10的数据。
C:求1-10的和,改进位求1-100的和。
D:求1-100之间偶数的和。
E:求5的阶乘。
F:水仙花。
G:统计叠多少次,能叠成珠穆朗玛峰的高度。
(5)循环嵌套:(理解)
A:也就是循环语句的循环体是一个循环语句。
B:通过输出
****
****
****
 我们不断的改进。发现了一个问题:
外循环控制行数,内循环控制列数。
(6)案例:
A:正三角形
内循环的判断条件:y<=x


for(int x=0; x<5; x++)
{
for(int y=0; y<=x; y++)
{
System.out.print("*");
}
System.out.println();
}


B:倒三角形


内循环的初始化条件:y=x


for(int x=0; x<5; x++)
{
for(int y=x; y<5; y++)
{
System.out.print("*");
}
System.out.println();
}


C:九九乘法表(掌握)



6.2:break和continue(掌握)
(1)有些时候,我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字:
break和continue
(2)特点:
A:它们都必须在循环中(break还可以在switch中。)。
 一般在循环的判断中。
B:如果单独使用break和continue,后面是不能有语句的。
(3)区别:
A:break 结束当前循环。
B:continue 结束本次循环,进入下一次循环。
(4)如何退出嵌套循环:(了解)
用带标签的循环。
格式:
标签名:for(){
for(){
if()
{
break 标签名;
}
}
}


6.3:应用场景
(1)变量:发现有一个数据是变化的时候,就要用变量。
(2)if语句:如果是一个范围的判断,boolean类型的表达式的判断,几个数据的判断。
(3)switch语句:几个数据的判断。一般这种情况,有限选择switch。
(4)for语句:如果次数或者范围特别明确。(水仙花)
(5)while语句:如果次数或者范围不明确。(珠穆朗玛峰)


6.4:函数的定义格式:
把每个组件的功能说清楚即可

/*for循环格式的进一步说明:1:变量初始化可以省略,实际上是放在了for循环前2:循环变量变化也可以省略,循环变量可以在循环体内最后运行(循环变量的变化)3:循环判断条件不可以省略,省略后即变成死循环(在不考虑直接跳出循环的情况下)*/class  ForDemo2{public static void main(String[] args) {//打印5000个*int x = 0;/*for(;x<5000;){System.out.print(x);System.out.print("*");x++;}for(;;){x++;System.out.print(x);System.out.print("*");}System.out.println("for循环完成后的X值为:"+x);*/for(;x<5000;){}//System.out.println();System.out.println("for循环完成后的X值为:"+x);}}


1:函数(掌握)

(1)定义在类中,有特定功能的一段小程序,可以独立运行。
(2)函数的格式:
修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...)
{
函数体;
reutrn 返回值;
}


A:修饰符 public static
B:返回值类型 根据需求,定义返回值类型
C:函数名 其实就是函数的名称,方便我们调用。符合小驼峰式命名规则。
D:参数
形参类型 数据类型
形式参数 就是接收实际参数的变量
实际参数 就是实际参与操作的变量(常量)
E:函数体 就是按照正常的逻辑完成功能的代码。
F:返回值 就是程序的最终结果
G:return 返回值 哪里调用程序,return就把结果返回到哪里。
(3)函数的特点:
A:函数与函数之间是平级关系。不能在函数中定义函数。
B:运行特点 函数只有被调用才执行。
(4)案例:
有明确返回值的例子:


A:求两个数据的和
B:求两个数据的最大值
C:比较两个数是否相等

void类型例子:


A:nn乘法表
B:根据给定的行和列输出一个*组成的长方形
(5)函数的调用
1、函数调用顺序与定义顺序无关
2、可以多层调用//放到面向对象时给大家介绍
3、具有返回值的函数,我们调用都会将值赋值给一个变量
4、单独调用一个函数时,通常这个函数是没有返回值的。
(6)函数重载
A:函数名相同,参数列表不同(个数不同,对应的类型不同)。
 与返回值类型无关。


B:举例:
public static int sum(int a,int b){...}
public static int sum(int a,int b,int c){...}
public static int sum(float a,float b){...}


2:数组(掌握)
(1)数组是存储同一种类型的多个元素的容器。
(2)好处:数组中的元素会被自动从0开始编号,方便我们获取。
(3)格式:
A:int[] arr = new int[3];
B:int arr[] = new int[3];
C:int[] arr = new int[]{1,2,3};
D:int[] arr = {1,2,3};


推荐A和D。
(暂留)(4)Java内存图:
A:栈 存储局部变量使用。
使用完毕,立马消失。


B:堆 所有new出来的都在堆里面。
a:每一个实体都有地址值
b:每一个实体内的内容都有默认值
整数:0
浮点数:0.0
字符:'\u0000'
布尔:false
c:在垃圾回收器空闲的时候被回收。


C:方法区
D:本地方法区
E:寄存器
(5)操作:(请自己补齐)


数组的索引。
数组的长度。
数组名.length


A:数组的遍历


B:数组获取最值
(6)二维数组:
格式:
A:int[][] arr = new int[3][2];
B:int[][] arr = new int[3][];
C:int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};

应用:遍历求和。
0 0