【吉林大学Java程序设计】第7章:对象的容纳

题目1083: 堆栈的使用 吉林大学上机题 题目描述 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。   输入 对于每组测试数据,第一行是一个正整数 n,0   输出  对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶 阅读详情

1.数组 Arrays

  • 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于
    该对象的成员变量
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型

1.1 数组的创建、初始化和使用

(1)数组的声明

  • “[]”表示声明的变量是一个数组类型,例:int a1[ ]; int [ ] a2; String [ ] b; Person [ ] p1;
  • Java语言中声明数组时不能指定其长度(数组中元素的个数),例如:int a[5]; //非法

(2)数组初始化

  • 数组在声明之后还不可以使用,在使用数组之前必须为数组分配足够的系统资源,称为“初始化”
静态初始化

在这里插入图片描述

动态初始化

在这里插入图片描述

对象数组的初始化

在这里插入图片描述

  • 对于第二种对象数组的初始化方法,除了创建时要用new,在初始化时也要用new。第一次new只是创建了三个引用变量,第二次new才创建了对象,如下面三张图所示。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(3)数组的使用

  • 按照索引访问数组元素,同C++
  • Java中的数组也是对象,除了数组元素之外,还存在唯一一个可被访问的属性length,记录了数组中元素的个数,不像C++那样得调用函数,例如:a[a.length-1]代表数组中最后一个元素

1.2 多维数组

在这里插入图片描述

  • 存在不规则数组
    在这里插入图片描述
    在这里插入图片描述

1.3 数组与数组的引用

  • Java数组是特殊的对象,数组变量存放一个数组对象的引用
  • 可以将数组变量作为方法参数达到改变数组元素值的效果
    例:Java中引用是通过值传递的。在changeArrayValue中,令para=a,引用的是同一块区域,因此修改para[0]时,实际上是修改了这块区域内的元素值,a[0]也对应改变。而在changeArrayRef中,para一开始等于a,但又令para=temp,这时para不再与a引用相同区域,而是与temp引用相同区域,a[0]仍为99。
    在这里插入图片描述

1.4 数组工具类Arrays

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5 数组对象比较接口

在这里插入图片描述
先将Object o转换为Employee类型的e,用this表示比较发起者
在这里插入图片描述
在这里插入图片描述

1.6 数组的优缺点

优点

  • 数组可以快速地随机访问数组中的元素。数组可以保存基本类型和对象。
  • Arrays类,专门用来操作array。

缺点

  • 数组的容量固定。当数组空间不足的时候需要做数据迁移,效率很低。
    • 注意:数组声明时不能指定长度,但是初始化时固定了数组的大小
  • 经常或者通常情况下,编程人员不知道或无法确定正在编写的程序需要使用多少个对象。

2.枚举 enum

  • 适用于某些数据集合,它们的数值是不变化的,而且集合中的元素个数是有限的,例如:季节、性别、星期

在这里插入图片描述

3.容器 Collection(“集合接口”)

  • 不同于数组,容器的容量是动态的
  • Collection(类集): 一组单独元素集合
    • List :保存的对象有顺序,按照元素的索引位置检索对象。允许重复元素。
    • Set :不允许保存重复的元素。元素之间没有顺序。靠元素值检索对象。
  • Map(映射): 一组键值对
    • 元素包括“键” 对象和“值”对象。键必须是唯一的,值可以重复

容器类关系

在这里插入图片描述

Collection接口

在这里插入图片描述

3.1 列表 List

  • List常用实现类有ArrayList和LinkedList,两种类型存在性能差异
  • ArrayList与LinkedList常用的大部分方法都是接口List定义的
  • 使用接口List定义类集的方法有一个好处:改变集合类型时其它代码不用变化。例如:

在这里插入图片描述

  • 当使用实现类特有方法时不能使用接口定义:List a= new ArrayList();而应该使用具体类定义:ArrayList a = new ArrayList();

