当前位置: 首页 > news >正文

Java 基础知识回顾(一)

语言基础

面向对象编程(OOP)

OOP :面向对象编程,以对象为核心的编程思想,指挥对象来实现功能,而不用在意对象具体的代码实现
对象:包括属性以及行为
比如说:在购买债券的场景中,购买人可以看作一个对象,他所持的债券以及他拥有的资金可以看作他的属性,而买入债券和卖出债券可以看作他的行为及方法

接口(interface)

接口主要用来描述类具体有什么功能,而并不给出每个功能的具体实现。一个类可以实现(implement),一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象

让类实现一个接口:

  1. 将类声明为实现给定的接口,使用关键字implements
  2. 对接口中所有方法进行定义

接口的特性

  1. 接口不是类,不能用new实例化一个接口
  2. 可以声明接口的变量,但变量必须引用类的类对象

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

  1. 可以通过instanceof检测一个对象是否实现了特定接口
  2. 接口可以被扩展

这里是引用

  1. 接口不能包含实例域或静态方法,但可以包含常量

这里是引用

  1. 接口的方法默认设置为public,接口中的域默认设为public static final

接口和抽象类的区别
   抽象类表示通用属性时,每个类只能扩展一个类,而一个类可以实现多个接口

容器

能装对象的对象

  1. List 线性结构,可变长度
  2. Set 集合,非线性,去除重复
  3. Map 映射,存储的时候以key:value形式存储数据

在java中所有的集合的根:collection 接口

List

List 在Java中是一个接口,主要的有ArrayList和LinkedList两个实现类,具有自动扩容的特性,按照自己的添加顺序进行存储

ArrayList

底层是数组形式进行存储,当不足时自动扩容

//创建
List list = new ArrayList();
//add
list.add("a");

LinkedList

以链表形式进行存储。每个节点存入value和next

//创建
List list = new LinkedList();
//add
list.add("a");

注意:
在实际应用中,常用ArrayList,查找数据更加容易,效率高
LinkedList在删除和新增插入等操作上更加高效

List常用操作

  1. add() 添加
  2. remove() 删除
  3. size() 列表大小
  4. get() 查询数据,根据index,返回数据为Object,起始为0
  5. contains() 判断容器中是否存在

遍历列表

for(int i = 0;i< list.size();i++)
{//具体操作}

Set集合

不允许存在重复数据,存储顺序不是按照添加顺序存放的
主要的实现类:HashSet和TreeSet

HashSet

无序,去重复

//创建
Set s = new HashSet();
//添加
s.add("sdf);

TreeSet

默认进行排序(如,数字增序),不重复

//创建
Set s = new TreeSet();
//添加
s.add("sdf);

Set操作

  1. add()添加
  2. remove() 删除元素
  3. 取数据利用迭代器,不存在下标所以没有get()
  4. size()
  5. contains()

Map容器

Key --> value
主要的两个实现类:HashMap 和TreeMap

HashMap

以哈希算法为根本,乱序

Map map = new HashMap();
//添加键值对,key value
map.put("1","lby");

TreeMap

根据Key对键值对进行排序

Map map = new TreeMap();

Map的操作

  1. put(key,value) 存储数据
  2. remove(key) 删除
  3. size()
  4. containsKey(key) map中是否包含参数key
  5. 添加时 如果存在相同key,则会进行覆盖
  6. keySet() 把所有key打包成Set集合返回
  7. get(key) 通过key查询value

迭代器 Iterator

对List,Set 和Map 进行操作,取出,遍历等
迭代:一个一个的往外取

循环List,Set与List相似,

   List list = new ArrayList<>();
        list.add("lby");
        list.add("bby");
        list.add("cby");
        list.add("dby");
while(it.hasNext()){
	String s = (String) it.next();
	System.out.println(s);
}

Map

//方法一
Set set = map.keySet();
Map map = new HashMap();
map.put("1","lby");
 map.put("2","bby");
 map.put("3","cby");
 Set set = map.keySet();

 Iterator it = set.iterator();

 while (it.hasNext()){
     String key = (String) it.next(); //所有的key
     System.out.println(map.get(key));
 }
//方法二
        Set set =map.entrySet();
        Iterator it = set.iterator();
        while (it.hasNext()){
            Map.Entry entry = (Map.Entry) it.next();
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }

相关文章:

  • shell脚本之函数的引入
  • JDK的下载与安装详细教程
  • 刷题记录(NC231128 Steadily Growing Steam,NC21467 [NOIP2018]货币系统,NC235950 多重背包)
  • 详解红黑树【C++实现】
  • Flask的一些简单代码
  • 链路追踪 - SkyWalking
  • 基于NFS共享存储实现KVM虚拟主机动态迁移
  • MySQL之常用存储引擎
  • 动手学习深度学习 02:预备知识
  • dockerkubernets篇(二十六)
  • 9.synchronized的三把锁
  • 为什么开发人员正在成为供应链攻击中的最薄弱环节
  • MySQL之事务、锁
  • 项目第二天
  • Windows与网络基础-10-windows用户管理
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • MySQL QA
  • nodejs实现webservice问题总结
  • PHP 7 修改了什么呢 -- 2
  • php ci框架整合银盛支付
  • Redis 懒删除(lazy free)简史
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 从零开始学习部署
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 高度不固定时垂直居中
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 前端攻城师
  • 听说你叫Java(二)–Servlet请求
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • Spring Batch JSON 支持
  • 阿里云重庆大学大数据训练营落地分享
  • ​2021半年盘点,不想你错过的重磅新书
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)图像的%2线性拉伸
  • (转载)hibernate缓存
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Reactor简单使用教程
  • .NET 设计模式初探
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .Net中间语言BeforeFieldInit
  • .sh
  • .sh 的运行
  • /bin/rm: 参数列表过长"的解决办法
  • @SpringBootApplication 包含的三个注解及其含义
  • [AIGC codze] Kafka 的 rebalance 机制
  • [android] 切换界面的通用处理
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [BZOJ 1040] 骑士
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体
  • [C++数据结构](31)哈夫曼树,哈夫曼编码与解码