1.一个java文件中可以有多个类,但是只能有一个public类,并且该类需要与文件同名

第6章

对象的软,弱和虚引用

1、强引用---创建一个对象,并把这个对象赋给一个引用变量。一个对象被一个以上的强引用变量所引用时,它处于可达状态,不可能被系统垃圾回收机制回收

2、软引用--通过SoftReferene类来实现,对于软引用,系统垃圾回收时,如果系统内存不够用,系统可能会回收它。

3、弱引用--通过WeakReference累实现。对于弱引用对象而言,当系统垃圾回收时,不管系统内存是否足够用,总是会回收该对象所占用的内存。WeakReference<Car> weakCar = new WeakReference(Car)(car);

4、虚引用

虚引用通过PhantomReference类来实现,需引用类似于完全没有引用

第7章

常用类

1、 String、StringBuffer、StringBuilder

String类是不可变类

StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建后,通过StringBuffer提供的append,insert,

reverse,setCharAt、setLength等方法可以改变这个字符串对象的字符序列。可以通过toString()方法将其转换为一个String对象。

StringBuilder和StringBuffer类似,不同的是StringBuffer是线程安全的,StringBuilder是线程不安全的,通常情况下优先选用StringBuilder

2、Math类

3、ThreadLocalRandom与Random

用于生成伪随机数

4、 BigDecimal类

为了解决float和double两个浮点数会丢失精度的问题,提供了BigDecimal类。

但是在使用BigDecimal时,不要直接使用double浮点数作为构造器参数,否则同样会发生精度丢失的问题

两个使用示例如下:

BigDecimal f1 = new BigDecimal(“0.01”)

BigDecimal f1 = BigDecimal.valueOf(0.01)

5、日期和时间类

正则表达式

1、正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。

Java集合

1、集合类

从collection接口集成的集合类有List Set Queue

另外一个种集合类是Map

Set的三个实现类HashSet、TreeSet和EnumSet都是线程不安全的。通常可以通过Collections工具类的synchronizedSortedSet方法来“包装”该Set集合。

List有ArrayList和Vector,前者是线程不安全的,后者是线程安全的。优先使用ArrayList。

PriorityQueue 按队列元素的大小进行排序,排序分两种:自然排序和定制排序

Deque是双端队列

LinkedList同时集成类List和Deque接口,可以同时作为List集合,双端队列,栈使用。

HashMap和HashTable,HashTable是线程安全的,不允许key值是null

HashMap是线程不安全的,允许kay值为null

LinkedHashMap是HashMap的子类

LinkedHashSet是HashSet的一个子类。

Properties类是Hashtable类的子类

2、Collections类中提供了多个synchronizedXxx()方法,该方法可以将指定集合包装城线程同步的集合,从而解决多线程并发访问集合时的线程安全问题。

第九章 泛型

泛型的引入:为了解决集合类中不能记录对象类型带来的问题

Java 的参数化类型被称为泛型。

1、泛型类

List<String> ls = new ArrayList<> ();

Map<String, Integer> = new HashMap<>();

2、泛型方法

第10章 异常处理

Java的异常处理机制主要依赖于try,catch,fainnally,throw和throws五个关键字

try{

正常代码

}

catch(Excepthion e){

异常代码

}

一个try后面可以有多个catch,先写子类异常,再写父类异常,即先处理小异常再处理大异常。一个catch中可以捕获多个异常,用|分割

finnally里面尽量不使用return或throw

try,catch中有return或throw语句时,系统遇到这两个语句,先跳到finally里面执行finally里面的语句,执行玩再回到try,catch中执行return或throw跳出该方法;

如果finanlly中也含有return或throw方法,则会直接中finnally的return或throw处结束该方法,try,catch里的return或throw将得不到执行。

try catch,finally块中,try块试必须的,catch和finally至少存在一个。

System.exit(1)语句用来退出虚拟机。

throw和throws异常

如果throw语句抛出的是Checked异常,则该throw语句要么处于try块中,显式捕获异常,要么放在一个带throws声明抛出的方法中,即把该异常交给该方法的调用者处理。运行时异常无需处理。

示例1:

try{

throw new Exception(“大饭店”);

}

catch(Exception e)

{

}

示例2:

public static void throwChecked(int a)throws exception

{

throw new Exception(“”);

}

第14章 注解

注解不影响代码的执行,不同的注解有不同的含义

注解分两类:

一类----Annotaton 是java.lang.Annotation接口。

两个常用的注解 :限定重新父类方法@Override; 标记已过时@Deprecated

第15章 输入/输出

序列化----把Java对象转换成二进制字节流,然后把二进制字节流写入网络或者永久存储器。

第16章 多线程

1、并发性和并行性

并行指同一时刻有,有多条指令在多个处理器上同时执行;

并发指同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进行同时执行的效果。

2、进程是系统进行资源分配和调度的独立单位。

