JavaSe基础2

分支结构----switch语句

`switch(表达式){`

			case 1:
					语句体1break;
			case 2:
					语句体2break;
			...
			default:
					语句体n+1break;
`}`

执行流程

  • 首先计算出表达式的值
  • 其次,和case一次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束。

**注意:**如果switch中得case,没有对应break的话,则会出现case穿透的现象

case判断都支持哪些类型

  • 基本数据类型:byte,short,char,int
  • 字符串类型: String(Jdk 7+ 开始支持)包装数据类型:
  • 包装数据类型: Byte,Short,Character,Integer
  • 枚举类型:Enum

switch语句case穿透

**概述:**如果switch语句中,case省略了break语句,就会开始case穿透

**需求:**键盘录入星期数,输出工作日、休息日(1-5)工作日,(6-7)休息日

循环结构

for循环结构

循环:

​ 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

格式:

for(初始化语句;条件判断语句;条件控制语包){
	循环体语句;
}
格式解释:
  • 初始化语句: 用于表示循环开启时的起始状态简单说就是循环开始的时候什么样
  • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
  • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情
  • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下
执行流程:
  1. 执行初始化语句
  2. 执行条件判断语句,看其结果是true还是false

​ 如果是false,循环结束;如果是true,继续执行

  1. 执行循环体语句
  2. 执行条件控制语句
  3. 回到‘2’继续

while循环

while结构

while循环完整格式:
初始化语句;
while (条件判断语句){
循环体语句;
条件控制语句;
}
while循环执行流程:
  1. 执行初始化语句

  2. 执行条件判断语句,看其结果是true还是false

    ​ 如果是false,循环结束如果是true,继续执行

  3. 执行循环体语句

  4. 执行条件控制语句

  5. 回到‘2’继续

循环结构2

do…while循环结构

完整格式
初始化语句;
do{
    循环体语句;
    条件控制语句;
}while(条件判断语句);

执行流程

  1. 执行初始化语句
  2. 执行循环体语句
  3. 执行条件控制语句
  4. 执行条件判断语句,看其结果是true还是false
    如果是false,循环结束
    继续执行如果是true,
  5. 回到2继续

三种循环的区别

三种循环的区别
  • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
  • do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for循环和while的区别
  • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了
  • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用
