Java核心技术梳理-集合】的更多相关文章

一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实现常用的数据结构,并且能够存储有映射关联的关联数组. 集合类和数组不一样,数据既可以存储基本类型,也可以存储对象,而集合只能存储对象(对象的引用变量). Java集合大致分为: Set :无序,不可重复集合 List:有序,可重复集合 Map:具有映射关系集合…
一.引言 在学习集合的时候我们会发现一个问题,将一个对象丢到集合中后,集合并不记住对象的类型,统统都当做Object处理,这样我们取出来再使用时就得强制转换类型,导致代码臃肿,而且加入集合时都是以Object,没做类型检查,那么强制转换就容易出错,泛型的诞生就是为解决这些问题. 二.使用泛型 泛型是如何解决这个问题呢?按照上面的问题,我们只需要在创建集合时指定集合元素的类型,那么集合就能记住对象的类型,那当我们加入是就只能按照指定的类型进行加入,而取出使用时也不需要强制转换: ArrayList…
1.定义:Java集合类存放于java.util包,是存放对象的容器,长度可变,只能存放对象,可以存放不同的数据类型: 2.常用集合接口: a.Collection接口:最基本的集合接口,存储不唯一,无序的对象,List接口和Set接口的父接口: b.List接口:一个有序.可以重复的集合,常用实现类ArrayList和LinkedList: // 底层数据结构是数组,查询快,增删慢,线程不安全,效率高 List arrayList = new ArrayList(); // 底层数据结构是数组…
一.引言 Oracle为Java提供了丰富的基础类库,Java 8 提供了4000多个基础类库,熟练掌握这些基础类库可以提高我们的开发效率,当然,记住所有的API是不可能也没必要的,我们可以通过API文档或直接网上搜索来逐渐熟悉大部分类的功能和方法,下面我们来学习一些基础类库. 二.Scanner Scanner类可以很方便的获取用户的键盘输入,是一个基于正则表达式的文本扫描器,可以从文件.输入流.字符串中解析出字符串和基本类型值,构造器也是以文件.输入流.字符串为数据源进行构造,主要有两种方法…
一.引言 异常总是不可避免的,就算我们自身的代码足够优秀,但却不能保证用户都按照我们想法进行输入,就算用户按照我们的想法进行输入,我们也不能保证操作系统稳定,另外还有网络环境等,不可控因素太多,异常也不可避免. 但我们可以通过异常处理机制让程序有更好的容错性和兼容性,当程序出现异常时,系统自动生成Exception对象通知系统,从而将业务功能实现代码和错误处理代码分离. 异常处理已经成为衡量一门语言是否成熟的标志之一,增加了异常处理机制后程序有更好的健壮性和容错性. 二.异常处理机制 我们希望系…
一.引言 反射机制是一个非常好用的机制,C#和Java中都有反射,反射机制简单来说就是在程序运行状态时,对于任意一个类,能够知道这个类的所有属性和方法,对于任意一个对象,能够调用它的任意属性和方法,其实初听就知道反射是一个比较暴力的机制,它可能会破坏封装性. 通过反射的定义我们可以想到反射的好处:可以灵活的编写代码,代码可以在运行时装配,降低代码的耦合度,动态代理的实现也离不开反射. 为了更好的理解反射,我们先了解下JVM中的类加载机制. 二.类加载机制 当程序要使用某个类时,如果这个类还未加载…
一.引言 IO(输入/输出),输入是指允许程序读取外部数据(包括来自磁盘.光盘等存储设备的数据).用户输入数据.输出是指允许程序记录运行状态,将程序数据输出到磁盘.光盘等存储设备中. IO的主要内容包括输入.输出两种IO流,这两种流中又分为字节流和字符流,字节流是以字节为单位来处理输入.输出流,而字符流是以字符为单位来处理输入.输出流. 二.File 类 File 类是用来操作文件和目录的,File能创建.删除.重命名文件和目录,File不能访问文件内容本身,File 类可以通过文件路径字符串来…
1. 概述     Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容器.也就是说,最基本的集合特性就是把一组对象放一起集中管理.根据集合中是否允许有重复的对象.对象组织在一起是否按某种顺序等标准来划分的话,集合类型又可以细分为许多种不同的子类型. Java集合框架为我们提供了一组基本机制以及这些机制的参考实现,其中基本的集合接口是Collection接口,其他相关的…
13.1.2 Java类库中的集合接口和迭代器接口     删除元素,对于next和remove的调用是互相依赖的,如果调用remove之前没有调用next,则会跑出IllegalStateException异常.如果想要删除两个相连的元素: it.remove(); it.remove();//error 而是应该 it.remove(); it.next(); it.remove();          怎么觉得这种接口设计好傻呢.谁干的?     如果想要实现自己的集合类,可以从Abstr…
目录 第9讲 | 对比Hashtable.HashMap.TreeMap有什么不同? 典型回答 考点分析 知识扩展 Map 整体结构 有序 Map HashMap 源码分析 容量.负载因子和树化 精选留言 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 杨晓峰-Java核心技术-9 HashMap Hashtable TreeMap M…
一线互联网公司工作了几年,我作为求职者参加了不少面试,也作为面试官面试了很多同学,整理这份面试指南,一方面是帮助大家更好的准备面试,有的放矢,另一方面也是对自己知识框架做一个体系化的梳理. 这篇文章梳理了Java核心技术常见面试题,整理了120道题目,包括Java基础.集合框架.并发编程.NIO.反射等部分的内容.JVM和垃圾回收部分的内容比较多,会在下一篇博客中单独写. 除了Java核心技术题目,还会梳理虚拟机,Spring,Dubbo,Spring Cloud,分布式系统,数据库模块的面试题…
1. Why ——引入泛型机制的原因 假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象.然而,过了一阵,我们想要实现一个大小可以改变的Date对象数组,这时我们当然希望能够重用之前写过的那个针对String对象的ArrayList实现. 在Java 5之前,ArrayList的实现大致如下: public class ArrayList { public Object get(int i) { ... } public…
InputStream和OutputStream构成了输入/输出类层次结构的基础.用于按字节进行读写.而与之处在同一等级的Reader/Writer同样作为抽象类定义了用于对字符进行读取的类层次结构,是基于两个字节的Unicode码元的读取. inputStream的抽象方法abstract int read(),每次读入一个字节并返回一个int值,在遇到文件尾的时候返回-1.所以可以用其子类FileInputStream进行文件字符读取: FileInputStream f = new Fil…
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort/parallelSort. –查找:从数组中查找一个元素, binarySearch. –批量拷贝:从源数组批量复制元素到目标数组, copyOf –批量赋值:对数组进行批量赋值, fill. –等价性比较:判定两个数组内容是否相同, equals. (二)实现 import java.util.…
简介: Java是一种撰写跨平台应用软件的面向对象语言,1995年由Sun Microsystems公司推出. 2009年04月20日,甲骨文74亿美元收购Sun,取得java的版权. 2011年7月28日,甲骨文发布java7.0的正式版. 2014年3月19日,甲骨文公司发布java8.0的正式版. Java组成部分: (1)Java编程语言 (2)Java文件格式 (3)Java虚拟机(JVM) (4)Java应用程序接口(Java API) 当编辑并运行一个Java程序时,需要同时涉及到…
目录 第6讲 | 动态代理是基于什么原理? 典型回答 考点分析 知识扩展 反射机制及其演进 动态代理 精选留言 Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 杨晓峰-Java核心技术-6 动态代理 反射 MD.md *** 目录 === 第6讲 | 动态代理是基于什么原理? 编程语言通常有各种不同的分类角度,动态类型和静态类型就是其中…
总结 1.少用八进制,以及二进制. 那么就是直接用16进制或10进制吗?额,想当年有这样搞过,后面就uuid了. 2.>>>用0填充高位>>用符号位填充高位<<<不存在 冷知识吧,也就当年校招见过人问过 3.java没有多维数组,只有一维数组 我们所说的二维数组,本质上是数组的数组 4.编译多个名字差不多的文件 如 AbcController和AbcService两个文件,javac Abc*.java 即可一次性编译两个 5.比较是不是同一个类 用equa…
java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128-127       浮点类型 数据类型 字节数 取值范围 小数位数 float 4 10^-38~10^38和-10^-38~-10^38 小数位数6-7 double 4 10^-308~10^308和-10^-308~-10^308 15位小数         boolean 类型和char 类…
摘要 本文根据<Java核心技术 卷一>一书的第八章总结而成,部分文章摘抄书内,作为个人笔记. 文章不会过于深入,望读者参考便好. 为什么要使用泛型程序设计 泛型程序设计(Generic programming) 意味着编写的代码可以被很多不同类型的对象所重用. 类型参数的好处 在没有泛型类之前,ArrayList类只维护一个Object引用的数组: public class ArrayList { private Object[] elementData; // 用于存放数据 public…
<Java核心技术卷一>是唯一可以和<Java编程思想>媲美的一本 Java 入门书.单从技术的角度来看,前者更好一些.但上升到思想层面嘛,自然后者更好,两者的偏重点不同. 思想不会变,所以<Java编程思想>还停留在第 4 版(2007 年):而技术是要更新迭代的,所以<Java核心技术卷一>来到了第十版(2016 年). 我们来看一下<Java核心技术卷一>第十版的大纲. 前九章:包括 "Java 程序设计概述".&quo…
这是我读过的第三本关于java基础的书.第一本<<java从入门到精通>>这本书让我灵识初开.第二本<<java敏捷开发>>这本书则是有一次被一位师傅批评基础太差时读的.今日我向一位前辈请教应该怎样再进步一点.前辈推荐我读<<Java核心技术>>并告诉我,先读了这两本查漏补缺,然后在给我推荐进阶的书.工具书这种东西,每一本都不可能相同,比如我们的数学书,同样是小学的,两个地区的书可能就不同. 以下为这本java核心技术中所积累的知识,…
[Java核心技术36讲]1.谈谈你对Java平台的理解 2.Exception和Error有什么区别 3.谈谈final.finally.finalize有什么不同?4.强引用.软引用.弱引用.虚引用.幻象引用有什么区别5.String.StringBuffer.StringBuilder有什么区别6.动态代理是基于什么原理7.int和Integer有什么区别8.对比Vector.ArrayList.LinkedList有何区别9.对比HashMap.HashTable.TreeMap有什么不…
Java技术栈 www.javastack.cn 优秀的Java技术公众号 以下是Java技术栈微信公众号发布的所有关于 Java 的技术干货,会从以下几个方面汇总,本文会长期更新. Java 基础篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具类篇 Java 综合篇 Java基础篇 恕我直言,在座的各位根本写不好Java! 8张图带你轻松温习 Java 知识 Java 中的基本数据类型转换详解 Java 父类强制转换子类原则 switch 支持的…
java泛型梳理 概述 泛型,即参数化类型,是在JDK1.5之后才开始引入的. 所谓参数化类型是指所操作的数据类型在定义时被定义为一个参数,然后在使用时传入具体的类型. 这种参数类型可以用在类,接口,方法的创建中,分别被称为泛型类.泛型接口和泛型方法. 泛型值存在于java的编译期,编译后生成字节码文件泛型是被擦除的: Java泛型的底层原理 泛型思想最早在C++语言的模板(Templates)中产生,Java后来也借用了这种思想.虽然思想一致,但是他们存在着本质性的不同. C++中的模板是真正…
Tomxin7 如果你有想看书的计划,但是还在纠结哪些书值得看,可以简单看看"观赏指南"系列,本文会简单列出书中内容,给还没有买书的朋友提供一个参考. 前言 秋招过去很久了,虽然在学校的时候有恶补java基础,但是都是为了面试而准备的,有些技术并没有进行全面的了解,再加上java现在疯狂的更新版本,很多新东西没有了解过,所以就打算再过一遍.java的书籍很多,也不想重复的看,所以就买了两本写的比较系统的<java核心技术卷I II>,本篇文章主要是想分享一下卷I,如果你正打…
这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表达能力确实比中文清晰不少,不过从句多了之后也不太好理解) 虽然翻译这么厚一本书确实比较辛苦,很多英文长句确实不好翻译,翻译得不太通顺就算了,但是有很多地方翻译出来和原书的意思不一样就过分(甚至是沿袭的错误,第9版的中文版里错得一样,很怀疑每版有没有重新校对) P.S.这也是很多引进的大部头技术书籍的…
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1.1 定义子类 5.1.2覆盖方法 5.1.3子类构造器 5.1.4 继承的层次 5.1.5 多态 5.1.6 理解方法调用 5.1.7 阻止继承:final类和方法 5.1.8 强制类型转换 5.1.9 抽象类 5.1.10 受保护访问 5.2 Object: 所有类的超类 5.2.1 equals方法 5…
最近在读<深入理解java核心技术>,对于里面比较重要的知识点做一个记录! 众所周知,Java是一个面向对象的语言,而java中的基本数据类型却不是面向对象的!为了解决这个问题,Java为每个基本数据类型引入一个对应的类,称为包装类! byte -- Byte  boolean -- Boolean short -- Short  char -- Character int -- Integer  long -- Long  float -- Float  double -- Double 为…
Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组跟集合有什么区别: 数组:长度固定,遍历速度快 可以存储基本类型和引用类型: 集合:长度不固定,只能存储引用类型对象: 从数组跟集合的特点我们很明显的看出,数组有一定的局限性,如果我们需要不定期的往我们的数据中存储数据,数组就满足不了我们的要求. Java集合框架提供了一套性能优良.使用方便的接口和…
1. 为什么要使用内部类     内部类就是定义在一个类内部的类,那么为什么要使用内部类呢?主要原因有以下几点:第一,内部类中定义的方法能访问到它所在外部类的私有属性及方法:第二,外部类无法实现对同一包中的其他类隐藏,而内部类可以做到这一点:第三,匿名内部类在我们只需使用该类的实例依次时可以有效减少我们的代码量.关于以上三点,我们在下文中会举出具体例子进行进一步的说明.   2. 如何使用内部类 (1)使用内部类访问外围类私有变量     在内部类中,我们能够访问到它所在外部类中的私有实例变量及…