(1)ArrayList 线性表

  • 也被称为动态数组,类似C++的vector
  • 内部维护了一个Object类型数组
    在这里插入图片描述

(2)LinkedList 链表

  • 较快的顺序存取速度。快速的中间插入删除速度。随机存取速度较低。
  • 内部维护了一个带头结点的双向链表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.2 泛型

  • 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
    为什么要用泛型? | 泛型方法、通配符该如何使用 | Java中的泛型知识

(1)使用泛型的语法

  • 在声明泛型类的变量时,使用尖括号“<>”来指定形式类型参数
    • class 类名<类型参数列表> {类体}
    • 例:class A <X1,X2> {X1 a; X2 b;}
  • 在应用泛型类时,必须用具体类型填入类型参数,即泛型类的具体化
    • 类名<具体类型列表> 变量名=new 类名<具体类型列表>(构造函数的参数列表);
    • 例:A<String,Integer> m = new A<String,Integer>();

(2)泛型的使用

  • 类,接口,方法都可以使用泛型
    在这里插入图片描述

(3)容器的泛型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 Set 集合

  • 继承自Collection 接口。没有额外的方法。
  • 常用的实现类:HashSet 和 TreeSet以及LinkedHashSet。

在这里插入图片描述

(1)Iterator(迭代器)遍历

  • 调用方法iterator() 返回一个迭代器。第一次调用Iterator的next()方法时,它返回序列的第一个元素。
  • 使用**next()**获得序列中的下一个元素,每成功调用一次迭代器向后移动一个元素。
  • 使用**hasNext()**检查序列中是否还有元素。
  • 使用**remove()**将迭代器新返回的元素删除。
  • 接口ListIterator从接口Iterator继承,它可以从两个方向遍历List
  • Collection接口都可以使用迭代器
    在这里插入图片描述

(2)for-each遍历

  • for-each只能遍历两种类型的对象:
    • 数组
    • 实现了java.lang.Iterable接口的类的实例
      在这里插入图片描述

(3)HashSet 哈希集、散列集

  • 添加删除时,若循环比较则效率低下
  • 采用“哈希表”与哈希算法实现快速查找
  • 内部维护一个链表数组(是“链表”和“数组”的组合)
  • 拥有常数查找时间
  • 要求对象重写hashCode()方法与equals()方法
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)其他Set

在这里插入图片描述

  • 比较HashSet,TreeSet,LinkedHashSet
    • HashSet的元素存放无顺序
    • LinkedHashSet保持元素的添加顺序
    • TreeSet元素按值进行排序存放(默认从小到大)

3.4 Map 映射

  • 一个Map中不能包含相同的key,每个key只能映射一个value。
  • 常用的实现类:HashMap和TreeMap以及LinkedHashMap。

Map常用方法

在这里插入图片描述

(1)Map遍历

  • Map接口没有实现Iterable接口,无法使用迭代器
  • Map键值对元素无序,无法使用索引
  • Map接口提供3种集合的视图:
    • keySet():生成键的Set型集合
    • values():生成值的Collection型集合
    • entrySet():生成键值对的Set型集合
      在这里插入图片描述
      在这里插入图片描述

(2)HashMap 哈希映射

  • HashSet内部维护着一个HashMap
  • HashMap的对象也需要实现 equals()与hashCode() 方法

在这里插入图片描述

  • 键是唯一的,因此再put dog,red的时候,dog的值改变为red
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(3)其他Map

在这里插入图片描述

3.5 Collections 工具类

在这里插入图片描述
在这里插入图片描述

容器完整关系图

在这里插入图片描述

3.6 容器类型选择

在这里插入图片描述

4.泛型中的通配符

4.1 通配符简介

  • Java泛型是强类型检测的,泛型类型的子类型互不相关。为了使泛型类型具有面向对象的继承关系,Java引入了通配符的概念。

4.2 无界通配符“?”

在这里插入图片描述

4.2 通配符上界“? extends T”


在这里插入图片描述
在这里插入图片描述