死循环(无限循环)的三种格式
  • for(😉
  • while(true)
  • do f while(true);
跳转控制语句
  • 跳转控制语句(break)
    o 跳出循环,结束循环
  • 跳转控制语句 (continue)
    • 跳过本次循环,继续下次循环
  • 注意: continue只能在循环中进行使用!

循环嵌套

循环嵌套概述:在循环中,继续定义循环示例代码

理解:

​ 请反复理解这句话(整个内循环,就是外循环的一个循环体,内部循环体没有执行完毕外循环是不会继续向下执行的)

结论:

​ 外循环执行一次,内循环执行一圈

Random

Random产生随机数

概述:

​ Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能API后续课程详细讲解,现在可以简单理解为Java已经写好的代码

使用步骤

1.入包
import java.util.Random.
2.创建对象
Random r= new Random0.
3.产生随机数
int num = rnextlnt(10);

解释

​ 10代表的是一个范围,如果括号写10,产生的随机数就是0-9,括号写20,参数的随机数则是0-19

数组介绍

​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。

数组的定义格式

第一种格式

数据类型[]数组名
示例:

int[] arr;
double[] arr
char[] arr;
第二种格式

数据类型 数组名
示例:

int arr[];
double arr[l;
char arr[];

数组的动态初始化

什么是动态初始化

数组动态初始化就是只给定数泪的长度,由系统给出默认初始化值

动态初始化格式
数据类型[数组长度],数据类型[] 数组名 = new
int[] arr = new int[3];
动态初始化格式详解
  • 等号左边:

    int:数组的数据类型

    []:代表这是一个数组
    arr:代表数组的名称

  • 等号右边:
    new:为数组开辟内存空间
    int:数组的数据类型
    []:代表这是一个数组
    5.代表数组的长度

package com.bukaedu.array;
public class Demo2Array {
/*
数组的动态初始化:在初始化的时候,需要手动指定数组的长度,系统会为数组容器分配初始值动态初始化格式:数据类型[] 数组名 = new 数据类型[数组的长]注意:打印数组变量的时候,会打印出数组的内存地址
[I@10f87f48 :
     @ : 分隔符
     [ : 当前的空间是一个数组类型
     I : 当前数组容器中所存储的数据类型
     10F87f48 : 十六进制内存地址
	0123456789abcdef
      */
public static void main(String[] args) [
// 数据类型[] 数名 = new 数据类型[数组的长];
// 通过new关键字创建了一个int类型的数组容器,该容器可以存储5个int类型的整数,该容器被arr数组变量所记录
int[] axr = new int[5];
// [I@10F87F48
System.out.printin(arr);
byte[] bArr = new byte[3];
// [BEb4c966a
System.out.printin(bArr);
    		}
    }

数组元素访问

什么是索引

每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。

这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素

访问数组元素格式
数组名[索引];

内存分配

内存概述

  • 内存是计算机中的重要原件,临时存储区域,作用是运行程序
  • 我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的.
  • 必须放进内存中才能运行,运行完毕后会清空内存.
  • Java虚拟机要运行程序,必须要对内存进行空间的分配和管理.

java中的内存分配

目前我们只需要记住两个内存,分别是:栈内存和堆内存

区域名称作用
寄存器给CPU使用,和我们开发无关
本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关
方法区存储可以运行的class文件
堆内存存储对象或者数组,new来创建的,都存储在堆内存
方法栈方法运行时使用的内存,比如main方法运行,进入方法栈中执行

数组的静态初始化

什么是静态初始化

在创建数组时,直接将元素确定

静态初始化格式

完版格式

数据类型[] 数组名 = new 数据类型[]{元素1元素2,---};

简化版格式

数据类型[]数组名 ={元素1元素2.---};

数组操作的两个常见问题

索引越界异常

出现原因

publie class AxrayDemo{
    public statie void main(8txingl] args) {
         int[] arr = new int[3];
         System.out.println(arr[3]);
    }
}

数组长度为3,索引范围是0~2,但是我们却访问了一个3的素引。

程序运行后,将会抛出AraylndexOutOBoundsException 数组越界异常。在开发中,数的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

解决方案

​ 将错误的索引修改为正确的索引范围即可!

空指针异常

出现原因

public elass AxrayDemo {
    public static void main(8txingll axgs) {
        int[] arr = new int[3];
        //把nu11财值给数组
        Axx = nu11:
        System.out.println(arr[0]);
	}
}

aT =nul 这行代码,意味着变量ar将不会在保存数组的内存地址,也就不允许再提作数组了,因此运行的时候会抛出NullPointerException 空指针异常。在开发中,空指针异常是不能出现的,一旦出现了,就必须要修改我们编写的代码

解决方案

​ 给数组一个真正的堆内存空间引用即可!

方法

方法的概念

方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
注意:

  • 方法必须先创建才可以使用,该过程成为方法定义

  • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

方法的定义和调用

无参数方法定义和调用

定义格式:

public static void 方法名(){
// 方法体;
}

带参数方法定义和调用

定义格式:
参数:由数据类型和变量名组成- 数据类型 变量名

​ 参数范例:int a

public static void 方法名(参数1){
方法体;
}
public static void 方法名(参数1,参数2,参数3...){
方法体;
}

注意:
方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错

​ 方法定义时,多个参数之间使用逗号(,)分隔
调用格式:

方法名(参数);

方法名(参数1参数2);

方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,方法调用时,否则程序将报错

形参和实参

形参:方法定义中的参数,等同于变量定义格式,例如: int number

实参:方法调用中的参数,等同于使用变量或常量,例如: 10 number

方法的通用格式

格式:

public static 返回值类型 方法名(参数){
方法体;
return 数据;
}

解释:

  • publicstatic 修饰符,目前先记住这个格式

  • 返回值类型 方法操作完毕之后返回的数据的数据类型

  • 如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return

  • 方法名 调用方法时候使用的标识

  • 参数由数据类型和变量名组成,多个参数之间用逗号隔开

  • 方法体完成功能的代码块

  • return 如果方法操作完毕,有数据返回,用于把数据返回给调用者

定义方法时,要做到两个明确:

明确返回值类型:

​ 主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型

明确参数:

​ 主要是明确参数的类型和数量
调用方法时的注意:

  • void类型的方法,直接调用即可
  • 非void类型的方法,推荐用变量接收调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值