Java环境搭建

1、JDK和JRE的概述

  • JDK:Java开发工具包(Java Development Kit), 包含开发工具 和 JRE.

    • 常用的开发工具: javac, java

  • JRE:Java运行时环境(Java Runtime Environment), 包含运行Java程序时所需的核心类库和 JVM.

    • 核心类库: java.lang, java.util, java.io

  • JVM:Java虚拟机(Java Virtual Machine)

         作用: 用来保证Java程序跨平台性的, 但是JVM本身并不能跨平台.

2024.3.4 JAVA 复习-LMLPHP

 常用快捷键

2024.3.4 JAVA 复习-LMLPHP

五、Java基础语法

1、注释

注释常见分类为三种:分别是单行注释、多行注释、文档注释

//单行注释
​
/*
    多行注释
    多行注释
*/
​
/**
    文档注释
    文档注释
*/
​

2、分隔符

Java 语言里的分号(;) 花括号({})、方括号([])、圆括号(())、 圆点(.)都具有特殊的分割作用,被统称为分隔符。

  • 分号(;) 是Java语言分隔语句的,每个 Java 语句都是使用分号作为结尾。

  • 花括号({})作用是定义了一个代码块,一个代码块指的是”{” 和 “}” 所包含的代码片段,代码块逻辑上是一个整体,花括号是成对出现的。

  • 方括号([])作用是用于访问数组元素,方括号通常跟着数组变量名;

  • 圆括号(()) 功能较多,定义方法使用圆括号来包含参数声明;调用方法传递实参值;圆括号可以作为强制类型转换运算符等;

  • 圆点(.)作用类/对象和它的成员(包含成员变量、方法和内部类)之间的分隔符,表明调用某个类或某个实例的指定成员。

5、变量variable

在程序的执行过程中, 其值可以在某个范围内发生改变的量就叫变量.

Java中要求一个变量每次只能保存一个数据,而且必须要明确保存数据的数据类型

package com.itheima;

public class Test01_变量 {

    public static void main(String[] args) {
        // 定义变量: 方式一 声明变量并赋值
        // 格式:  数据类型 变量名 =  值
        int a = 100;
        System.out.println(a);

        // 定义变量: 方式二 先声明 后赋值
        int b; // 声明
        b = 50; // 赋值
        System.out.println(b);

        // 尝试, 定义一个变量 不赋值, 直接打印即可   直接报错, 告知没有赋值
        int c = 10;
        System.out.println(c);

        // 尝试定义一个字节类型的变量, 尝试赋值
        byte d = -128;
        System.out.println(d);
    }
}

 生成随机数

package com.itheima.demo01;

import java.util.Random;
import java.util.Scanner;

public class random_number {
    public static void main(String[] args){
        Random random = new Random();
        int computerNum = random.nextInt(100) ;
        System.out.println("生成的随机数是:"+ computerNum);
        // 键入
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("请输入一个数字【1-100】,与系统随机数进行比较:");
            int userNum = sc.nextInt();
            ///进行判断
            if (userNum>computerNum){
                System.out.println("您输入的值大于了随机数");
            }else if (userNum<computerNum){
                System.out.println("您输入的值小于了随机数");
            }else {
                System.out.println("恭喜您,匹配成功");
                break;
            }
        }
    }
}

二、流程控制

和Python中一样, Java中也是有分支结构和循环结构的, 它们的用法都一样, 只是写法稍有不同, 接下来, 我们来研究下Java中分支结构和循环结构的格式.

1、if语句

如果我们想某些代码是在满足条件的情况下, 才能被执行, 此时就需要用到选择结构了, 选择结构也叫分支结构, 主要分为以下两种:

  • if语句, 主要用于范围的判断

  • switch.case语句, 主要用于固定值的判断.

if语句格式:

package com.itheima.demo01;

import java.util.Scanner;

