java零碎复习笔记总结

Wesley13
• 阅读 477

本文地址:http://www.cnblogs.com/maplefighting/p/8012196.html

1、新程序中不应该使用过时的Vector,Hashtable和Stack

2、  (1) ==对于基本数据类型,判断两个变量是否相等

(2) equals不能用于基本数据类型

(3) == 比较多是内存地址,equals比较的是值

(4) object类中 equals与==是一样的,而String,Integer重写了equals方法

(5) == 比 equals 快

3、java方法参数:

(1)一个方法不能改变一个基本数据类型的参数

(2)一个方法可以改变一个对象参数的状态

(3)一个方法不能让对象参数引用另一个新的对象

4、Java8 新特性

(1)接口的默认方法

interface Form{

default double sqrt(int a) { return ...;}

}

(2)lambda表达式:(param) -> (expression) , (param) -> {statements}

为函数式接口的一个具体实现实例

(3)方法引用

(4)函数式接口 :只定义一个抽象方法的接口

(5)Stream API

(7) Data Time API

(8) Optional类

5、在覆盖一个方法的时候,子类方法不能低于超类方法可见性

6、在Java程序设计语言中,所有链表实际上是双向链表

7、LinkedHashSet 和LinkedHashMap按访问顺序迭代

8、必须把package放在第一句

9、一个.class文件有且只有一个类编译后class

10、struts是mvc的一种实现,控制:struts-config.xml,角色为ActionServlet,模型:ActionForm,Action,JavaBean

11、Java锁的类型:(1)自旋锁  (2)阻塞锁  (3)可重入锁  (4)读写锁  (5)互斥锁  (6) 悲观锁  (7) 乐观锁  (8) 公平锁  (9) 非公平锁

(10) 偏向锁  (11) 对象锁  (12) 线程锁  (13) 锁粗化  (14) 轻量级锁  (15) 锁消除  (16) 锁膨胀  (17) 信号量

12、字符型 默认值:'\u0000' 范围0~2^16  -1

13、Arrays.asList() 将一个数组转化成List ,返回ArrayList对象,但并非java.util.ArrayList类,而是Arrays的静态内部类

14、Java接口允许定义成员,但必须是常量

15、Java程序的种类有Applet,Application,Servlet

16、集合类主要分为两大类:Collection和Map

(1)ArrayList是基于数组实现,不是线程安全,可以用Collection.SynchronizedList(List l)返回线程安全类

默认容量为10,扩容时在原来基础上加上容量的一半

(2)LinkedList是一个集成与AbstractSequentialList的双向链表,可以当作栈,队列或双端队列。

非同步的

实现序列化,写入到输出流时,先写“容量”,再写数据。读出输入流时,先取“容量”

对比:对于随机访问get和set。ArrayList优于LinkedList

当插入数据量很小时,两者相差不大,当插入的数据量大时,大约在1/10之间。LinkedList会优于ArrayList。

17、HashMap

a、默认容量为16,2的幂

b、加载因子 0.75f,哈希表达到时自动增长

c、初始化table是在第一次往hashMap put时

d、返回索引位置indexFor,返回h&(length-1)。必须是2的幂,使数据均匀分布

e、jdk1.8 扩容时要么在原位置,要么再移动2次幂。小于6时变链表,大于8时变树,数组长度大于64时才考虑树

18、LinkedHashMap  非线程安全,LRU算法。双向循环链表,在HashMap上封装的

19、Java基本数据类型  byte 8,short  16,int 32,long 64,float 32,double 64,boolean,char  16(unicode)

20、Object的重要方法:equals()   hashcode()    toString()     clone() (Java只实现浅拷贝,个人没验证过)   notify()    notifyAll()    wait() (可用于生产者消费者)

21、Object  Throwable    Error

Exception         InterruptedException

IOException

RuntimeException

Error不应该捕获,为虚拟机问题

runtimeException可以不try/catch

try可以不加catch

22、Java IO与NIO

IO       面向流       阻塞IO         无选择器

NIO     面向缓冲   非阻塞IO     有选择器

Java IO主要用装饰模式,适配器模式

