java学习基础(二)

语句(顺序 选择 判断 循环)

一、顺序结构
(1)程序从上往下,从左往右依次执行。
二、判断结构(if语句)
1、第一种格式
if(条件表达式–只有两个结果(true/false)){
执行语句;
}
A:执行流程
首先判断条件表达式,如果值为true,那么就执行if语句所控制的语句体。
如果为false,就不执行语句体。
B:条件表达式无论简单(a>b)或者复杂((a+b+c)>(a+b)),其结果是boolean值。true或者false。如果是其他的值,则错误。
注意问题:
A:if(条件表达式)其后没有分号。
一般来说,有"{}“就没有”;",有";“就没有”{}"
B:if语句所控制的语句如果是一条语句,我们可以不写大括号;
如果控制的是两条以上的语句,必须加大括号。
if语句的控制体没有加大括号是其后跟的一条语句。
建议:永远加上大括号。避免不必要的错误。
2、第二种格式
if(条件表达式){
执行语句1;
}else{ //else 否则的意思。
执行语句2;
}
A:执行流程
首先判断条件表达式,如果值为true,那么就执行语句1。
如果为false,就执行语句2。
B:if可以单用,第一种格式。
有else必须有if。
C:发现if语句的第二种格式和三元运算符相似。
区别:
(1)三元运算符是if语句的简写形式。
(2)所有的三元运算符都可以用if语句改写。反之不行。
为什么?因为三元运算符是一个运算符,计算完后,必有结果。
3、第三种格式
if(条件表达式){
执行语句1;
}else if (条件表达式){
执行语句2;
}
……
else{
执行语句n;
}
A:else可以省略,但是不建议。
(1)它是第三种格式的组成部分。
(2)你有可能没有判断完所有的情况,我们就可以使用else来完成特殊情况。
B:执行流程
虽然格式很长,但是,它整体只是一条语句。
不断的判断,只要有满足条件的条件表达式,就执行该判断处控制的语句体,执行完后。语句结束。
当都不满足时候,执行else。
C:if后面必须有条件表达式。
else后面没有条件表达式。
D:if语句的嵌套
if语句里面的语句体还是if语句。
4、if的应用
A:给定一个数值,请打印出对应的星期?。
B:一年有四季,每季三个月
春:3,4,5
夏:6,7,8
秋:9,10,11
冬:12,1,2
给定一个月份,输出对应的季节。
C:if语句什么时候使用?
***对几个值进行判断的时候
****
1,2,3,4,5,6,7
if(x1)
{}
else if(x
2)
{}

***对结果是boolean类型的进行判断
****
if(x>3)
{}
else if(x==3)
{}
else if(x??)
{}

***对范围进行判断
****
if(x>90 && x<100)
{}
else if(x>80 && x<=90)
{}

三、选择结构
1、基本格式
switch(表达式){
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
……
default:
执行语句;
break;
}
2、针对基本格式的说明
A:switch 用于定义选择结构范围。
表达式:被选择的结果,该表达式只能有四种类型:byte,short,int,char
注意:在JDK5以后,还支持一个叫做枚举的类型(enum);JDK7以后,还支持String类型。
B:case :被选择的答案
C:break:跳出,结束switch语句。
D:default:默认的意思。当所有的case都不匹配时,执行default里面的内容。相当于if语句中的else。
3、switch语句细节

  • A:switch语句何时结束?

     a:执行语句遇到break。
     b:执行到语句的结尾。
    
  • B:最后一个break可不可以不要呢?可以。

    A.中间的break可不可以不要呢?可以。但是结果可能不是想要的。所以一般中间	的break不要省略。
    B.面试一般考省略中间break的情形
    
  • C:default和case前后顺序有关系吗?

     A:执行上-- 执行上有关系,先执行所有case,当所有的case都不满足时,再执行default。
     B:写法上-- 没有关系 建议按照基本格式写。default放最后。
    
  • D:switch语句中,break省略的情况有没有用呢?有。当多个答案针对同一处理。

4、程序的流程:
先判断case的取值

  • A:如果case取值与表达式匹配,执行该case下的语句,若有break则程序结束,若没有,则程序继续往下执行,此时,不再判断case取值,直至遇到break或者至大括号处,程序结束

  • B:如果case取值与表达式不匹配,则不执行与之对应的语句,程序继续执行A

  • C:如果所有的case取值都与表达式不匹配,程序将执行default下的语句

注意:当default语句置于非末尾处并且所有case值都不匹配时,程序执行default语句后,有beak将
结束程序,否则继续向下顺序执行,直至遇到break或者大括号,程序才结束。

