java学习笔记
文章平均质量分 55
wuqingdeqing
生如逐放 心有焰藏
展开
-
Java集合之ArrayList
相关类简介List接口的可调整大小的数组实现。size, isEmpty, get, set, iterator, and listIterator这些方法是常数时间,其他的方法都是O(n)。注意它不能保证同步,若要同步,可用: List list = Collections.synchronizedList(new ArrayList(...));同样的,如果在使用迭代器时使用了...原创 2019-12-04 13:25:31 · 124 阅读 · 0 评论 -
Java集合之Set
简述set是一种没有重复元素的集合。也就是说用equals方法没有相等的元素,最多只有一个null。相关类public interface Set<E> extends Collection<E> { // 查询操作 /** * 元素个数,如果超过Integer.MAX_VALUE,则为Integer.MAX_VALUE */...原创 2019-12-03 22:25:09 · 113 阅读 · 0 评论 -
java项目中的日志框架使用
看过一些项目后发现其中使用的日志框架多有不同,经过一些调研与询问,觉得阿里Java开发手册中所说较为合理。日志中不要直接使用日志系统(Lg4j, Logback)的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的处理方式统一。import org.slf4j.Logger;import org.slf4j.LoggerFactory;private...原创 2018-02-09 10:44:10 · 733 阅读 · 0 评论 -
Java编程中HashMap中putAll方法的异常
最近使用HashMap时踩了不少坑,故每次都看看源码,加深对出现异常原因的理解。比如最近遇到项目中的putAll方法抛NullPointerException,查看源码得知,这竟是putAll方法的唯一一个异常。如下:public void putAll(Map<? extends K,? extends V> m)调用此方法将获得参数m中的所有映射,如果存在key相同的,则被m中的v...原创 2018-02-09 11:37:17 · 6066 阅读 · 2 评论 -
Java接口中方法和域的访问限定
在做项目的过程中,突然有一个疑问,就是很多时候接口中的方法并没有任何访问限制。若依过往经验推断,说明此方法与类的默认访问属性相同,即包访问可见。但心里总觉得此种解释不甚合理,经过查阅资料明白,在接口声明中,所有方法自动都是public。并且,在实现接口的方法时,必须把方法声明为public,否则编译器会将此方法认为是包访问可见,就会给出试图提供更弱的访问权限的警告。有些程序员出于习惯或提高清晰度的...原创 2018-02-11 10:39:11 · 2756 阅读 · 0 评论 -
较完美的重写equals方法
equals在Object中用于判断两个对象是否具有相同的引用。但在许多应用的情况下,这种判断并无意义,常用来检查两个状态的相等性,此时就需要重写equals方法。特别注意的是,重写equals方法必须同时重写hashCode方法,否则不能生效。接下来介绍一些重写equals方法的建议。假定传入参数为otherObject。1.首先检查this与otherObject是否引用同一个对象。原创 2018-02-06 22:06:43 · 532 阅读 · 0 评论 -
Java中equals()重写示例
很多时候看到许多地方说在自己的类里重写equals()方便用以比较两个对象相等,但一直未能详细探索到底怎么重写是比较好的方式。如今看到书上的一个模板,故记之。如果该对象的引用和参数对象的引用相同,返回true。这项测试在成立时能够免去其他所有测试工作。如果参数为null,返回false(还可以避免在之后的代码中使用空引用)。如果两个对象的类不同,返回false。要得到一个对象的类,可以使用getC...原创 2018-04-16 21:45:28 · 888 阅读 · 0 评论 -
Java枚举类的一个小demo
工作中有时要写一个枚举类,但有时从头写有点耽误事,这里把现有的一个案例拿出来,以备以后使用时直接拿到。public enum DetailShowEnum { CPU_SHOW("CPU使用率"), MEM_SHOW("内存使用率"), IO_SHOW("IO使用率"), DISK_SHOW("磁盘使用率"), TESLASUCC_SHOW("Tesla成功率"), TES...原创 2019-04-03 16:36:35 · 497 阅读 · 0 评论 -
JSON JSONObject
在工作中写java时常忘记json的各种转化操作具体怎么写,这里做一个总结,以避免总是临时查。JSON和JSONObject都是com.alibaba.fastjson中的两个类,其中包含对json各种形式转化的方法。在使用过程中,个人感觉JSON中的方式多是对整个json串的各种格式处理,而JSONObject中的额外方法则主要是针对json串中的单个元素进行的处理。1. JSONJ...原创 2019-07-02 17:10:09 · 261 阅读 · 0 评论 -
java学习笔记(九)——类型信息
运行时类型信息使得你可以在程序运行时发现和使用类型信息。Java在运行时识别对象和类的信息主要有两种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型;另一种是反射机制,它允许我们在运行时发现和使用类的信息。9.1 Class对象Class对象就是用来创建类的所有的“常规”对象的。Java使用Class对象来执行其RTTI,即使正在执行的是类似转型的操作。Class类还原创 2018-01-13 22:12:35 · 186 阅读 · 0 评论 -
java学习笔记(八)——集合类
Java有多种保存对象(对象引用)的方式。例如数组,它是编译器支持的类型。数组是保存一组对象的最有效的方式,在保存基本类型数据的时候,推荐使用这种方式。但是数组具有固定的尺寸,在一般情况下,写程序时并不知道将需要多少个对象,或者更复杂的方式来存储,因此数组尺寸固定太过受限。Java实用类库提供了一套完整的容器来解决这个问题,其中基本的类型是List,Set,Queue和Map。这些对象类型也称原创 2018-01-06 14:27:04 · 198 阅读 · 0 评论 -
java学习笔记(七)——内部类
将一个类的定义放在另一个类的定义内部,这就是内部类。内部类允许把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性。内部类和组合是完全不同的概念。最初内部类看起来就像是一种代码隐藏机制:将类置于其他类的内部。但它远不止于如此。它了解外围类,并能与之通信;而且你用内部类写出的代码可能更加优雅而且清晰。7.1 链接到外部类内部类是一种名字隐藏和组织代码的模式。但它还有其他用原创 2017-12-30 15:02:45 · 168 阅读 · 0 评论 -
java学习笔记(三)——初始化与清理
3.1 用构造器确保初始化Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化。创建对象时,如果其类有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证初始化。构造器的名称必须与类名完全相同。不接受任何参数的构造器叫默认构造器,也叫无参构造器。构造器是一种特殊类型的方法,因为它没有返回值。这与void不同。对于void,尽管方法本身不会自动返回原创 2017-12-23 12:26:42 · 173 阅读 · 0 评论 -
java学习笔记(一)——对象
虽说java已在公司运用挺长时间了,但深感在许多方面不够深入,鉴于但凡高手前辈,无一不是基础扎实之人,故决定再重新研究java,写此文以记之。1.1 抽象过程所有编程语言都提供抽象机制。面向对象将问题空间中的元素及其在解空间中的表示称为“对象”。这种思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定的问题。Alan Kay总结了第一个面向对象、Java所基于的语原创 2017-12-17 22:38:59 · 134 阅读 · 0 评论 -
java学习笔记(四)——访问权限控制
4.1 包:库单元当编写一个Java源代码文件时,此文件通常被称为编译单元。每个编译单元都必须有一个文件后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括后缀)。每个编译单元只能有一个public类,否则编译器不会接受。如果在该编译单元之中还有额外的类的话,在包之外是无法看见这些类的,这是因为它们不是public类,而且它们主要用来原创 2017-12-25 23:14:21 · 188 阅读 · 0 评论 -
java学习笔记(十)——泛型
10.1 简单泛型使用泛型最重要的原因就是为了创造容器类。有些情况下,我们希望容器能够同时持有多种类型的对象。通常我们只会使用容器来存储一种类型的对象。泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。与其使用Object,更想暂时不指定类型,而且稍后再决定使用什么类型,要达到这个目的,需要使用类型参数,用尖括号括住,放在类名后面。然后在使用这个类原创 2018-01-21 12:42:53 · 248 阅读 · 0 评论 -
java学习笔记(十一)——数组
11.1 数组的特殊之处数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性序列,使得元素访问非常快速。但是为这种速度付出的代价是数组对象的大小被固定,并且在其生命周期不可改变。尽管通常应该首选ArrayList而不是数组,但是这种弹性需要开销,因此,ArrayList的效率还是比数组原创 2018-01-21 14:29:53 · 187 阅读 · 0 评论 -
java学习笔记(十二)——容器深入
12.1 填充容器就像Arrays一样,相应的Collections类也有一些实用的static方法,其中包括fill()。与Arrays版本一样,此fill()方法也是只复制同一个对象用来填充整个容器的,并且只对List对象有用,但是所产生的列表可以传递给构造器或addAll方法。12.1.1 一种generator解决方案事实上,所有的Collection子类型都有一个接收另一个C原创 2018-01-21 20:53:56 · 136 阅读 · 0 评论 -
java学习笔记(五)——多态
在面向对象的设计语言中,多态是继数据抽象和继承之后的第三种基本特征。“封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过细节“私有化”把接口和实现分离。而多态的作用则是消除类型之间的耦合关系。继承允许将对象视为它自己的类型或其基类型来处理,而同一份代码也就可以毫无差别地运行在不同类型之上了。多态方法则允许一种类型表现出与其他相似类型之间的区别,只要他们都是从同一基类导出。这种区别是原创 2017-12-27 22:34:58 · 122 阅读 · 0 评论 -
java学习笔记(六)——接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。6.1 抽象类与抽象方法Java提供了一个叫做抽象方法的机制,这种方法是不完整的,仅有声明而没有方法体。包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须限定为抽象的(否则编译器就会报错)。如果一个抽象类继承,并想创建新类的对象,那么就必须为基类中的所有抽象方法提供定义。如果不这样坐,那么导原创 2017-12-30 10:54:25 · 146 阅读 · 0 评论 -
java学习笔记(二)——对象扩展
2.1 用引用操纵对象尽管一切都看作对象,但操纵的标识符实际上是对象的一个reference。此外,拥有一个引用,并不一定有一个对象与之关联。如:String s。但这里所创建的只是引用,并不是对象。如果此时向s发送一个消息,就会返回一个运行时错误。因为此时s实际上没有与任何事物相关联。因此,一种安全的做法是:创建一个引用的同时便进行初始化。2.2 必须有你创建所有对象2.原创 2017-12-20 22:06:23 · 773 阅读 · 0 评论