4.3 通配符下界“? super T”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

泛型通配符小结

在这里插入图片描述

总结

在这里插入图片描述

信息收集:CCF大学生计算机系统与程序设计竞赛(CCSP) CCF大学生计算机系统与程序设计竞赛(CCSP) CCF大学生计算机系统与程序设计竞赛(CCSP)是中国计算机学会(CCF)于2016年开展的一项面向大学生的计算机竞赛,至今已开展3年。CCSP竞赛以CSP认证为初赛,以CCSP分赛区竞赛为复赛。分赛区竞赛强调个人的计算机专业能力,除了考察... 阅读详情

相关推荐

Vmware安装windowsServer2022版本

全网最详细的Vmware安装windowsServer2022版本

A乐神的博客 7006

java数组可以包含对象吗_数组可以包含对象类型的元素吗_对象数组

对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组就行了。怎样声明包含 5 个元素的对象数组,每个元素都是 Employee 类型的对象 浏览次数:4875 billy880215 1 有同感numpy数组对象形状和元素类型,人工智能的兴起和机器学习的火热使得ytho成为了当下最流行的编程语言,而这都2.hasOwnProperty判断对象是否包含2.in 用于数组...

weixin_39590453的博客 2831

山东大学软件工程应用与实践——GMSSL开源库(六)——SM9密钥交换协议

2021SC@SDUSC 文章目录基本概念符号及辅助算法SM9密钥交换协议 基本概念 1976年,Diffie和Hellman在其题为《密码学的新方向》的论文中首次给出了公钥密码学的定义,并提出了Diffie-Hellman密钥交换算法。该算法解决了对称密码体制中的密钥分发问题,使得通信双方可以通过公开信道安全地交换共享密钥。 使用SM9通信的双方通过对方的标识和自身的私钥,经过两次或者可选的三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥。该密钥可以作为对称密码算法的会话密钥,其中可选步骤用来实

m0_51588039的博客 1988

JAVA数组中的各元素是对象吗?

JAVA数组中的各元素是对象吗? 只看楼主 收藏 回复 正直如神 水 1 文中说数组是一个对象,那数组里面的元素是对象吗? (0) 回复 1楼 2013-08-1

evilcry2012的专栏 2909

SSCardDriver.dll社会保障卡读写终端接口规范38号文接口

********************获取设备及PSAM卡信息********************//********************获取银行账户信息 ********************//********************获取设备信息********************//********************PIN校验********************//********************通用写卡********************/

广东东信智能科技有限公司的专栏 1736

车载摄像头+max96712 + rk3568 调试过程中遇到的问题

本文主要讲述本人在调试rk3568通过mipi-csi2链接max967812,max96712再外接4路车载摄像头过程中遇到的问题,以及最终如何解决这些问题。图中会贴上很多重要且关键的波形图,以便读者在调试过程中进行比对,分析。 如果在调试过程中,mipi总线上的波形没得什么问题的话,还是抓图失败的情况下,需要着重检查 频率,lane数,摄像头分辨率,摄像头输入图像格式等重要配置。

Amelio Ming 2066

java中数组是对象吗?

数组是对象哦。数组的父类也是Object,每个数组都实现了接口Cloneable and java.io.Serializable。但是数组的类型却不是程序员可见的。但是由于数组也是Object的子类,我们可以打印出数据的类型名。 // Java program to display class of // int array type public class Test { pub...

千霜的博客 1万+

数据安全实战技能解析:从加密攻防到数字水印的竞赛指南

数据安全是信息安全领域的核心,其基础在于密码学与信息隐藏技术。密码学通过加密算法(如AES、RSA)和哈希函数,保障数据的机密性与完整性,其原理涉及对称/非对称加密、工作模式及密钥管理。数字水印技术则基于信号处理(如DCT/DWT变换),将信息嵌入多媒体载体,用于版权保护与溯源。这些技术的价值在于为数据全生命周期提供“防泄漏”与“可追溯”的解决方案,广泛应用于企业数据治理、合规审计和**数据防泄漏(DLP)** 系统。本文以一场贴近实战的**数据安全职业技能竞赛**为切入点,深入剖析如何运用密码分析、磁盘取