If和switch语句的应用场景:
如果是对具体的个数的数值进行判断
两种皆可,建议使用switch,因为它会将被选答案加载进内存,选择效率会稍高。
如果是对区间进行判断,用if
如果运算结果是Boolean类型,用if.
四、循环结构
1、while循环的格式
while(条件表达式){
执行语句;
}

  • A:执行流程:

     a:首先判断条件表达式,如果结果为true,就执行while循环控制的语句。否则,不执行循环体。
     b:循环体语句执行后,在回到A。知道条件不成立。
        Ctrl+C 在DOS窗口中强制结束程序。
    
  • B:while(条件表达式)不要加分号,否则结果你理解不了。

  • C:while所控制的语句是一条的时候,也可以省略大括号,但是不建议。

2、do while循环的格式
do{
执行语句;
}while(条件表达式);
A;执行流程:
a:先执行一次循环体。
b:再判断条件表达式。如果值为true,就返回A继续。否则,结束循环。
B:与while的区别:
a:while后面有分号
b:do while循环至少执行一次循环体,while循环有可能一次都不执行。
3、for循环的格式
for(初始化表达式;循环条件表达式;循环后操作表达式){
执行语句;(循环体)
}
执行流程:
A:首先进行初始化表达式的执行。
B:其次,循环条件表达式的判断:
如果条件为true,则进循环体执行语句。
如果条件为false,则结束循环。
C:当循环体执行完毕后,就会执行循环后的操作表达式。
在接下来回到B步骤继续,直到结束循环。
D:初始化表达式只执行一次。
循环条件表达式执行一次或多次。
循环后的操作表达式零次或多次。
E;while循环和for循环时等价的。
变量的生命周期不一样。一般来说,只在它所属的{}内有效。
当你定义的初始化变量只为递增而存在,那么就用for循环,效率较高。
当你定义的初始化变量,操作完后,还得继续使用,用while循环。
for( ; ; ){}//for语句的最简单无限循环格式-----条件表达式默认为true
while(true){}//while语句的最简单无限循环格式
int x = 1;
for(System.out.println(“a”);x<3;System.out.println(“c”)){
System.out.println(“d”);
}
//a d c d c
4、循环嵌套
A:外循环执行一次,内循环执行多次。
B:如果是打印形状等,外循环控制行数,内循环控制列数。
C:举例
**打印正三角 内循环的循环条件表达式变化
内循环的循环条件表达式随着外循环的变化而变化。
外:(int x=0;x<5;x++)
内: (int y=0;y<=x;y++)
**打印倒三角 内循环的初始化表达式变化
内循环的初始化表达式随着外循环的变化而变化。
外:(int x=0;x<5;x++)
内: (int y=x;y<5;y++)
**打印33乘法表
5、累加思想与计数器思想
A:通过变量记录每次 变化的结果;通过循环进行累加动作。
B:通过变量记录数据的状态变化,也需通过循环完成。
计数器的条件根据实际情况而定
注意:一定要注意哪些语句参与循环,哪些语句不参与循环。

五、continue和break异同
(1):都有自己的应用范围
A:continue用于循环
B:break用于选择结构和循环结构
单独使用:他们单独使用时,无意义,并且下面不可以有语句,因为执行不到。
(2):break结束当前所在循环
continue结束本次循环,进入下一次循环。 标号可以改变跳出的循环。但是一般不用

六、变量和语句的引用场景
1、什么时候使用变量?
** 当我们使用的数据是一个不确定的值的时候
2、什么时候使用if语句?
** 当进行判断的数值较多,结果是boolean类型或者是一个范围的时候,我们使用if 语句。if语句相对与switch语句范围更广。
3、什么时候使用switch语句?
** 如果用于判断(选择)的数值不多,而且符合byte short int char 这四种类型时我们建 议使用switch语句,虽然if也能够完成,但不及switch语句效率高
4、什么时候使用循环语句?
**当要对某些语句执行很多次的时候,我们就要使用循环语句。
while:如果在执行完循环体后还需用到循环语句中的变量时,我们就要使用while语句 除此之外,可以用for替换。
for: 用于控制循环的增量定于在语句中,该变量只在for语句中有效,for语句执行完成后,该变量在内存中被释放。如果仅仅只是定义循环增量,用for更为合适因为while定义的变量在执行完循环体后,还存在于内存中,比较浪费资源
**变量有自己的作用域
break结束当前所在循环,continue结束本次循环,进入下一次循环。

函数和数组

