
Java核心技术
文章平均质量分 92
Java核心技术读书笔记
花开不合阳春暮
博客中只是一些之前学习的笔记,现在个人改在本地记录笔记,优快云博客不在维护了!!!
展开
-
Java核心技术 并发3
8.Callable与FutureRunnable封装一个异步运行的任务,可以把它想象成一个没有参数和返回值的异步方法。Callable与Runnable类似,但是有返回值。Callable接口是一个参数化的类型,只有一个方法call。@FunctionalInterfacepublic interface Callable<V> { V call() throws Ex...原创 2020-01-10 14:36:03 · 214 阅读 · 0 评论 -
Java核心技术 并发2
同步阻塞每个Java对象有一个锁。线程可以通过同步方法获得锁。还有通过进入一个同步阻塞获得锁。当线程进入如下形式的阻塞:// 这是同步块的语法synchronized (obj) {}于是它获得obj的锁。有时会发现“特殊的”锁:public class Bank { ... private Object lock = new Object(); ... public voi...原创 2020-01-09 15:01:28 · 185 阅读 · 0 评论 -
Java核心技术 并发
一个程序同时执行多个任务,每个任务称为一个线程(thread),它是线程控制的简称。可以同时运行一个以上线程的程序称为多线程程序(multithreaded)。多线程和多进程的区别:本质区别在于每个进程都拥有自己的一套变量,而线程则共享数据。共享变量使线程之间的通信比进程之间的通信更有效、更容易。在有些操作系统中,与进程相比,线程更加轻量级,创建、撤销一个线程比启动新进程的开销要小得多。1.什...原创 2020-01-07 16:15:24 · 935 阅读 · 0 评论 -
Java核心技术 国际化
1.Locale对象对于日期、数字等的显示不同国家有不同,又若干个专门负责格式处理的类。为了对格式化进行控制,可以使用Locale类。locale由多达5个部分构成:1.一种语言,由2个或3个小写字母表示:2.可选的一段脚本,由首字母大写的四个字母表示。例如Hant(繁体中文字符)3.可选的一个国家或地区,由2个大写字母或3个数字表示,例如US(美国)4.可选的一个变体,用于指定各...原创 2020-01-04 17:44:57 · 504 阅读 · 0 评论 -
Java核心技术 日期和时间API
1.时间线闰秒,许多计算机系统使用“平滑”方式来人为地紧邻闰秒之前让时间变慢或变快,以保证每天都是86400秒。Java的Date和Time API规范要求Java使用的时间尺度为:1.每天86400秒2.每天正午与官方时间精确匹配3.在其他时间点上,以精确定义的方式与官方时间接近匹配Java中,Instant表示时间线的某个点。被称为新纪元的时间线原点被设置为穿过伦敦格林尼治皇家天文...原创 2020-01-02 19:20:19 · 338 阅读 · 1 评论 -
Java核心技术 数据库编程
1996年,Sun发布了第一版的Java数据库连接(JDBC,根据Oracle的声明,JDBC是一个注册了商标的术语,而不是Java Database Connectivity的缩写)API,使编程人员可以通过这个API接口连接到数据库,并使用结构化查询语句(即SQL)完成对数据库的查找与更新(SQL是数据库访问的业界标准)。1.JDBC的设计JDBC提供一个驱动管理器,以允许第三方驱动...原创 2017-02-04 10:42:29 · 386 阅读 · 0 评论 -
Java核心技术 正则表达式补充
1.QulifiersGreedy quantifiers X? X* X+ X{n} X{n,} X{n,m}Reluctant quantifiers X?? 后多跟一个问号Possessive quantifiers X?+ 后多跟一个加号public class Test { public static void main(String a...原创 2017-02-09 15:24:23 · 227 阅读 · 0 评论 -
Java核心技术 正则表达式
正则表达式(regular expression)用于指定字符串的模式,可以在任何需要定位匹配某种特定模式的字符串的情况下使用正则表达式。简单示例:[Jj]vaa.+匹配下列形式的所有字符串:1.第一个字母是J或j2.接下来三个字母是ava3.字符串的其余部分有一个或多个任意字符构成大多数情况下,一小部分很直观的语法结构就足够了:1.字符类(character cl...原创 2017-02-09 15:00:14 · 349 阅读 · 0 评论 -
Java核心技术 输入与输出3
5.操作文件Path接口和Files类是在java SE 7中添加进来的,它们用起来比自JDK 1.0以来就一直使用的File类要方便的多。PathPath表示的是一个目录名序列,其后还可以跟着一个文件名。路径中的第一个部件可以是根部件,例如/或C:\,而允许访问的根部件取决于文件系统。以根部件开始的路径是绝对路径,否则就是相对路径(相对于项目的根目录,即src的上级)。Path abso...原创 2019-12-26 19:39:23 · 223 阅读 · 0 评论 -
Java核心技术 输入与输出2
4.对象输入/输出流与序列化存储同类型数据时很少具有相同的类型(继承会出现存储多态集合),Java语言支持一种称为对象序列化(object serialization),它可以将任何对象写出到输出流中,并在之后将其读回。保存和加载序列化对象为了保存对象数据,首先需要打开一个ObjectOutputStream对象:ObjectOutputStream out = new Obje...原创 2017-02-08 17:02:50 · 800 阅读 · 0 评论 -
Java核心技术 输入与输出
1.输入/输出流从其中读入一个字节序列的对象成为输入流,而可以向其中写入一个字节序列的对象成为输出流。这些字节序列的来源地和目的地可以是文件,而且通常是文件,但也可以是网络连接,甚至是内存块。抽象类InputStream和OutPutStream构成了输入/输出(I/O)类层次结构的基础。面向字节的流不便于处理以Unicode形式存储的信息(字符使用多个字节表示),所以从抽象类Reade...原创 2017-02-04 10:41:55 · 403 阅读 · 0 评论 -
Java核心技术 Java SE 8的流库2
9.收集到映射表中Collectors.toMap方法有两个函数引元,用来产生映射表的键和值:Map<Integer, String> idToName = people.collect(Collectors.toMap(Person::getId, Person::getName));通常情况下,值应该是实际的元素,因此第二个函数可以使用Function.identity()...原创 2019-12-18 21:27:52 · 227 阅读 · 0 评论 -
Java核心技术 Java SE 8的流库
1.从迭代到流的操作在处理集合时,通常迭代遍历它的元素:String contents = new String(Files.readAllBytes(Paths.get("alice30.txt")), StandardCharsets.UTF_8);List<String> words = Arrays.asList(contents.split("\\PL+"));lon...原创 2019-12-17 19:14:13 · 506 阅读 · 0 评论 -
Java核心技术 集合3
4.视图与包装器使用_视图(views)_可以获得其他的实现了Collection接口和Map接口的对象。映射类的keySet方法就是一个这样的示例。keySet方法返回一个实现Set接口的类对象,这个类的方法对原映射进行操作。这种集合称为视图。轻量级集合包装器Arrays类的静态方法asList将返回一个包装了普通Java数组的List包装器。这个方法可以将数组传递给一个期望得到列表或集...原创 2019-12-13 19:36:40 · 157 阅读 · 0 评论 -
Java核心技术 泛型程序设计2
6.约束与限制性Java泛型时需要考虑的一些限制,大多数限制由类型擦除引起。不能用基本类型实例化类型参数不能用类型参数代替基本类型。因此没有Pair< double >,只有Pair< Double >。其原因是类型擦除之后,Pair类含有Object类型的域,而Object不能存储double值。运行时类型查询只适用于原始类型虚拟机中的对象有一个特定的非泛型类型...原创 2019-12-03 17:49:51 · 209 阅读 · 0 评论 -
Java核心技术 泛型程序设计
为什么要使用泛型程序设计原创 2019-12-02 16:38:28 · 112 阅读 · 0 评论 -
Java核心技术 异常、断言和日志2
4.使用断言断言的概念如果一个数为负值,抛出一个异常:if (x < 0) { throw new IllegalAccessException("x < 0");}但这段代码会一直保留在程序中,即使测试完毕也不会自动删除。断言机制允许在测试期间想代码插入一些检查语句,当代码发布时,这些插入的检测语句将会被自动地移走。Java引入关键字assert:asser...原创 2019-11-26 21:53:22 · 212 阅读 · 0 评论 -
Java核心技术 接口、lambda表达式与内部类2
4.内部类==内部类(inner class)是定义在另一个类中的类。为什么需要内部类,有三点:1.内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据2.内部类可以对同一个包中的其他类隐藏起来3.当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)==内部类比较便捷使用内部类访问对象状态...原创 2019-11-25 14:16:25 · 186 阅读 · 0 评论 -
Java核心技术 接口、lambda表达式与内部类
1.接口接口概念接口(interface)技术,主要描述类具有什么内容,而并不给每个功能的具体实现。一个类可以实现(implement)一个或多个接口。接口不是类,而是对类的一组需求描述。如果类遵从某个特定接口,那么就履行这项服务。Arrays类中的sort方法承诺可以对对象数组进行排序,但要求满足下列前提:对象所属的类必须实现Comparable接口。public interface...原创 2019-11-19 19:04:45 · 159 阅读 · 0 评论 -
Java核心技术 继承2
3.泛型数组列表一旦确定了数组的大小,改变它就不太容易。在Java中解决这个问题最简单的方法是使用Java中另一个被称为ArrayList的类,在添加和删除元素时,具有自动调节数组容量的功能。ArrayList是一个采用了类型参数(type parameter)的泛型类(generic class)。ArrayList<Employee> staff = new ArrayLis...原创 2019-11-13 21:04:12 · 174 阅读 · 0 评论 -
Java核心技术 专业术语
JDK:Java Development Kit,Java开发工具包1.2 ~ 1.4版本被称为Java SDK:Software Development Kit,软件开发工具包JRE:Java Runtime Environment,Java运行时环境Java 2:这种提法始于1998年,Sun的销售认为增加小数点的数值改变版本并没有反映出JDK1.2的重大改变,由于发布之后在意识到这个问...原创 2019-10-11 19:13:00 · 143 阅读 · 0 评论 -
Java核心技术 集合2
数组列表List接口用于描述一个有序集合,并且集合中每个元素的位置十分重要。有两种访问元素的协议:一种是用迭代器,另一种是用get和set方法随机地访问每个元素。后者不适合链表,但对数组却很有用。集合类库提供了一种大家熟悉的ArrayList类,这个类也实现了List接口。ArrayList封装了一个动态再分配的对象数组。在需要动态数组时,会用ArrayList取代Vector:Vec...原创 2017-02-04 17:25:41 · 302 阅读 · 0 评论 -
Java核心技术 集合
1.Java集合框架将集合的接口与实现分离与现代的数据结构类库的常见情况一样,Java集合类库也将接口与实现分离。队列接口指出可以在队列的尾部添加元素,在队列的头部删除元素,并且可以查找队列中的元素个数。当需要收集对象,并按照“先进先出”的规则检索对象时就应该使用队列。// 标准库中接口的简化形式public interface Queue<E> { voi...原创 2017-02-04 17:10:04 · 229 阅读 · 0 评论 -
Java核心技术 异常、断言和日志
1.处理异常如果由于出现错误而使得某些操作没有完成,程序应该:1.返回到一种安全状态,并能够让用户执行一些其他命令2.允许用户保存所有操作的结果,并以妥善方式终止程序。可能出现的错误和问题:1.用户输入错误2.设备错误3.物理限制4.代码错误对于方法中的一个错误,传统的做法是返回一个特殊的错误码。异常处理机制在代码无法执行后,会搜索能够处理这种异常状...原创 2017-02-04 10:41:39 · 347 阅读 · 0 评论 -
Java核心技术 继承
1.类、超类和子类定义子类关键字extends表示继承。public class Manager extends Employee { 添加方法和域}关键字extends表明正在构建的新类派生于一个已存在的类。已存在的类被称为超类、基类或父类。新类称为子类、派生类或孩子类。Java程序员更喜欢用超类和子类。子类比超类拥有的功能更加丰富,Manager比员工多一份奖...原创 2017-02-04 10:41:36 · 273 阅读 · 0 评论 -
Java核心技术 对象与类3
7.包Java允许使用包(package)将类组织起来。借助包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理。使用包的主要原因是确保类名的唯一性。比如两个包都有Employee类,只要放在不同的包中,就不会产生冲突。为了保证包名唯一,Sun建议将公司因特网域名的倒序做为包名。类的导入一个类可以使用所属包中的所有类,以及其他包中的公有类。两种方式访问...原创 2017-02-04 10:41:34 · 213 阅读 · 0 评论 -
Java核心技术 对象与类2
4.静态域与静态方法静态域如果将域定义为static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有一份自己的拷贝。class Employee { private static int nextId = 1; private int id;}每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextId域。即使没有一个雇员对象,静态...原创 2017-02-04 10:41:29 · 240 阅读 · 0 评论 -
Java核心技术 对象与类
1.面向对象程序设计概述面向对象程序设计(简称OOP),Java是完全面向对象的。面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。在OOP中,不必关系对象的具体实现,只要能够满足用户的需求即可。类类(class)是构造对象的模版或蓝图。由类构造(construct)对象的过程被称为创建类的实例(instance)。封装(encapsula...原创 2017-02-04 10:41:26 · 342 阅读 · 0 评论 -
Java核心技术 基础程序设计结构2
6.字符串Java字符串就是Unicode字符序列,Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类(String),每个用双引号括起来的字符串都是String类的一个实例。子串substring(a, b),可以从一个较大的字符串提取出一个子串,第二个参数时不想复制的第一个位置。substring的优点是容易计算子串的长度,长度为b-a。String...原创 2017-02-04 10:41:23 · 255 阅读 · 0 评论 -
Java核心技术 基本程序设计结构
1.一个简单的Java应用程序public class FirstSample { public static void main(String[] args) { System.out.println("We will not use 'Hello, world!'");// is this to cute? }}关键字 public:access m...原创 2017-02-04 10:41:20 · 319 阅读 · 0 评论