weixin_34314962的博客 402

【吉林大学Java程序设计】第1章:Java语言基础

Java语言基础

云沧同学的博客 1431

网络流量异常信息分析方法研究

本课题针对网络安全中网络流量异常的分析方法进行研究,提出一种基于机器学习和深度学习的异常检测算法。该算法采用卷积神经网络(CNN)和长短时记忆神经网络(LSTM)结合的方式,通过训练得到二分类模型,从而实现对网络流量异常的检测。随着互联网的飞速发展,网络攻击事件日益增多,网络安全问题成为了亟待解决的问题之一。常见的网络攻击手段包括 DDoS 攻击、SQL 注入、XSS 攻击等,这些攻击手段可能导致网络系统发生异常,给网络运维、数据安全带来极大的挑战。

肥晨开发的学习之路 1035

再不入坑就晚了,深度神经网络概念大整理,最简单的神经网络是什么样子?

再不入坑就晚了,深度神经网络概念大整理,最简单的神经网络是什么样子?

我是香菜 3万+

【吉林大学Java程序设计】第2章:结构化程序设计基础

结构化程序设计基础

云沧同学的博客 1192

「PAT乙级真题解析」Basic Level 1034 有理数四则运算 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设给定两个有理数, 要求输出这两个有理数的和、差、积、商。 如果只是这样, 则问题很简单, 但是题设要求输出的每个有理数必须是最简形式. **所以本题的一个重点是如何将有理数转为题设要求的有理数.**

过美好生活,做高效程序员 3129

【吉林大学Java程序设计】第5章:图形用户界面

图形用户界面

云沧同学的博客 1425

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

吉林大学2015级《Java语言程序设计》考试题自做答案

吉林大学2015级《Java语言程序设计》考试题自做答案 1.面向对象中什么是类?什么是对象?它们之间的关系是什么? 答:类是组成Java程序的基本要素,既是组织程序代码的基本单位,也是面向对象程序设计的主体。类是创建对象的模板,对象是类在程序中的实例化。对象实例在程序中包括生成、使用和清除三个阶段。对象实例的生成又包括声明、实例化和初始化三个步骤。 2.Java语言中的访问权限控制符有哪些?对应的访问权限都是什么? 答:Java有三种访问控制符public、protect、private,还有一种没有关

qq_38336763的博客 2592

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

吉林大学期末复习(一些考试)2023/6/11

如果你想了解更多,很显然,点开学长们的主页,你能找到你对应考试的期末复习总结。1.优快云 内容为备考方针和简答题考点。1.算法设计与分析选择题、简答题、证明题整理。以下平台很有帮助:优快云,博客园。3.gonghr 公hr。

m0_64738539的博客 8873

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【吉林大学Java程序设计】第8章:IO流

IO流

云沧同学的博客 536

吉林大学java期末试卷_2016年9月吉林大学课程机考复习题-JAVA程序设计

1、在下列说法中,选出最正确的一项是( )。 1.Java语言是以类为程序的基本单位的2、下列选项中不属于Java虚拟机的执行特点的一项是( )。4.简单易学3、下列选项中属于Java语言的垃圾回收机制的一项是( )。 4.内存跟踪4、下列选项中属于Java语言的安全性的一项是( )。 3.访问权限5、下列选项中,属丁JVM执行过程中的特点的一项是( )。3.异常处理5、执行如下语句之后,输出的结...

weixin_30093045的博客 1111

吉林大学java期末试卷_吉大18年9月《JAVA程序设计》作业考核试题-0001

1int 型 public 成员变量 MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( )A、public int MAX_LENGTH=100B、final int MAX_LENGTH=100C、public const int MAX_LENGTH=100D、public final int MAX_LENGTH=1002下列哪个类声明是正确的( )A、abstr...