**一、函数 **
1、定义:
就是完成一个特定功能的一段小程序。
A:以后写代码的时候,就得注意了:
**我们在也不用把所有的代码都放到主函数里面去了。
**主函数只负责调用我们自定义的函数。
B:函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…){
执行语句;
return 返回值;
}
说明:
**修饰符---- 修饰函数的。现在不用管,后面专门讲。现在统一写为: public static
**返回值类型---- 函数本身是具有特定功能的一段独立的小程序,这个功能在运算完或者执行完之后,肯定有结果,那么结果到底是什么类型的呢,我们需要在函数上标示一下。
**函数名---- 为了方便使用定义好的函数,我们就给它起个名字。
**参数类型----
***形式参数----接受实际参数的变量
***实际参数----实际使用的数值
**执行语句----函数是用于完成一段特定功能的,有可能这段功能需要多条语句执行,这就有了执行语句。
**return---- 就是将执行的结果返回回来的一个关键字。其后跟的是返回的结果。
2、特点

  • A:定义函数可以将功能代码进行封装,便于对该功能进行复用。函数的出现提高了代码的复用性。

  • B:自定义函数只有被调用才会被执行。

  • C:函数中只能调用函数,不可以在函数内部定义函数。因为函数是平级的。

  • D:被调用时:

     	**有明确返回类型的函数:	
     		***可以单独使用,但是没有意义;
     		***可以赋值给一个和返回类型对应的变量,然后输出变量;
     		***可以直接在输出语句中直接使用;
     	**void返回类型的函数:
     		**只能单独调用。不能用于打印
    

注意:返回值类型和参数列表中参数类型没有关系!
定义功能,功能中需要定义什么就定义什么,不需要的就不要定义。

3、函数的应用
A:如何自定义函数--------两个明确
**明确函数的返回值类型
**明确参数列表(形参的类型及个数)
B:两个整数的求和
public class Sum {
public static void main(String[] args) {
int sum = getSum(3,4);
System.out.println(sum);
}
//返回值类型:int,未知内容:int a,int b
public static int getSum(int a,int b){
return a+b;
}
}
C:取得两个整数中较大的值
public class Max {
public static void main(String[] args) {
int max = getMax(3,5);
System.out.println(max);
}
//返回值类型:int,未知内容:int a,int b
public static int getMax(int a,int b){
return a>b?a:b;
}
}
D:比较两个整数是否相等
public class Compare {
public static void main(String[] args) {
boolean b = isEquals(3, 4);
System.out.println(b);
}
//返回值类型:boolean,未知内容:int a,int b
public static boolean isEquals(int a,int b){
return a==b;
}
}
E:取得三个整数中较大的值
public class Max {
public static void main(String[] args) {
int max = getMax(3,5,7);
System.out.println(max);
}
//返回值类型:int,未知内容:int a,int b,int c
public static int getMax(int a,int b,int c){
int temp=a>b?a:b;
int max =temp>c?temp:c;
return max;
}
}
F:打印nn乘法表
public class NnChengFaBiao {
public static void main(String[] args) {
printNnchengfabiao(6);
}
//返回值类型:void,未知内容:int n
public static void printNnchengfabiao(int n){
for(int x=1;x<=n;x++){
for(int y =1;y<=x;y++){
System.out.print(y+""+x+"="+xy+"\t");
}
System.out.println();
}
}
}
4.函数的重载
A:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
B:函数的功能一样,仅仅是参与运算的未知内容不同时,
可以定义多个函数,却使用统一函数名称,这样方便阅读。
在调用时,虚拟机通过参数列表的不同来区分同名函数。
C:好处:方便阅读,优化了程序设计。
特点:与返回值类型无关。
D:我们以后如何判断几个函数是否是重载的呢?
**函数名相同
**参数列表不同(个数和类型)
二、数组
1.数组的定义
存储的是同一种数据类型的数据的集合,它是一个容器。
2.数组的格式(一维数组)
第一种格式:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
**左边:
int 表示数组中元素的数据类型
[] 表示数组
arr 数组的名字
简单说:定义了一个int类型的数组,名称是arr。
**右边:
new 创建一个实体
实体:存储一个数的东西叫变量。存到多个数据的东西叫实体。
new:class是用来定义一个类的,new是用来创建一个实体的。
int 表示数组中元素的数据类型
[] 表示数组
5 表示此数组中有5个元素
简单说:创建一个int类型的数组实体,该实体中可以存储5个int类型的元素。
第二种格式:
元素类型[] 数组名 = new 元素类型[]{元素1,元素2,……};
示例:int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};

Tips:当明确数组元素时,建议使用第二种比较方便

注意:定义数组时,不要忘记指定数组的长度和名称;在指定了数组长度的同时,不可列出其元素内容,因为可能出现元素类型与数组定义类型不一致。[
]可以放在数组名的左边,也可以放在右边。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值