标准的IO基于字节流与字符流进行操作,NIO通过通道和缓冲区进行操作。NIO可以异步使用IO

Java NIO主要有Channels,Buffers,Selectors

NIO可以使用(selector)一个(或几个单线程)管理多个通道

如果每个连接只发送少量数据,可以使用NIO,如果有少量连接发送大量数据使用IO

23、sleep和wait的区别

sleep是 Thread方法      wait是Object方法

不会释放锁                   会释放锁

24、Lock的await/signal和Object的wait/notify区别

(1)Lock不用synchroinzed把同步代码包装起来

synchroinzed(obj) {

wait(); //signal();

}

(2)阻塞需要另一个对象condition

ReetrantLock lock = new ...();

Condition condition = lock.newCondition();

lock.lock();

condition.await();  //condition.signal();

lock.unlock();

25、equals相等,hashcode一定相等

对象相等,hashcode一定相等。hashcode相等,对象未必相等

基本变量没有hashcode和equals方法

hashMap,hashSet要重写hashcode

hashcode 返回int  (将对象内部地址转换)

26、(1) static 方法只能访问static方法,不能访问非static。

可以object.method和class.method

存储在数据区

(2) final类不能被继承,例如String

方法可以被继承但不能被覆盖

27、Java三大特性:封装,继承,多态   //(抽象)

继承:子类继承父类,使子类具有父类的属性和方法,有效实现代码复用

多态:子类重写父类方法,父类类型引用指向子类对象,动态调用

Java语言特点:面向对象,跨平台,安全

28、使用抽象类是为了代码复用,使用接口是为了实现多态

(1) abstract有自己的数据成员,interface只有 final static成员

(2) abstract可以有非抽象方法,接口中不能有(jdk8有默认方法)

(3)Java可以实现多个接口

29、类初始化**:父类静态变量->父类静态代码块->子类静态变量->子类静态代码块->父类非静态变量->父类非静态代码块->父类构造函数->子类......

30、final一定要初始化

31、二叉树度数表示该节点分叉

n0 = n2 + 1         n = n0 + n1 + n2

32、重载,参数类型和个数,顺序不同,无法以返回类型作为区分。 可以有不同返回类型,修饰符,异常

33、静态可以访问静态,不能访问非静态。非静态都可以

34、jre包含jvm,基本类库。   jdk包含jre,包含编译器,开发工具和类库

35、同步:指用户进程触发I/O并等待或轮询是否就绪

异步:触发I/O后做自己的事情,当I/O完成时会得到通知

阻塞:试图对文件读写时,没有东西...进入等待

非阻塞:没有东西可读或不可写时,马上返回

36、Java编译成字节码后,jvm解释运行

二进制文件  .class

解释型语言

37、jdbc桥接模式。提供两套接口,一个面向数据库厂商,一个面向JDBC使用者

38、设计模式六大原则

(1)单一职责:一个类只负责一项职责

(2)里氏替换:子类可以扩展父类的功能,但不能改变父类功能

(3)依赖倒置:抽象不应该依赖细节,细节应该依赖抽象

(4)接口隔离

(5)迪米特原则:一个对象应该对其他对象保持最少的了解

(6)开闭原则:对扩展开放,对修改关闭

39、boolean不能和任何类型转换

40、Integer i = 59 时会调用integer.valueOf() 方法

该方法返回一个Integer对象,如果i在[-128,127]之间,如果存在IntegerCache.cache的值,则返回引用,否则new一个对象

int基本类型与其他 ==比较,只比较值

41、(1)增强for (foreach)循环时不能使用集合删除元素

(2)增强for不能使用迭代器中的方法

(3)增强for有便利元素,普通for没有

普通for比较适合list类(数组)

增强for比较适合链表结构

参考书籍:Java核心技术卷,大话设计模式(大鸟,小菜)设计模式(挺有趣的一本书)effective javaJava 8实战,java编程思想(有点老了)

--------------------------------------------------------------------------------------------------------------

以上为maplefighting个人笔记整理,如有出错,欢迎指正

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
P2P技术揭秘.P2P网络技术原理与典型系统开发
Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这