第二周总结

一,循环结构语句

1.for语句

for :使用最多: 普通for循环
格式
for(初始化语句;条件表达式;控制体语句或者步长语句){
循环体语句;
}
执行流程
        1) 初始化语句:给变量赋值 (只执行一次)
        2)然后执行条件表达式,看其是否成立,如果成立,执行的是循环体语句------>再次回到控制体语              句或者步长语句--->变量自增或者自减
        3)再次执行条件表达式,是否成立,成立,继续循环体语句---->再次回到控制体语句或者步长语               句---->变量自增或者自减
        4)一直执行到条件表达式不成立,for循环结束;

2.while语句

while:其次才是这个while
while循环的格式
         经常使用的格式
         初始化语句;
         while(条件表达式){
             循环体语句 ;
             控制体语句或者步长语句;
         }
执行流程:
           首先,先初始化语句,对变量赋值;
           执行条件表达式,是否成立;成立,则执行循环体语句,依次控制体语句进行变量控制
           --->再次判断条件表达式是否成立,成立,执行循环体语句--->控制体语句进行变量控制
           ...
           ...
           当条件表达式不成立,while循环结束;
 
           注意事项:控制体语句不要忘了,否则死循环;

3.do...while语句

do-while
引入两个死循环 :一定要出口条件
for(;;){
循环体;
}

4.for循环的综合运用(for循环嵌套)

for(初始化语句1;条件中表达式1;控制体语句1){ //外层循环
// 循环体语句又是一个for循环for(初始化语句2;条件表达式2;控制体语句2){//内层循环
循环体语句...
}
}

5.死循环

死循环的两种格式
 第一个格式
 for(;;){
 循环体语句;
 }
 第二个格式:while(true){ //死循环格式中使用比较多
 循环体语句;
 }

二,跳转控制语句

break ; looper循环或者switch中用 (中断,结束...)
continue:继续 (循环中用,结束当期循环之后,立即进入下一次循环了)
return ; // 结束方法用的 (很少单独使用, 引入 --Java中的方法(函数))

三,switch语句

格式: switch(表达式或者某个变量值)
{
case 值
1:
语句1;
break ;
case 值2:
语句2:
break ;
...
default:
语句n;
break ;
}
执行流程
switch接收结果,
1)接收的结果和case后面的值1进行对比,成立,执行语句
1,break 结束语句;
2)值1和switch接收的结果不匹配,和值2进行比较,成立,执
行语句2, break,结束语句;*
3)...
如果上面case都不匹配,执行default语句,语句n,break ,结
注意事项:
switch语句中的注意事项也是 (考点)
1)关于switch中的case语句后面只能常量,不能是变量 (体现Java是一种强类型语言)
----前端的javascript:它里面的swtich的case是可以是变量,可是个常量
2)在书写switch语句的标准结构,不忘了break,如果语句中忘了书写break,会出现一个现象:case穿透!
在有的需求里面利用 case穿透 来完成一些需求;
3)关于switch语句的结束条件
        a)要么遇见break结束
        b)程序默认执行到末尾
4)关于default语句可以在switch语句中的任何位置,不影响语句的执行流程;
不管在任何位置,只要case语句都不匹配,执行default;
如果default语句的末尾,break可以省略;
        补充: Math的随机数使用
                
                jdk提供了类:java.lang.Math
                 java.lang包下的类不需要导包
                 针对数学运算的工具类,提供了很多的方法;
                 获取伪随机数,取值范围:[0.0,1.0)
                 public static double random():
                 快速使用:
                 Math.random()---获取一个随机数

四,方法的定义格式

1)有具体返回值类型的方法定义和调用

有具体返回值方法的定义格式
固定写法:
public static 返回值类型 方法名(形式参数类型1 参数名1,形式参数类型2 参
数名2,....){
//完成功能业务逻辑
...
return 具体结果;
有具体返回值类型的方法的调用格式
在main方中
赋值调用
接收的结果类型 变量名 = 方法名(实际参数1,实际参数2,...) ;
实际参数:直接赋值或者main中键盘录入
2) 没有具体返回值类型的方法定义和调用
定义格式:
public static void 方法名(形式参数类型1 参数名称1,形式参数类型2 参数
名2,....){
调用格式
单独调用
举例
 public static void getMax(int a,int b){
 //完成逻辑判断
 //举例
 if(a>b){
 System.out.println(a+"是最大值");
 }else{
 System.out.println(b+"是最大值");
 }
 }
需求:
 完成如下一个操作
键盘录入一个数据n,n为int类型
控制台输出 nn乘法表
public class FunctionDemo {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并录入数据System.out.println("请输入一个数据(1-9):");
int num = sc.nextInt() ;
//没有使用方法之前
//为了保证有数据从1开始
for(int x = 1 ;x<=num;x++) { //外层控制行数
for(int y =1 ; y <=x ;y++){ //内层循环控制列数,
列数随着行数的变化 第一行,1列,第二行,2列....
System.out.print(x+"*"+y+"="+(y*x) +"\t"); //不换行
}
System.out.println(); //换行
}
System.out.println("-------------------------------------------------
-");
//1)单独调用
// printNN(num); //8
//2)输出调用
//System.out.println(printNN(num)); //本身这个方法中就是输出给控制台,
输出语句套输出 :语法错误
// 3)赋值调用
//Void v = printNN(num) ; 错误的 这是void只是定义的方法格式,没有这个
类型
}
//定义一个方法来完成上面的操作
 定义 方法两个明确
 1)明确返回值类型: java提供关键字 void
 2)明确参数类型以及参数个数
 int类型 1个参数
