java疯狂讲义--摘要
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疯狂讲义--摘要的更多相关文章
- java8--类加载机制与反射(java疯狂讲义3复习笔记)
本章重点介绍java.lang.reflect包下的接口和类 当程序使用某个类时,如果该类还没有被加载到内存中,那么系统会通过加载,连接,初始化三个步骤来对该类进行初始化. 类的加载时指将类的clas ...
- 参考《Java疯狂讲义》
参考<Java疯狂讲义>Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数式接口)的实例 1. Lambda ...
- java8--NIO(java疯狂讲义3复习笔记)
NIO采用内存映射文件的方式处理输入输出,NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了(这种方式模拟了操作系统上的虚拟内存的概念),通过这种方式来进行输入输出比传统的 ...
- Java学习 面向对象(下)——Java疯狂讲义th4
面向对象(下) [TOC] 包装类 通过包装类可以把8个基本类型的值包装成对象使用. 自动拆箱.自动装箱 把字符串类型值转换成基本类型的值: 包装类的 parseXxx(String s)静态方法 包 ...
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...
- 《Java疯狂讲义》(第3版)学习笔记 1 - 如何学习Java
1.Java是一种面向对象语言,不要简单当做脚本使用.从基础学起,不要从Spring.J2EE.Hibernate和EJB开始学. 2.不要浮躁,应该扎扎实实先学好Java语言,然后按Java本身的学 ...
- 流程控制与数组——Java疯狂讲义
顺序结构 if分支语句 if{} 可以有多个else if{} else{} 可以省略 switch分支语句 while循环 do while循环 for循环 嵌套循环 控制循环结构 理解数 ...
- java8--网络编程(java疯狂讲义3复习笔记)
重点复习一下网络通信和代理 java的网络通信很简单,服务器端通过ServerSocket建立监听,客户端通过Socket连接到指定服务器后,通信双方就可以通过IO流进行通信. 需要重点看的工具类:I ...
- java8--异常处理(java疯狂讲义3复习笔记)
try,catch,finally,throw,throws java将异常分为两种,Checked异常和Runtime异常. IndexOutOfBoundsException NumberForm ...
随机推荐
- 【转载】Nginx+Tomcat 动静分离实现负载均衡
0.前期准备 使用Debian环境.安装Nginx(默认安装),一个web项目,安装tomcat(默认安装)等. 1.一份Nginx.conf配置文件 1 # 定义Nginx运行的用户 和 用户组 如 ...
- 百度智能小程序弹窗组件wcPop|智能小程序自定义model弹窗模板
百度智能小程序自定义弹窗组件wcPop|百度小程序model对话框|智能小程序弹窗界面模板 最近百度也推出了自己的智能小程序,如是就赶紧去试了下,官方提供的api还不是狠完整.而且官方提供的弹窗组件也 ...
- JS 为什么在涉及到模块开发this的时候使用类似 self = this 的形式 p7
JS 动态作用域(调用栈)实际上也没有准确说明的,大多数我们使用对多和认知上大多是词法作用域,但是this的机制跟动态作用域很像. var a = 2; function fn(){ console. ...
- 说说gogoTester-nodejs 的实现
一直在使用goagent,所以对于查找google可用ip有了很大的兴趣,在github上面发现有一个项目是gogoTester,是用来查找google ip的,于是突发奇想自己用nodejs写了一个 ...
- 原生css 中变量的使用
前两天看到阮大神的一篇在css中使用变量的文章,整理了一下. 这个重要的 CSS 新功能,所有主要浏览器已经都支持了.本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大. 一.变量的声明 ...
- @Transactional事务不起作用原因
想必也有人遇到@Transactional事务不起作用,当时我遇到这个问题也很懵逼,明明别人的代码跟自己的一样,为什么别人的@Transactional事务起作用而自己的事务却没有起作用.如下举例子说 ...
- 只有mdf文件的恢复方法
EXEC sp_attach_single_file_db @dbname = 'AdventureWorksDW2012_Data',@physname = 'D:\Program Files (x ...
- 新飞电器的BI建设案例
一.河南新飞电器简介 河南新飞电器在制造行业内属于领先地位,其信息化程度较高,面对系统多且杂乱的情况,一个集中展示数据的平台就显得尤为重要.使用BI就是为了在一个相对统一的平台展示需要查看的数据,供决 ...
- 调研getfit
Gitfit实际是一个提供私人教练的服务,其主要业务有三种,“局部减脂”每天0.5-1小时,对局部高强度的刺激,快速达到塑形目地,不需要复杂器械,0基础也能跟上训练进度,并提供咨询师.营养师团队.专属 ...
- PHP将Base64图片转换为本地图片并保存
本文出至:新太潮流网络博客 /** * [将Base64图片转换为本地图片并保存] * @E-mial wuliqiang_aa@163.com * @TIME 2017-04-07 * @WEB h ...