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. Ubuntu安装完成后设置root密码

    安装完ubuntu后没有默认的root密码,如果要设置root密码需要进行如下步骤: 1 sudo passwd 2 连续输入两次新密码

  2. 【原】DjianGo Windows7下的安装

    安装DjianGo前必须安装Python环境,由于已经装过,这里不再贴出安装Python的步骤,我的Python版本是3.2. 1.下载django https://github.com/django ...

  3. 如何监听对 HIVE 元数据的操作

    目录 简介 HIVE 基本操作 获取 HIVE 源码 编译 HIVE 源码 启动 HIVE 停止 HIVE 监听对 HIVE 元数据的操作 参考文档 简介 公司有个元数据管理平台,会定期同步 HIVE ...

  4. Linux常用基本命令(paste)

    paste命令 作用:合并文件 格式: paste [option] [file] 1,把两个文件的内容,按行合并 ghostwu@dev:~/linux/paste$ ls ghostwu1.txt ...

  5. 关于子元素的margin-top对父级容器无效

    如果不想看那么长,看下面这句话就好了. 刚开始我没看到这个总结时一直是使用自己摸索出来paddin-top解决,发现该方式并不好.亲测给父级加一个overflow不为visiable的属性就直接解决了 ...

  6. vue2.0 移动端,下拉刷新,上拉加载更多 插件

    本人正在基于 vue2.0 + webpack + es6 搭建前端架构,整理了部分插件,下面这个是下拉更新 上拉更多的,挺好用的,分享给大家. 直接上代码,不懂的多看几遍,下面我换会告诉大家如何使用 ...

  7. PHP如何批量更新MYSQL中的数据

    最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type ...

  8. tar.xz文件的解压

    xz是绝大数linux默认就带的一个压缩工具. 压缩包xz格式的居然比7z还要小. 不过xz也有一个坏处就是压缩时间比较长,比7z压缩时间还长一些.不过压缩是一次性的,所以可以忽略. xz压缩文件方法 ...

  9. Hbase到Solr数据同步及Solr分离实战

    1. 起因 由于历史原因,公司的数据是持久化在HBase中,查询是通过Solr来实现,这这样的设计必然涉及到要把Hbase中的数据实时同步到Solr,但所有的服务都在一个同一个集群及每台机子都安装了很 ...

  10. oracle instr函数(oracle 用instr 来代替 like)

    oracle instr函数 对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置.例如: SQL> select instr('Oracle','or') position ...