2024.3.4 JAVA 复习

news2025/1/15 22:43:49

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本身并不能跨平台.

 常用快捷键

五、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个季节, 键盘录入一个月份, 请用程序实现判断该月份属于哪个季节, 并输出。

switch(表达式) {  
    case 值1:     
        语句体1;
        break;
    case 值2:
        语句体2;
        break;
    case 值3:
        语句体3;
        break;
    ...    //根据需求, 可以写多组case.
    default:    
        语句体n;
        break;

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;
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1497018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YTM32同步串行通信引擎SPI外设详解(slave part)

YTM32同步串行通信引擎SPI外设详解&#xff08;slave part&#xff09; 文章目录 YTM32同步串行通信引擎SPI外设详解&#xff08;slave part&#xff09;IntroductionPricinple & Mechinism引脚信号Slave从机工作模式发送/命令FIFO和接收FIFOMatch匹配接收功能硬件片选和内…

windows环境下编译调试x265工程

1、在具备visual studio软件情况下&#xff0c;源码和工具下载 下载x265源码&#xff1a;https://github.com/videolan/x265 下载cmake:https://cmake.org/download/ 2、生成x265的工程项目 在自己cmake目录下&#xff0c;找到cmake-gui.exe&#xff0c;安装目录的bin习&#x…

CC攻击的特征和防护措施

随着互联网的快速发展&#xff0c;网络攻击日益频繁。在目前的各种网络攻击中&#xff0c;CC攻击是一种常见的网络攻击手段之一。CC攻击&#xff08;也称为DDoS攻击&#xff09;是指通过大量请求或恶意流量向目标网站或服务器发送请求&#xff0c;以使其服务不可用。可能大家都…

【Leetcode每日一题】 前缀和 - 连续数组(难度⭐⭐)(30)

1. 题目解析 题目链接&#xff1a;525. 连续数组 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 核心在于计算题目所给数组是否存在连续子数组使得数组里头0和1的数量相同&#xff0c;存在返回连续子数组最长长度即可&#xff0c…

passwd: Authentication token manipulation error

passwd: Authentication token manipulation error 身份验证令牌操作错误。 可能原因&#xff1a; 1、密码文件无修改权限&#xff08;有i权限&#xff09; lsattr /etc/{passwd,shadow} 取消方法 chattr -i /etc/passwd chattr -i /etc/passwd 2、/文件系统无空间或者无inod…

哇!!!!这个个人博客好好看!!!

做一个个人博客第一步该怎么做&#xff1f; 好多零基础的同学们不知道怎么迈出第一步。 那么&#xff0c;就找一个现成的模板学一学呗&#xff0c;毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题&#xff0c;那就是&#xff0c;那些模板都&#xff0c;太&#xff01;…

文生视频Sora模型发布,是否引爆AI芯片热潮

文生视频Sora模型发布&#xff0c;是否引爆AI芯片热潮 1. 引言 在人工智能的历史长河中&#xff0c;每一次技术的飞跃都伴随着社会生产力的巨大变革。自2015年以来&#xff0c;深度学习技术的突破性进展&#xff0c;尤其是在自然语言处理、图像识别和机器学习等领域的成功应…

elementUI表单验证遇到的问题

1.同一个addForm表单&#xff0c;同样的验证规则&#xff0c;有的输入框在没填写时能够显示红色&#xff0c;有的却毫无反应 解决方案&#xff1a;去elementUI官网看了一下验证表单的规则及属性&#xff0c;第一句就写 Form 组件提供了表单验证的功能&#xff0c;只需要通过 r…

【北京迅为】《iTOP-3588开发板网络环境配置手册》第3章 开发板直连电脑配置方法(不能上外网)

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

(内含领书福利)实在智能联合浙江外国语学院、清华大学出版社发布新时代跨境电商教材。

近日&#xff0c;“新时代跨境电商新形态教材”系列图书之《数智电商 AIRPA实战教程》新书发布会在杭州成功举办。 这本教材深入浅出&#xff0c;全面讲解了如何用业界前沿AI、RPA技术打造电商行业广泛应用的各种数字员工。内容详实&#xff0c;场景丰富&#xff0c;有理论教学…

常见的验证码

一、短信验证码 前端&#xff1a; 用户填写手机号&#xff0c;点击按钮发送请求用户短信得到验证码后&#xff0c;用户填写表单提交 form 表单&#xff0c;进行验证 后台&#xff1a; 随机生成几位验证码并将生成时间、手机号、验证码存储起来&#xff0c;可以存到session、…

crossover2023激活码分享crossover免费升级2024 crossover24更新内容

CrossOver是一款功能强大的系统兼容软件&#xff0c;它能够让Mac和Linux用户在不安装Windows操作系统的情况下直接运行Windows应用程序。以下是关于CrossOver的更多信息&#xff1a; 一、工作原理 CrossOver的工作原理是通过在Mac或Linux系统上模拟Windows应用程序所需的运行…

工业深度学习异常缺陷检测实战

在工业生产过程中&#xff0c;由于现有技术、工作条件等因素的不足和局限性&#xff0c;极易影响制成品的质量。其中&#xff0c;表面缺陷是产品质量受到影响的最直观表现&#xff0c;因此&#xff0c;为了保证合格率和可靠的质量&#xff0c;必须进行产品表面缺陷检测。 “缺陷…

Jvm 虚拟机命令

Jps (查看正在运行的Java 进程) jps -q 只输出进程id、省略主类名称 -m 输出Jvm 进程启动时传递给主类main 函数参数 -l 输出主类全名称 -v 输出 Jvm 启动时的Jvm 参数 Jstat 查看 Jvm 统计信息 -class 监视类装载、卸载数量、总空间以及类装载所耗费的时间 -gc 监视 Java 堆…

倾斜三维模型转3dtiles重建顶层

背景 作为地理信息行业的公司,我们经常面临将倾斜三维模型转换成3D Tiles的挑战。当处理小数据量时,我们可能没有太大问题;但当数据量增大,尤其是超过50GB后,即使一些高配置的硬件也无法避免浏览模型时的卡顿和长时间加载。甚至浏览器会闪退。在这种情况下,重建倾斜三维…

聊天室项目

服务器 #include <myhead.h> #define SER_IP "192.168.122.39" #define SER_PORT 8888 typedef struct Node //链表存储客户端的所有信息 {struct sockaddr_in cin; //存储客户端的网络地址信息struct Node *next; }*List; typedef struct Message//消息结构…

亚信安慧AntDB:“融合+实时”引领数据库创新

在当今多变的数据应用场景中&#xff0c;AntDB作为行业领先的超融合流式实时数仓&#xff0c;秉承着“融合实时”的研发理念&#xff0c;全面应对企业日益复杂的数据处理需求。通过SQL接口访问多种执行引擎&#xff0c;AntDB在实现交易、分析等多重能力的“超融合”方面取得了显…

制片管理工具:提高制片效率的必备工具

一、什么是制片管理工具 制片管理工具是一种为制片人提供支持和协助的软件或工具&#xff0c;并提供一种集中管理制作进度、任务分配、成本预算、资源管理和进度跟踪的方式。它可以帮助制片人在项目的开发、制作和发布方面更有效地进行规划和监督&#xff0c;确保整个流程能够…

网络空间资产安全解决方案

长期以来&#xff0c;我们一直强调要做好网络安全建设&#xff0c;而其中的第一步就是要做好对自身资产的发现和清点&#xff0c;正如大家经常所说的那句话——“你无法保护你看不见的东西”。的确&#xff0c;如果不知道自己拥有什么资产&#xff0c;那么如何去了解与它们相关…

CVPR 2024 | Modular Blind Video Quality Assessment:模块化无参视频质量评估

无参视频质量评估 (Blind Video Quality Assessment&#xff0c;BVQA) 在评估和改善各种视频平台并服务用户的观看体验方面发挥着关键作用。当前基于深度学习的模型主要以下采样/局部块采样的形式分析视频内容&#xff0c;而忽视了实际空域分辨率和时域帧率对视频质量的影响&am…