一个进程可以拥有多个线程,一个线程必须有一个父进程。线程可以拥有自己的堆栈、自己的程序计数器和自己的局部变量,但不拥有系统资源,它与父进程的其他线程共享该进程所拥有的系统资源。

3、创建多线程的两种方法

  继承Thread类

实现Runnable接口

4、线程的生命周期

创建->就绪->执行->阻塞->死亡

5、后台线程

在后台运行的现成称为后台线程。

特征:如果所有的前台现成都死亡,后台线程会自动死亡。

6、线程安全

同步与互斥

7、线程通信

wait , notify, notifyall

8、线程池

第18章

1、类加载器

当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三个步骤来对该类进行初始化。

类加载是讲类的class文件读入内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。

java疯狂讲义--摘要的更多相关文章

  1. java8--类加载机制与反射(java疯狂讲义3复习笔记)

    本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的clas ...

  2. 参考《Java疯狂讲义》

    参考<Java疯狂讲义>Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例 1. Lambda ...

  3. java8--NIO(java疯狂讲义3复习笔记)

    NIO采用内存映射文件的方式处理输入输出,NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了(这种方式模拟了操作系统上的虚拟内存的概念),通过这种方式来进行输入输出比传统的 ...

  4. Java学习 面向对象(下)——Java疯狂讲义th4

    面向对象(下) [TOC] 包装类 通过包装类可以把8个基本类型的值包装成对象使用. 自动拆箱.自动装箱 把字符串类型值转换成基本类型的值: 包装类的 parseXxx(String s)静态方法 包 ...

  5. 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制

    内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...

  6. 《Java疯狂讲义》(第3版)学习笔记 1 - 如何学习Java

    1.Java是一种面向对象语言,不要简单当做脚本使用.从基础学起,不要从Spring.J2EE.Hibernate和EJB开始学. 2.不要浮躁,应该扎扎实实先学好Java语言,然后按Java本身的学 ...

  7. 流程控制与数组——Java疯狂讲义

    顺序结构 if分支语句      if{} 可以有多个else if{} else{} 可以省略 switch分支语句 while循环 do while循环 for循环 嵌套循环 控制循环结构 理解数 ...

  8. java8--网络编程(java疯狂讲义3复习笔记)

    重点复习一下网络通信和代理 java的网络通信很简单,服务器端通过ServerSocket建立监听,客户端通过Socket连接到指定服务器后,通信双方就可以通过IO流进行通信. 需要重点看的工具类:I ...

  9. java8--异常处理(java疯狂讲义3复习笔记)

    try,catch,finally,throw,throws java将异常分为两种,Checked异常和Runtime异常. IndexOutOfBoundsException NumberForm ...

随机推荐

  1. 使用 Node.js 搭建微服务网关

    目录 Node.js 是什么 安装 node.js Node.js 入门 Node.js 应用场景 npm 镜像 使用 Node.js 搭建微服务网关 什么是微服务架构 使用 Node.js 实现反向 ...

  2. Netty中的LoggingHandler()

    当添加.addLast("logging", new LoggingHandler(LogLevel.INFO))这行代码时 Netty就会以给定的日志级别打印出LoggingHa ...

  3. Vue计算属性的用法

    计算属性是个很好玩的东西,在这里面可以对数据模型进行操作,·也可以使用getter,setter方法.使用的话也是非常的简洁明了 这里写个例子 <!DOCTYPE html> <ht ...

  4. JAVA—集合框架

    ref:https://blog.csdn.net/u012961566/article/details/76915755 https://blog.csdn.net/u011240877/artic ...

  5. php静态变量与方法与phar的使用

    本节用类与静态变量改造之前的例子:php根据命令行参数生成配置文件 ghostinit.php: <?php class ghostinit{ static $version = 'ghost ...

  6. Software-Defined Networking之搬砖的故事

    在很久很久以前,有一个村子. 村里的每一户,都有一个男人和一个女人. 每一户,都以搬砖为生. 从不同的地方,搬到不同的地方. 男人负责搬砖,女人负责告诉男人往哪搬. 每个家庭,都服从村委会的指挥. 村 ...

  7. MongoDB数据库在centos下的操作

    简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库 ...

  8. js之面向对象

    本文的面向对象分为ES6和ES6之前的,重点学习ES6的===============================一.面向对象 1.什么是面向对象 a)什么是对象:万物都可以抽象成对象 时间对象 ...

  9. Java String 和JSON转换

    Java项目中经常会使用到JSON格式和String格式的数据,所以二者之间的转换也是一个重要的步骤. Sting类型的数据.如: 转化为JSONObject的步骤如下: 1).把字符串转成 JSON ...

  10. InfoQ观察:Java EE的未来

    原创 2017-03-06 Charles Humble 聊聊架构 作者|Charles Humble编辑|薛命灯 作为InfoQ下一年编辑关注点审核工作的一部分,我们挑选了Java作为深入探讨的主题 ...