weixin_39931146的博客 1294

《数据库系统应用程序开发》考试

考试的主要内容在PPT里的JDBC Programing with Java Ⅰ&&Ⅱ,除了第一大题的简单JDBC语句,还涉及实验报告和Java程序设计的内容。 我届考试题目与往年极其相似,后悔没有好好看题。。呵呵 下附考试真题。(^_^) 看完可以考满分。 《2016-2017年度吉林大学第一学期数据库程序开发考试》 一.写出jav...

咕咕怪的博客 4711

Java实验报告吉林大学_吉林大学计算机科学与技术学院《高级语言程序设计》实验报告1.doc...

吉林大学计算机科学与技术学院《高级语言程序设计》实验报告1.doc还剩6页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧,价低环保!内容要点:for (k=1;k<=j;k++)printf("%d",k);}void II(int j){int k;for (k=1;k<=j;k++)printf("%d",1);}遇到问题 老师说 pow 函数计算范围有限,算 2...

weixin_30623181的博客 460

吉大java考试题_吉大20春学期《JAVA程序设计》在线作业二-1(答案)

答案来源:奥学网(www.aoxuewang.net)-[吉林大学]吉大20春学期《JAVA程序设计》在线作业二试卷总分:100 得分:100第1题,在 Java 中,所有类的根类是( )。A、java.lang.ObjectB、java.lang.ClassC、java.applet.AppletD、java.awt.Frame正确答案:第2题,向量可以描述成( )。A、固...

weixin_35073008的博客 642

c语言程序设计基础吉林大学,吉林大学c语言第一章c语言程序设计基础.ppt

程序设计与编程----C语言程序设计;;第一章C语言程序设计基础;计算机系统组成图;第一代:机器语言(低级语言)面向机器、可移植性差、效率高、不方便编程第二代:汇编语言——助记符,难维护第三代:高级语言(Pascal,BASIC,C)面向程序员、可移植性好、执行效率低、便于编程第四代:面向对象语言(C++,Java)第五代:智能语言;C语言与其他高级语言的对比:FORTRAN或PL/I:科学计算(...

weixin_30129025的博客 431

c语言程序设计基础吉林大学,吉林大学C语言第一章 C语言程序设计基础综述.ppt...

吉林大学C语言第一章 C语言程序设计基础综述程序设计与编程----C语言程序设计;;第一章C语言程序设计基础;计算机系统组成图;第一代:机器语言(低级语言)面向机器、可移植性差、效率高、不方便编程第二代:汇编语言——助记符,难维护第三代:高级语言(Pascal,BASIC,C)面向程序员、可移植性好、执行效率低、便于编程第四代:面向对象语言(C++,Java)第五代:智能语言;C语言与其他高级语言...

weixin_42332497的博客 268

吉大java考试题_吉大18秋学期《JAVA程序设计》在线作业一(100分)

: G1 w* n8 F. j% E8 ^, @1 d试卷总分:100 得分:1007 f" W# c( K/ Xz" ^& `第1题,关于类和对象的叙述正确的是( )9 A- C# q+ P2 t. v4 _A、Java的类分为两大部分:系统定义的类和用户自定义的类) s' }8 w6 n}7 R; D& ^B、类的静态属性和全局变量的概念完全一样,只是表达...

weixin_42314711的博客 734

吉林大学珠海学院c语言考试题,吉林大学珠海学院-c语言试卷a卷.pdf

2009 年 春 季学期 专业《C 语言程序设计》期末试卷(A 卷)卷面总分:100 分 答题时间:120 分钟专业 年级 班级 姓名 学号题号 一 二 三 四 五 总分...

weixin_39850787的博客 189
上一篇: 【吉林大学Java程序设计】第6章:异常处理
下一篇: 【吉林大学Java程序设计】第8章:IO流
云沧同学
博客等级 码龄4年 577粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值