顺序结构

按照代码的顺序从上往下去执行代码

分支结构

if语句

if(条件表达式){
语句1;
...
}else if(条件表达式){
语句1;
...
}
else{
 语句2;
 ...
}
// 如果只有一个语句可以直接省略其中的大括号
// 但是如果是定义变量的话就不能省略,因为定义一个变量,相当于执行了两步语句,第一是定义变量,第二是给变量赋值

switch语句

基本语法


switch(条件语句){
   case 字面量:
        执行语句;
        break;
   ...     
   default:
       执行语句;
        break;
 }

1.default语句可以可以放在任意位置 也能省略
2.case穿透
如果case中没有break语句,当有符合条件语句的时候,会从这里一直执行 直到遇到break 或者case语句全部执行完
3.switch新特性
这不用写break语句

switch(条件语句){
  case 字母量 -> {}
  case 字面量 -> {}
  case 字面量 -> {}
  ...
}

小案例

 int day = 2;

        // Switch表达式 (Java 14+)
        String dayType = switch (day) {
            case 1, 2, 3, 4, 5 -> "Weekday"; // 使用逗号分隔多个case,直接返回值
            case 6, 7 -> "Weekend";
            default -> "Invalid day";
        }; // 注意这里是以分号结尾的表达式

        System.out.println(dayType);

循环结构

for循环语句

for(初始化语句;条件判断语句;条件控制语句){
   循环执行语句;
 }
 

while循环语句

初始化语句
while(条件判断语句){
 循环执行语句;
  条件控制语句;
}

do-while循环语句

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

数组

数组介绍

数组的定义与静态初始化

 // 静态初始化数组
        // 原始语法: 数据类型[] 数组名 = 数据类型[]{数据1,...};
        // 省略语法: 数据类型[] 数组名 = {数据1,...};
        int[] a =new int[]{10,12,12,21,10};
        String[] arr = new String[]{"张三","王五"};

数组的地址

 System.out.println(arr);
 // 如果直接打印数组名会出现这个[I@4eec7777  --> 
 // [:表示是数组的意思 
 // I表示是int类型 也就是数据类型
 // @ 是一个间隔符 固定格式
 // @后面的数字就是地址(十六进制) 

数组元素访问

数组遍历

arr.length() // 可以求数组的长度

数组动态初始化

//语法
数据类型[] 数组名称 = new 数据类型[初始化长度];
/*
         整数类型的数组 默认初始化0
         浮点数类型的数组 默认初始化为0.0
         (boolean)布尔类型的默认为false
         字符类型默认初始化值'\u0000' -> 就是一个空格
         引用数据类型默认为null
        */

数组内存图

1.只要是new出来的空间一定是在堆里面开辟了的空间
2.如果new了多次,那么堆中会出现多个小空间,他们各自独立
3.当把数组名直接赋值给另一个数组,那么这两个数组就指向同一个空间,修改一个数组中的值,另一个数组的值夜随之被修改。

数组的常见问题

数组越界访问

数组常见操作

二维数组

静态定义方式:

数据类型[][] 数组名 = new 数据类型[][]{{...},{...},...};

动态定义方式:

第一种方式:
数据类型[][] 数组名 = new 数据类型[n][m];
第二种方式:
int[][] arr = new int[2][];
arr[0] = new int[]{1,2,3,4};
arr[1] = new int[]{12,5,6,7};

方法

什么是方法

方法是程序执行的最小单元

方法的格式

最简单的方法定义与调用

// 定义
public static void 方法名(){
   方法执行语句;
};
// 调用
方法名();

带参数的方法定义与调用

方法的定义
public static void 方法名(参数类型 参数名,参数类型 参数名,....){
    方法执行语句;
 };
方法的调用
方法名(参数名,参数名,...);

注意: 调用方法的时候传入的参数要和接受的一 一对应,否则会报错

带放回值的方法定义

public static 返回类型 方法名(参数类型 参数名){
 方法执行语句;
 return 返回值;
}
返回类型 变量 = 方法名(参数名);

方法的重载

定义: 同一个类中,方法名相同,参数不同,与返回值无关
参数不同:类型不同,个数不同,顺序不同

方法的内存

方法调用的基本内存原理

采用栈的原理,把先进后出的原理,把要执行的方法押进栈中

方法传递基本数据类型的内存原理

基本数据类型:整数类型,小数类型,字符类型,布尔类型;数据值是储存在自己的空间中
特点:赋值给其它变量,也是赋的真实的值
引用数据类型:就是除了上面的类型之外的数据类型;数据值是粗存在其它空间中,自己空间储存的是地址值
赋值时是把别人的地址赋值给它,如果改变他的值,其它指向这块地址的变量也会随之改变。
特点:赋值给其它变量,赋的地址值

方法传递引用数据类型的内存原理

基本数据类型通过方法传入到另一个方法中,在另一个方法中改变这个数据,在原方法中的实参是不会受到影响的
引用数据类型传入的是地址,所以在另一个方法中,修改数据,实参会受到影响

方法综合练习

随机生成五位验证码 要求:前面四个由小写或者大写字母组成,后面以为由一个数字构成

import java.util.Random;
public class function {
    public static void main(String[] args) {

        Random r =new Random();
        String s = "";
        for(int i = 0;i < 4;i++){
            int temp = r.nextInt(52);
            if(temp <= 25) s += (char)(temp+'a');
            else s += (char)(temp-26+'A');
        }
        s += r.nextInt(10);
        System.out.print(s);

    }
}

快捷键:shift+F6 全部替换

更多推荐