JAVA复习之流程控制、数组、泛型、集合

尚硅谷 宋红康老师 Java视频全程课程目录 尚硅谷 Java 语言全程课程目录, 尚硅谷 Java&大数据研究院 宋红康 B站视频链接 在此记录一下,方便日后查看复习。 Java 编程基础部分 day00_编程入门 01-资料文件结构 1 02-资料文件结构 2 03-入门概述 04-冯诺依曼体系结构 05-CPU 和 IT 行业三大定律 06-持久化存储设备 07-bit 与 byte 08-内存 09-输入输出设备和网络连接设备 10-计算机史上的两个鼻祖 11-操作系统 12-万维网与软件架构方式 13-职业发展与提升 14-学习经. 阅读详情

一、详细教程见: 程序结构(流程控制语句)

在这里插入图片描述

二、注意事项:

1、case不可以使用浮点类型
2、如果遇到循环嵌套情况,break语句只会使程序流程跳出包含它的最内层的循环结构,即跳出一层循环
3、break、continue提供了“标签”的功能
在这里插入图片描述

三、数组

在这里插入图片描述
例题解析:
一个3 x 3的网络,将1到9的数字放入方格,达到能够使得每行每列以及每个对角线的值相加都相同。

public class NineGrids {// 创建NineGrids类
	public static void main(String[] args) {
		// 声明int类型的数组并分配内存(三阶方阵)
		int arr[][] = new int[3][3];
		// 确定数字“1”的位置
		int a = 2;// 第3行的下标
		int b = 3 / 2;// 第2列的下标
		for (int i = 1; i <= 9; i++) {// 给数组赋值
			arr[a++][b++] = i;// 避免数组下标越界
			if (i % 3 == 0) {// 如果i是3的倍数
				a = a - 2;
				b = b - 1;
			} else {// 如果i不是3的倍数
				a = a % 3;
				b = b % 3;
			}
		}
		System.out.println("九宫格:");
		// 遍历数组
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < arr.length; j++) {
				System.out.print(arr[i][j] + " ");// 输出数组中的数据
			}
			System.out.println();// 换行
		}
	}
}

四、泛型

(一)什么是泛型?(使程序可以定义安全的数据类型)

java中的参数化类型被称为泛型,下图为例
在这里插入图片描述

(二)定义泛型类

**语法:**类名<类型参数1,类型参数2,…类型参数n>{}

public class Demo<T>{
	T username;
	T method(T t){}
}

(三)泛型的用法

在开发过程中,如果需要动态地指定参数类型,那么就需要使用泛型。

1.定义泛型类时声明多个类型

class method<T1,T2>

2.定义泛型类时声明数组类型

定义泛型类型时也可以声明数组类型

2.集合类声明元素的类型

在集合中应用泛型可以保证集合中元素类型的唯一性。从而提高代码的安全性和可维护性。

(四)泛型如何使用

public class Demo030<T> {
    T bankName; //银行名称
    T time; //存款时间
    T username; //户名
    T cardNum; //卡号
    T currency; //币种
    T inAccount; //存款金额
    T leftAccount; //账户余额
    public static void main(String[] args) {
        Demo030<Object> list = new Demo030<Object>(); //创建一个String类型的BankList对象
        list.bankName = "中国建设银行"; //初始化“银行名称”
        list.time = new Date(); //初始化“存款时间”
        list.username = "赵四"; //初始化“户名”
        list.cardNum = "6666 7777 8888 9996 789"; //初始化“卡号”
        list.currency = "RMB"; //初始化“币种”
        list.inAccount = 8888.00; //初始化“存款金额”
        list.leftAccount = 18888.89; //初始化“账户余额”
        DecimalFormat df = new DecimalFormat("###,###.##"); //创建DecimalFormat对象,用来格式化Double类型的对象
        System.out.println(
                "银行名称:" + list.bankName
                        + "\n存款时间:" + list.time
                        + "\n户  名:" + list.username
                        + "\n卡  号:" + list.cardNum
                        + "\n币  种:" + list.currency
                        + "\n存款金额:" + df.format(list.inAccount)
                        + "\n账户余额:" + df.format(list.leftAccount)
        ); //输出上述信息
    }
}