public class if_elseif_else {
    public static void main(String[] args){
        Scanner sc  = new Scanner(System.in);
        System.out.println("请输入您的成绩:");
        double score  = sc.nextDouble();
        if(score>=85){
            System.out.println("您的成绩优秀");
        }else if(score>=75){
            System.out.println("您的成绩中等");
        }else if(score>=60){
            System.out.println("您的成绩刚刚及格");
        }else {
            System.out.println("您成绩不合格");
        }
    }
}

2、switch语句

switch语句, 一般是用于做固定值判断的

格式:

示例:

1 一年有12个月, 分属于春夏秋冬4个季节, 键盘录入一个月份, 请用程序实现判断该月份属于哪个季节, 并输出。

package com.itheima.demo01;

import java.util.Scanner;

//示例:
//
//1 一年有12个月, 分属于春夏秋冬4个季节, 键盘录入一个月份, 请用程序实现判断该月份属于哪个季节, 并输出。
public class Switch {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入一个月份:");
        int month = sc.nextInt();
        switch (month){
            case 12:
            case 1:
            case 2:
                System.out.println("冬季");
                break;

            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;

            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;

            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;

            default:
                System.out.println("您输入的数字有误,请重新输入");
                break;
        }
    }
}

3、for循环

for循环是我们在实际开发中应用到的最多的循环, 它一般适用于循环次数固定的情况.

格式:

for(初始化条件1; 判断条件2; 控制条件3) {
    //循环体;
}

说明:

1 初始化条件: 用来记录 循环的初始状态的. 即: 从哪开始循环.

2 判断条件: 用来决定循环是否继续执行的, 条件成立, 则循环继续执行, 条件不成立, 整个循环就结束了.

3 控制条件: 用来控制初始化条件变化的, 一般是每循环一次, 初始化条件+1.

4 循环体: 需要用来重复做的事情(代码).

package com.itheima.demo01;

public class For_xunhuan {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println(i);
        }
        for (int a = 5; a >= 1; a--) {
            System.out.println(a);
        }
        int sum = 0;
        for (int b = 1; b <= 100; b++) {
            if (b % 2 == 0) {
                sum += b;
            }
        }
        System.out.println("1到100的偶数和为:"+sum);
    }
}

三、数组

和Python中一样, Java中也是有用来同时存储多个同类型元素的容器的, 那就是: 数组。在一个数组中,数据元素的类型是唯一的,即一个数组中的元素的类型相同。

1、定义格式

  • 方式一: 动态初始化 (我们给定长度, 由系统给出默认初始化值)

格式一: 数据类型[] 数组名 = new 数据类型[长度];
​
格式二: 数据类型 数组名[] = new 数据类型[长度];

解释: 上述两种定义方式只是写法不同, 并无其他区别

  • 方式二: 静态初始化(我们给定初始化值, 由系统指定长度)

格式一:
    数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3};     
​
格式二:
    数据类型[] 数组名 = {元素1, 元素2, 元素3};

解释: 上述两种定义方式只是写法不同, 并无其他区别.

数组中的每个元素都是有编号的, 且编号是从0开始的. 可以方便我们快速操作数组中的元素.

解释: 编号也叫索引(这个是最常见的念法), 下标、角标、index

数组中每个元素都有默认值.

package com.itheima;

import java.util.Arrays;

