Java编程思想
Java编程思想的学习笔记
进阶的小名
There's no such thing as can't.
展开
-
Java编程思想笔记目录
祝各位 程序???? 节日快乐????![在这里插入图片描述](https://img-blog.csdnimg.cn/2020102311591445.gif#pic_center)写在前面: 前阵子,小名“偷偷地”发了一批文章,是小名的一些读书笔记✍,那么为什么要把笔记发出来呢,嘻嘻,当然是小名的????不太灵光啦????但是吧,小名坐地铁或者走在大街上的时候,脑袋里总是会想一些有的没的,不排除会想一些Java基础的知识,时常联系不起来,就有可能别扭一整天。所以呢,把它发出来一方面是为了和大原创 2020-10-24 11:05:22 · 67435 阅读 · 114 评论 -
第二十一章 并发
文章目录0.并发的多面性改进代码设计2.基本线程机制定义任务Thread类使用Executor休眠优先级让步后台进程编码的变体加入一个线程线程组捕获异常3.共享受限资源不正确地访问资源解决共享资源竞争原子性与易变性临界区线程本地存储4.终结任务在阻塞时终结5.线程之间的协作wait() 与 notifyAll()notify() 与 notifyAll()生产者与消费者生产者-消费者与队列6.死锁发生死锁同时满足的4个条件7.新类库中的构件CountDownLatchCyclicBarrierDelayQu原创 2020-10-11 17:01:50 · 62106 阅读 · 28 评论 -
第二十章 注解
文章目录0.概述1.基本语法定义注解元注解2.编写注解处理器注解元素3.使用apt处理注解4.将观察者模式用于apt5.基于注解的单元测试让测试类继承自泛型类的一个特定版本0.概述注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据注解使我们能够以将由编译器来测试和验证的格式,存储有关程序的额外信息注解的优点:更加干净易读的代码以及编译器类型检查等@Override,表示当前的方法定义将覆盖超类中的方法。如果你不小心拼写错误,或者方原创 2020-10-11 17:01:37 · 61600 阅读 · 28 评论 -
第十九章 枚举类型
文章目录1.基本enum特性方法2. 向enum中添加新方法覆盖enum的方法3.switch语句中的enum4.value()的神秘之处5.实现,而非继承6.随机选取7.使用接口组织枚举8.使用EnumSet替代标志9.使用EnumMap10.常量相关的方法11.多路分发使用enum分发关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用1.基本enum特性创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum原创 2020-10-11 17:01:25 · 61829 阅读 · 27 评论 -
第十八章 Java I/O系统
文章目录1.目录列表器目录使用工具2.输入和输出InputStream类型OutputStream类型3.添加属性和有用的接口通过FilterInputStream从InputStream读取数据通过FileOutputStream向OutputStream写入4.Reader和Writer更改流的行为5.自我独立的类:RandomAccessFileRandomAccessFile方法存储和恢复数据读取随机访问文件6. I/O流的典型使用方式缓冲输入文件从内存输入格式化的内存输入基本的文件输出7.文件读写原创 2020-10-11 17:01:09 · 62434 阅读 · 34 评论 -
第十七章 容器深入研究
文章目录1.完整的容器分类法2.填充容器复制同一个对象引用来填充容器一种Generator解决方案Map生成器使用Abstract类3.Collection的功能方法4.可选操作5.List的功能方法6.Set和存储顺序类型从输出看出SortedSet7.队列优先级队列双向队列8.理解Map标准的Java类库中包含了Map的几种基本实现,包括:实现Map接口SortedMapLinkedHashMap9.散列与散列码为速度而散列覆盖hashCode()10.选择接口的不同实现例如List接口Set接口对Li原创 2020-10-11 17:00:54 · 61584 阅读 · 30 评论 -
第十六章 数组
文章目录1. 数组为什么特殊2.数组是第一级对象对象数组和基本数组的区别:数组自动初始化的值:创建数组的方式:3.返回一个数组4.多维数组5.数组与泛型6.创建测试数据7.Arrays实用功能Arrays的静态方法复制数组(非Arrays的方法)数组的比较数组元素的比较数组排序在已排序的数组中查找1. 数组为什么特殊数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力在Java中,数组是一种效率最高的存储和随机访问对象引用序列的方式数组就是一个简单的线性序列,这使得元素访问非常原创 2020-10-11 17:00:39 · 61187 阅读 · 31 评论 -
第十五章 泛型
文章目录1.概念2.简单泛型一个元组类库3.泛型接口4.泛型方法一个set使用工具5.匿名匿名内部类6.构建复杂模型7.擦除的神秘之处迁移兼容性边界处的动作8.擦除的补偿泛型数组9.边界10.通配符通配符无界通配符11.泛型中的问题任何基本类型都不能作为类型参数。由于擦除的原因,泛型不能重载12.自限定的类型自限定参数协变13.动态类型安全14.异常catch语句不能捕获泛型类型的异常,但可以作为方法签名上throws 异常部分15.混型使用装饰器模型动态代理可以实现近似的混型16.潜在类型机制17.对缺乏原创 2020-10-11 17:00:26 · 63789 阅读 · 91 评论 -
第十四章 类型信息
文章目录概述1.为什需要RTTI2.Class对象类字面常量(类.class)泛化的Class引用新的转型语言3.类型转换前先做检查RTTI形式包括isInstance()和instaceofisAssignableFrom()4.注册工厂5.instanceof和Class的等价性6.反射:运行时的类信息java.lang.reflect包含:Field、Method、以及Constructor类RTTI和反射的区别7.动态代理Proxy类就是用来创建一个代理对象的类例题:8.空对象模拟对象与桩9.接口与原创 2020-10-11 17:00:13 · 60423 阅读 · 46 评论 -
第十三章 字符串
文章目录1.不可变String2.重载"+"与StringBuilder3.无意识的递归4.String上的操作5.格式化输出Formatter转换6.正则表达式基础创建正则表达式量词Pattern和Matcher7.扫描输入Scanner定界符用正则表达式扫描1.不可变StringString对象是不可变的,字符串对象作为方法的参数传递时,实际传递的是引用的一个拷贝.该引用所指的对象其实一直待在单一的物理位置上,从未动过给String对象赋值本质上是改变该String对象引用的指向2.重载"原创 2020-10-11 16:59:54 · 60459 阅读 · 47 评论 -
第八章 多态
文章目录1.向上转型2.转机方法调用绑定(2) 前期绑定(3) 后期绑定(动态绑定/运行时绑定)产生正确行为可拓展性缺陷:“覆盖”私有方法缺陷:域和静态方法3.构造器和多态构造器的调用顺序继承与清理构造器内部的多态方法的行为4.协变返回类型5.用继承进行设计用继承表达行为之间的差异,并用字段表状态上的变化纯继承与拓展向下转型与运行时类型识别1.向上转型把对某个对象的引用视为对基类型的的引用(例如:Wind继承于Instrument,在需要传递Instrument类型的时候,也可以传递Wind对象代替原创 2020-10-09 15:02:12 · 60898 阅读 · 29 评论 -
第十一章 持有对象
文章目录1.泛型和类型安全的容器ArrayList2.基本概念Controller 独立元素的序列(可以用foreach遍历)3.添加一组元素4.容器的打印Collection(每个槽只保存一个元素;[A,B])Map(关联数组,键找值)5.List允许添加,删除元素,自我调整尺寸6.迭代器ListIterator7.LinkedList查看删除8.Stack9.Set三种Set10.Map11.Queue在不删除的情况下返回队头返回并删除队头PriorityQueue12.Collection和Itera原创 2020-10-09 14:40:38 · 60187 阅读 · 34 评论 -
第十章 内部类
文章目录1.创建内部类2.链接到外部类3.使用 .this 和 .new4.内部类与向上转型5.在方法和作用域的内部类理由6.匿名内部类7.嵌套类接口内部的类多层嵌套类中访问外部类的成员8.为什么要内部类闭包与回调内部类与控制框架9.内部类的继承10.内部类可以覆盖吗11.局部内部类12.内部类标识符1.创建内部类把类的定义置于外围类的内部外部类将有一个方法指向内部类的引用如果想从外部类除了静态方法之外的任意地方创建内部类对象,必须在main()中2.链接到外部类内部类自动拥有对其外围类原创 2020-10-09 14:40:27 · 60553 阅读 · 30 评论 -
第九章 接口
文章目录1.抽象类和抽象方法2.接口3.完全解耦复用代码4.Java的多重继承5.通过继承来拓展接口6.适配接口7.接口中的域8.嵌套接口9.接口与工厂1.抽象类和抽象方法抽象类(抽象基类):通用接口建立起一种基本形式,以此表示导出类的共同部分如果一个类包含一个或多个抽象方法,该类必须限定为抽象类如果从一个抽象继承的,并像创建该新类对象,那么就必须为基类中的所有抽象方法提供方法定义我们可以创建一个没有任何抽象方法的抽象类抽象类和抽象方法可以使类的抽象性明确起来,并告诉用户和编译器怎么使用他们原创 2020-10-09 14:40:08 · 60000 阅读 · 30 评论 -
第七章 复用类
文章目录1.组合语法2.继承语法初始化基类3.代理4.结合使用组合和继承确保正确清理名称屏蔽5.在组合和继承之间选择6.Protected关键字7.向上转型为什么称为向上转型应该用组合还是继承?8.Final关键字final数据final方法9.初始化及类的加载继承于初始化1.组合语法定义:只需要在新类中产生现有类惰性初始化:先定义引用,在使用对象的时候再进行初始化2.继承语法定义:按照现有类类型创建新类初始化基类(1) 除非明确指出从其他类继承,否则就是在隐式的从Java的标准原创 2020-10-09 14:39:52 · 60001 阅读 · 25 评论 -
第六章 访问权限控制
文章目录1.包:库元素代码组织2.Java访问权限修饰词包访问权限public:接口访问权限private:你无法访问protected:继承访问权限4.类访问权限public > protected > 包访问权限 > private1.包:库元素每个编译单元必须有一个 .java 后缀的同名public类,每个编译单元只能有这样的一个public类。其他类用来给主public类提供支持代码组织(1) 当编译一个 .java 文件时,在 .java 文件中的灭一个类都原创 2020-10-09 14:39:39 · 60978 阅读 · 66 评论 -
第五章 初始化与清理
文章目录1.用构造器确保初始化2.方法重载3.默认构造器(无参构造器)4.this关键字static含义5.清理垃圾回收机器如何工作(5) 垃圾回收机制i.引用计数ii.停止—复制iii.标记—清扫iv.自适应v.”即时“编译vi.惰性评估6.成员初始化7.构造器初始化静态数据初始化8.初始化数组可变参数列表9.枚举类型(enum)1.用构造器确保初始化构造器与类同名在操作对象前,已为对象分配内存空间,并调用相应构造器对象已被初始化了2.方法重载构造器/方法名相同,形式参数不同(原创 2020-10-09 14:38:59 · 60014 阅读 · 30 评论 -
第十二章 通过异常处理错误
文章目录1.概念抛出异常后,做什么异常参数3.捕获异常4.创建自定义异常异常与记录日志5.异常说明6.捕获所有异常获取错误信息打印调用栈轨迹记录栈帧的当前状态返回一个表示此对象类型的对象查询这个class对象包含包信息的名称只产生类名称栈轨迹重新抛出异常异常链7.Java标准异常Throwable特例RuntimeException8.使用finally进行清理finally用来做什么缺憾:丢失异常9.异常的限制10.构造器11.异常匹配12.其他可选方式13.异常使用指南1.概念发现错误的时机:原创 2020-10-09 14:38:07 · 60326 阅读 · 29 评论 -
第四章 控制执行流程
文章目录3.迭代5.return6.break和continue8.switch3.迭代do-while:表达式第一次就为false,也执行一次while:表达式第一次就为false,不执行for:每次循环结束会执行一次步进,在初始化部分可以定义多个变量例:for(int i = 1 , int j = i + 10 ; i < 5 ; i++ , j = i*2 )5.return指定方法返回值导致当前方法退出,并返回那个值6.break和continue无穷循环:原创 2020-10-09 14:37:35 · 59936 阅读 · 39 评论 -
第三章 操作符
文章目录1.操作符5.算数操作符Random类:6.自动递增和递减7.关系操作符8.短路9.直接常量10.按位操作符如果两个输入位都是1如果输入位的某一个是1,不全是111.位移操作符[无符号]右移操作符(>>>)13.字符串操作符 + 和 +=15.提升17.操作符小节1.操作符+、-、*、/在最底层,java中的数据时通过使用操作符来操作的优先级:先乘除,后加减。括号优先级最高5.算数操作符取模(%):从整数除法中产生余数整数除法(/):直接去掉结果的小数位原创 2020-10-09 14:36:58 · 60913 阅读 · 31 评论