五、集合类的概述

(一)数组真的好用吗?数组和集合的不同之处?

不好用,因为数组长度是固定的,集合的长度是可变的(像列车一样,可动态的加车厢),数组既可以存放基本数据类型,又可以存放对象,集合只能存放对象,集合包括(LIst、set和Map集合)
在这里插入图片描述

(二)Collection接口的常用方法及说明

在这里插入图片描述

(三)List集合

List集合包括List接口以及List接口的所有实现类
①List集合中的元素允许重复,且各元素的顺序就是添加元素的顺序
②用户可以通过索引访问集合中的元素
1、List接口
在这里插入图片描述
2、List接口的实现类
①ArrayList以数组的形式保存集合中的元素,能够根据索引位置随机且快速地访问集合中的元素。
②LinkedList以链表结构保存集合中的元素,随机访问集合中元素的性能较差,但向集合中插入元素和删除集合中的元素的性能出色。
List list = new ArrayList<>();
List list2 = new LinkedList<>();
在这里插入图片描述
3、Iterator迭代器(优点:遍历集合中所有的元素且执行效率高)
在这里插入图片描述
在这里插入图片描述
4、案例剖析

import java.util.*;

public class Demo01 {
    public static void main(String[] args) {
        //实例化集合类对象
        List<String> list = new ArrayList<>();
        //向集合中添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("12314213");
        //创建迭代器
        Iterator<String> it = list.iterator();
        //判断是否有下一个元素
        while (it.hasNext()){
            //获取集合中的元素
            String str = it.next();
            //打印
            System.out.println(str);
        }
    }
}
(四)Set集合

Set集合中的元素不按特定的方式排序,只是简单地被放在集合中,且Set集合中的元素不能重复。
在这里插入图片描述
1、TreeSet(树集合,存放有序)
在这里插入图片描述
2、TreeSet类增加的方法
在这里插入图片描述
HashSet类和TreeSet类都是Set接口的实现类,它们都不允许有重复元素。但HashSet类在遍历集合中的元素时是不关心元素的顺序,而TreeSet类则会按自然顺序(升序排列)遍历集合中的元素
3、案例剖析

public class Person implements Comparable {
    int id;
    int age;
    String name;