public class Test09 {
    public static void main(String[] args) {
        //1. 创建一个数组
        // 方式一: 动态指定, 构建数组的时候, 只需要指定长度即可
        int[] arr1 = new int[10];
        //int arr2[] = new int[10];

        // 方式二: 静态指定, 构建数组的时候, 直接指定数组中每一个元素的值
        //double[] arr3 = new double[]{3.5,6.2,1.3,4.5};
        double[] arr4 = {3.5,6.2,1.3,4.5};


        //2. 执行相关的操作
        // 2.1 如何获取数组中指定位置的元素: 在数组中, 通过索引下标的方式获取, 默认下标从0开始
        int e1 = arr1[2];
        System.out.println(e1);

        double e2 = arr4[3];
        System.out.println(e2);

        //double e3 = arr4[4]; // 注意: 当获取超出数组范围的数据时候, 会报出如下的错误: ArrayIndexOutOfBoundsException
        //System.out.println(e3);

        // 2.2 如何为数组中元素进行重新赋值
        arr1[2] = 10;
        System.out.println(arr1[2]);

        // 2.3 如何获取数组的长度:
        int length = arr4.length;
        System.out.println(length);

        // 2.4 遍历数组
        System.out.println("-------------------");
        // for循环
        for(int i = 0; i< arr4.length; i++){
            System.out.println(arr4[i]);
        }
        // while循环
        System.out.println("-------------------");
        int i = 0;
        while(i< arr4.length){
            System.out.println(arr4[i]);

            i++;
        }

        // 增强for: 迭代器   快捷键:  iter + 回车   此种方式与Python中For循环有一些相似了
        System.out.println("-------------------");
        for (double v : arr4) {
            System.out.println(v);
        }
        System.out.println("-------------------");
        // 2.5 将arr4中数据进行反转操作
        double[] arr5 = new double[arr4.length];

        for(int j = arr4.length-1; j >= 0; j--){
            arr5[arr4.length -1 - j] = arr4[j];
        }

        System.out.println(Arrays.toString(arr5)); // 将数组以字符串的形式打印出来

        // 演示 小错误:
        String[] arr6 = new String[10];

        String e3 = arr6[2]; // 注意 e3 = Null
        e3.concat("xxx'"); // 注意: 使用 null 调用API, 会报: NullPointerException (空指针异常)
    }
}

3、了解数组的内存图介绍

内存是计算机中的重要原件,也是临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。

即: Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

四、方法

Python中的函数, 是将具有独立功能的代码块组织成为一个整体,使其成为具有特殊功能的代码集。Java中也是如此。只不过,Java中的函数也叫方法.

1、定义格式

修饰符 返回值的数据类型 方法名(参数类型 参数名1, 参数类型 参数名2) { //这里可以写多个参数
    //方法体;
    return 具体的返回值;  
}
​
修饰符: 目前记住这里是固定格式public static
​
返回值的数据类型: 用于限定返回值的数据类型的.
    注意: 
        1.返回值的数据类型是int类型, 则说明该方法只能返回int类型的整数.
        2.如果方法没有具体的返回值, 则返回值的数据类型要用void来修饰.
​
方法名: 方便我们调用方法.  定义的时候 要遵循小驼峰的命名法
​
参数类型: 用于限定调用方法时传入的数据的数据类型.
    例如: 参数类型是String类型, 说明我们调用方法时, 只能传入字符串.
        
参数名: 用于接收调用方法时传入的数据的变量. 
    
方法体: 完成特定功能的代码.
    
return 返回值: 用来结束方法的, 并把返回值返回给调用者. 
    解释: 如果方法没有明确的返回值, 则return关键字可以省略不写.

注意事项:

示例:

需求一: 编写一个方法, 接收数组参数, 实现遍历数组的功能

需求二: 获取数组最值(例如: 最大值)

package com.itheima;

public class Test10_method {
    // main 方法
    public static void main(String[] args) {

        int[] arr1 = {1,4,6,3,8,10,15};
        // 调用方法
        foreachArr(arr1); // 传入的参数为实参

        // 获取数组中最大值
        int maxNum = getMaxNum(arr1);
        System.out.println("最大值为:"+maxNum);
    }

    // 方法的定义
    public static void foreachArr(int[] arr){ // 定义参数为形参
        // 遍历数组
        for (int e : arr) {
            System.out.println(e);
        }
    }

    // 定义方法: 实现获取数组中最大值
    public static int getMaxNum(int[] arr){
        int max = arr[0];
        for (int e : arr) {
            if(e > max)  max = e;
        }

        return max;
    }

}
03-08 04:48