public static void printNN(int n){//8
for(int x = 1 ;x<=n;x++) { //外层控制行数
for(int y =1 ; y <=x ;y++){
//内层循环控制列数,列数随着行数的变化 第一行,1列,第二行,2列....
System.out.print(x+"*"+y+"="+(y*x) +"\t"); //不换行
}
System.out.println(); //换行
}
}}

3)方法重载

方法重载:为了某个功能扩展性,多个方法方法名可以相同(完全相同),参数列表不同,与
返回值无关
 参数列表不同
 1)参数个数不同
 2)参数类型不同
 3)考虑参数类型的顺序

五,数组

Java中数组就是容器,这个容器 "只能存储同一种类型的元素"
 在数组中定义格式
 动态初始化和静态初始化
 动态初始化:自己定义数组的长度,数组的元素有系统(jvm)默认分配 格式:
 数据类型[] 数组名称 = new 数据类型[数组长度] ; 推荐第一种
 数据类型 数组名称[] = new 数据类型[数组长度] ;
 举例
 int[] arr = new int[3] ;
 int arr[] = new int[3] ;
所有的数组有一个特点:数组名称[角标或者索引值]:访问数组的元素 ,角标值/索引值从
0开始计算
静态初始化:直接我们自己给定的了元素内容,数组的长度由系统默认分配*
 原生的格式写法:
 数据类型[] 数组对象名 = new 数据类型[]{元素1,元素2,元素3.....} ;
 数据类型 数组对象名[] = new 数据类型[]{元素1,元素2,元素3.....} ;
 举例
 int[] arr = new int[]{1,2,3} ;
 int arr[] = new int[]{1,2,3} ;
 静态初始化的简写格式
 数据类型[] 数组对象名 = {元素1,元素2,元素3.....} ; 推荐的写法
 数据类型 数组对象名[] = {元素1,元素2,元素3.....} ;
 int[] arr = {1,2,3} ;
 int arr[] = {1,2,3} ;
注:
在数组中有一个特有的属性:length
 数组名称.length:获取数组长度
 数组中的最大索引值: 数组名称.length-1
 java.lang.ArrayIndexOutOfBoundsException:数组角标越界异常 :访问了数组中的不
 存在的索引就会出现这种问题;
 异常:Exception
 编译时期异常:idea写代码的,编译通过不了,无法运行; 语法有问题;
 运行时期异常: 开发者在编写代码的时候,大部分逻辑性不严谨,比如:
 数组的5个元素,角标最大4,你访问角标5

1)最值问题:最大值

数组元素查表法 :通过数组名称[索引值]确定元素
基本元素查询:查询数组中某个元素的角标值
int[] arr = {87,56,13,24,17};
弊端:
每次查询元素的时候,都是从头查到尾
高级数组中的元素:二分搜索法(折半查询) :高级查询算法

2)冒泡排序

 冒泡排序:
         两两比较,将较大的值往后放,第一次比较完毕,最大值出现在最大索引处;
         依次这样比较,可以得到排好序的数组;

规律
      1)两两比较,将较大的值往后放,
      2)第一次有0个不比
         第二次有1个不比
         ....
        每次比较,就会减少一次比较
        比较的次数:数组长度-1次

六,面向对象

面向对象思想特点:
1)更符号生活中的思想行为习惯
2)让复杂的事情简单化
3)让我们从执行者变成指挥者
   举例:生活中的例子
 面向对象的三大特征:
   封装,继承,多态
1)基本类型作为形式参数和引用类型(数组,类,接口) 作为形式参数的特点?
        基本类型作为形式参数,形式参数改变不影响实际参数;
        引用类型作为形式参数,形式参数的改变直接影响实际参数;
2.类 描述现实世界事物的一组属性和 行为,代码体现出来对某个事物的描述 以及在对应的主方法中测试
描述学生事物
           属性:姓名,年龄,性别...
           行为:学习,玩游戏,抽烟...
 
           具体的学生:         ---- 描述具体的学生事物----代码中体现创建这个类对象:创建具体的对象的格式
                                                      类名 对象名  = new 类名();
 
 
                   张三,20,男                                         对象名.成员变量名 = 赋值;//成员变量赋值
                   学习JavaEE                                         对象名.成员方法名();  //调用成员
 
   使用面向对象方式描述这个学生事物   --定义一个类, 类Java中最基本单元
测试类: 里面就主方法main
 
 
          具体的学生:            ---- 描述具体的学生事物----代码中体现创建这个类对象:创建具体的对象的格式
                                                        类名 对象名  = new 类名();
 
 
                    张三,20,男                                  对象名.成员变量名 = 赋值;//成员变量赋值
                    学习JavaEE                                     对象名.成员方法名();  //调用成员方法

七,封装

以后:描述事务的时候,需要定义类,类中的所有的成员变量(现实世界事物的属性) ,必须都是私有化private;
封装:
 就是将显示世界事物的属性隐藏了(加入一个关键字private),私有的,无法直接访问的,对外数据的安   全性!(外界不能访问的)对外提供一个方法,公共的(public)访问方法(setXXX()/getXXX())
注意事项:
 以后在书写的代码的时候,写一个类,描述真是存在事物的属性的时候,需要属性(英文单词字母全部   小写)全部加入private
面试题:
  private关键字的特点?
       1)被private修饰的成员变量以及成员方法只能在本类中访问
       2)可以修饰成员变量也可以成员方法,就是为了外界不能直接访问
       3)被private修饰的成员变量/成员方法可以间接的通过通过的方法访问;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值