    @Override
    public int compareTo(Object o) {
        Person p;
        //判断是否为person类
        if(o instanceof Person){
            //强制转换
            p = (Person)o;
        }else{
            //表示传入的参数比我本身要小
            return -1;
        }
        int diff = this.age - p.age;
        if(diff != 0){
            //差值除以本身绝对值,可以得到+1 或者-1的值
            diff = diff / Math.abs(diff);
        }
        return diff;
    }
    public Person(int id, int age, String name) {
        this.id = id;
        this.age = age;
        this.name = name;
    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}
public class Demo {
    public static void main(String[] args) {
        Set set = new TreeSet();
        Person p1 = new Person(1,18,"熊猫");
        Person p2 = new Person(2,33,"小明");
        Person p3 = new Person(3,22,"梦缘");
        //添加到集合
        set.add(p1);
        set.add(p2);
        set.add(p3);
        set.add(p3);//重复的元素不会被添加到集合中
        System.out.println(set.size());

        //创建迭代器
        Iterator it = set.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
}

在这里插入图片描述

(五)Map集合

在这里插入图片描述
方法:keySet() 返回该集合中的所有key对象形成的set集合
values()返回该集合中所有值对象形成的Collection集合

在这里插入图片描述
1、案例剖析一

import java.util.*;
public class HashMapTest {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<>(); // 创建Map集合对象
		map.put("ISBN 978-7-5677-8742-1", "Android项目开发实战入门"); // 向Map集合中添加元素
		map.put("ISBN 978-7-5677-8741-4", "C语言项目开发实战入门");
		map.put("ISBN 978-7-5677-9097-1", "PHP项目开发实战入门");
		map.put("ISBN 978-7-5677-8740-7", "Java项目开发实战入门");
		Set<String> set = map.keySet(); // 构建Map集合中所有key的Set集合
		Iterator<String> it = set.iterator(); // 创建Iterator迭代器
		System.out.println("key值:");
		while (it.hasNext()) { // 遍历并输出Map集合中的key值
			System.out.print(it.next() + " ");
		}
		Collection<String> coll = map.values(); // 构建Map集合中所有value值的集合
		it = coll.iterator();
		System.out.println("\nvalue值:");
		while (it.hasNext()) { // 遍历并输出Map集合中的value值
			System.out.print(it.next() + " ");
		}
	}
}

多学俩招:建议使用HashMap类实现Map集合,因为由HashMap类实现的Map集合添加和删除映射关系的效率更高;而且希望Map集合中的元素存在一定的顺序,应该使用TreeMap类实现Map集合。

(六)小结

1、List集合关注的是索引,List集合中的元素是有存放顺序的;
2、Set集合关注的唯一性,它的值不允许重复;
3、Map集合关注的是唯一的标识符(key),它将唯一的键映射到某个元素;
在这里插入图片描述

Java复习线路 以下是一种Java复习线路,帮助你系统地复习Java:1. Java基础语法 2. 面向对象编程 3. 异常处理 4. 集合框架 5. IO操作 6. 多线程编程 7. 网络编程 8. 数据库操作 9. Web开发 阅读详情

相关推荐

java技术专家 【java基础详解】 java 18 练习题:数组

【代码】java 18 练习题:数组。

大壮 639

【C语言程序】一个3*3的网格,将1~9的9个数字分别放入9个方格中,使得每行每列以及每个对角线的值相加都相同。(提示:矩形中心的元素为5)

题出自-------------------------------零基础学C语言 #include<stdio.h> int main() { int a[3][3] = {1,2,3,4,5,6,7,8,9}; int i; int j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%d\t", a[i][j]); printf("\n"); } return 0; }

comelyboy的博客 3446

因时机器人-灵巧手配置方案(Ubuntu18.04)

因时机器人-灵巧手配置方案(Ubuntu18.04)

CH_monsy的博客 3848

3x3九宫格java_Java实现九宫格的简单实例

Java实现九宫格的简单实例九宫格:共有三行三列九个格子,从1到9共九个数字不重复地填入这九个格子中,条件是每行、每列、两个对角线上三个数字的和相等。下面用Java实现九宫格:public class NineTable {public static void main(String[] args) {int arr[][] = new int[3][3];int a = 2;int b = 3 ...

weixin_39639518的博客 3752

线结构光三维重建(二):光平面标定与激光轮廓提取的实战优化

本文深入探讨了线结构光三维重建中的光平面标定与激光轮廓提取两大核心环节的实战优化。详细介绍了从棋盘格标定板法到自动化高鲁棒性标定的流程优化,并分享了针对复杂工业场景(如低对比度、高反光表面)的激光轮廓提取组合策略,旨在提升三维重建系统的整体精度与稳定性。

weixin_29057237的博客 331

hcaptcha无感验证码逆向实战:从接口分析到环境补全

本文详细解析了hcaptcha无感验证码的逆向实战过程。通过分析核心接口与加密逻辑,重点介绍了采用环境补全策略来模拟真实浏览器环境,从而绕过验证码检测。文章提供了从接口抓包、剖析hsw.js加密核心到使用Node.js搭建模拟环境的完整步骤,为自动化操作提供了一种稳健的解决方案。

weixin_29324401的博客 1152

九宫幻方 c++ JAVA

题目描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。 4 9 2 3 5 7 8 1 6 有意思...

weixin_41988889的博客 807

halcon与c#联合编程实现相机控制+图像平移缩放+日志记录+缺陷检测+路径规划

halcon与c#联合编程实现相机控制+图像平移缩放+日志记录+缺陷检测+路径规划 前言 本人近期在工作中遇到需要对某场景下利用海康相机进行图像缺陷检测与对应路径规划。通过对海康相机示例代码进行吸收与借鉴,最终实现了对海康相机的控制,并增加HSmartWindowControl控件,实现图像的实时显示与平移缩放功能;通过listview+toolstrip实现日志显示与类型(提示、警告、错误)分类;同时自行编制算法实现对缺陷的识别以及缺陷外扩矩形范围内的路径规划。 1.日志记录 代码如下(示例):

weixin_37864926的博客 2717

1-9,九个数填入3*3的格子中,使每行每列总和相同

#include using namespace std; int a[3][3]; int sum; //判断九宫格内每个数字各不相同 bool test(int x,int y,int n){ a[x][y]=n; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(a[i][j]==n){

In my way 9244

暑期实习前端面试笔试总结汇总

腾讯2020暑期实习——前端视频面试(1)回顾 腾讯2020暑期实习——前端视频面试(2)回顾 腾讯2020暑期实习——前端视频面试(3)回顾 腾讯2020暑期实习——前端视频面试(4)回顾 蘑菇街2020暑期实习——前端视频面试回顾 二、笔试 奇安信前端实习笔试总结 vivo笔试(2020年3月8日) ...

明媚 3065

【云原生技术】helm中Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用

Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用 在一个标准的 Helm Chart 中,通常会包含以下关键文件: - **Chart.yaml** - **values.yaml** - **templates/`_helpers.tpl`** - 以及若干模板文件(`deployment.yaml`、`service.yaml` 等) 下面分别介绍这几个文件的作用、常见字段及其含义。

weixin_46453070的博客 752

java知识点复习4万字(未完)

抽象类不能实例化可以有构造器、成员变量、普通方法抽象方法只有声明,没有实现子类必须实现(除非子类也是抽象类)要继承一个异常类型自定义一个编译时异常类型:自定义类继承。自定义一个运行时异常类型:自定义类继承。建议大家提供至少两个构造器,一个是无参构造,一个是(String message)构造器。自定义异常需要提供自定义的异常只能通过throw抛出。自定义异常最重要的是异常类的名字和message属性。当异常出现时,可以根据名字判断异常类型。

qq_43066512的博客 981

相似贴子推荐:基于 LangChain4j + Milvus 的混合检索实战

本文提出了一种基于LangChain4j和Milvus的混合检索方案,用于解决论坛社区中的相似帖子推荐问题。该方案结合稠密向量语义检索和BM25关键词检索的优势,通过RRF算法实现结果融合。系统采用bge-small-zh模型生成语义向量,利用Milvus 2.5+原生支持的BM25功能和混合搜索API,在百万级数据规模下实现50ms内的检索延迟,召回率和精确率分别提升15%和22%。文章详细介绍了从数据预处理、向量化到混合检索的完整实现流程,并探讨了进阶优化方向,为推荐系统和RAG应用提供了高效解决方案。

分享AI、区块链技术及应用,未来已来 88

java复习第一篇——复习大纲 0.0.1

一.复习大纲 1.数据类型和运算符 2.流程控制和数组 3.面向对象 4.Java集合 5.泛型 6.异常处理 7.Annotation(注释) 8.输入/输出 9.多线程 10.网络编程 11.反射 ...

qq_30509055的博客 282

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java复习笔记

java复习笔记

weixin_68027546的博客 1285

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【Java】基础知识复习清单,你能口述这些概念吗

目录结构 数据类型与运算符 计算 计算方法 运算 逻辑运算符 数据转换 表达式的自动转换 不同数据类型的强制转换 布尔值自动转换 自动转换类型 位运算符 Hello_Java 不同赋值方法 对于镜度数的第一次简介 进制数写法 数据类型 流程控制与数组 数组 深入了解数组 使用数组 数组类型 画圆–作业题目 foreach语句 面向对象 方法详解 参数传递 ...

C+=UI~(Nip) 3233

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java基础知识全面复习指南

跨平台性:Write Once, Run Anywhere(一次编写,到处运行)面向对象:封装、继承、多态健壮性:强类型机制、异常处理、垃圾回收多线程:内置多线程支持安全性:字节码验证、安全管理机制super();// 使用throw new MyException("年龄不能为负数");

百锦再的博客 1万+

快速复习java常用知识

这篇文章提供了Java核心知识点的快速复习指南,涵盖数据类型、变量、流程控制、方法、数组、面向对象编程、集合、泛型、IO流、多线程和网络编程等关键内容。内容结构清晰,适合有一定Java基础的学习者快速回顾核心语法和编程概念,帮助恢复编程熟练度。

m0_63432587的博客 1090

CGBTN2111汇总复习

int a1 = 1;//会报错,大转小//强制类型转换就不会报错了//3//-128,强制类型转换要在小类型的范围内转,否则会发生数据溢出的问题//97//‘x’//32874。

2401_89693943的博客 748

java宋红康复习

面向对象性:两个要素:类、对象三个特征:封装、继承、多态健壮性:① 去除了C语言中的指针 ②自动的垃圾回收机制 -->仍然会出现内存溢出、内存泄漏跨平台型:write once,run anywhere:一次编译,到处运行功劳归功于:JVM编译语句: javac xxx 运行 java xxx。

Njhbsj的博客 863

大学生期末考试Java复习题

JAVA复习题 第1章 Java开发入门 习题 一、 填空题 将.java源文件编译为.class文件的是【 】命令。 在Eclipse窗口中选择菜单【 】→New→Java Project创建Java项目。 在安装JDK的过程中,有三个功能模块可供选择,它们分别是【 】,【 】和【 】。 将Hello.java文件编译为class文件,需要键入...

qq_45077173的博客 1万+

CGBTN2107复习汇总

CGBTN2107复习汇总 复习思路: 先抓知识结构主干,再去补充细节 先跟着老师的复习思路走,遇到会的,快速回顾 遇到忘记或者是不会的,先记录,后面自己复习的时候着重回顾 一阶段学习路径: 01 基础语法 01-1 环境配置 安装JDK 注意:使用的版本是1.8,安装简单 再配置环境变量 JAVA_HOME:配置的是JDK的安装目录 Path:不需要新建,配置的是JDK的bin目录 CLASS_PATH:配置的是JDK的lib目录 环境变量的校验: win+R打开DOS窗口,然后输入java -ver

程序媛泡泡的博客 1万+

java期末复习笔记

如果没有合适的系统提供异常类,用户可以自定义异常类class 异常类名 extends Excepiton{无参构造(){super();//调用父类的无参构造有参构造(字符串){super(字符串);//调用父类的有参构造在可能产生该类异常的地方抛出异常类对象throw new 有参构造(字符串);一旦抛出,则有错误提示,处理方法:1.在方法头上声明异常抛出2.再调用方法的位置进行处理,可以使用try’…

DypBellwether的博客 1391

JAVA入门到放弃

JAVA入门知识梳理 学习了有一段时间的java了,那么今天来梳理下java的相关知识吧。 主要是自己用来复习,有需要的可以收藏。 文章目录JAVA入门知识梳理前言一、框架简述二、JAVASE环境的搭建三、java基础知识1.java概述总结 前言   JAVA的应用前景十分可观,java可以做网站,可以做游戏,可以做android应用,也能做电脑软件。   网站:Java可以用来编写网站,现在很多大型网站都用Jsp写的,JSP全名Java Server

herojeo的博客 4755

java基础复习

JDK(开发包)JRK(运行环境)解释型语言基本数据类型:byte short int(默认) long float double(默认) char boolean引用数据类型:类 接口 数组扩展:BigDecimal 字符扩展(金融)算数 赋值 关系 逻辑位(& | ^ ~ >> << >>>)条件(?: )域名倒写,防止命名冲突,package import。

HANG_WORLD的博客 809
上一篇: Junit Generator的安装
下一篇: JAVA复习之字符串
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值