整理一下Java知识点。

一、final finally finalize区别

1、final

修饰符(关键字)。被final修饰的类,不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值,而在以后的引用中只能读取。被final声明的方法也同样只能使用,不能重载。

2、finally

异常处理的最终执行操作。不管有没有异常被抛出、捕获,finally块都会被执行。在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。一般,如文件读取的流(Stream)的关闭操作,db连接的connection关闭等等,close()方法一般都是放在finally中执行的。
3、finalize

Object的方法。Java8 API中如下描述。

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

在垃圾回收器发现没有引用指向对象时(意思就是说准备回收这个对象),会调用这个方法。

二、java创建对象

创建对象的四种方法。乍一听,四种,这么多?其实大家只是不归纳整理,我们都用过这四种。
(1)new关键字。
(2)newInstance()
Class.forName("XXX").newInstance():只能调用无参的构造方法。
Constructor.newInstance():无论参数个数多少,它都能调用。
官方有个例子,讲解的很好:
https://docs.oracle.com/javase/tutorial/reflect/member/ctorInstance.html
(3)colne
例子写的太详细了,我没必要再写一遍了:
https://dzone.com/articles/java-cloning-copy-constructor-vs-cloning
(4)反实例化
从数据流到对象。

三、Thread类里如何判断这个线程持有锁

Thread类里有个方法public static boolean holdsLock(Object obj)

Returns true if and only if the current thread holds the monitor lock on the specified object.

仅当在指定对象上持有监视器锁的时候返回true。

四、线程池 达到最大线程数时,再有任务请求时会怎么办

ThreadPoolExecutor方法中有一个参数RejectedExecutionHandler,它来控制线程数量超出时的处理。

它的实现由四种,默认的是RejectedExecutionException抛出异常;

其他分别是不做任何处理,直接忽略掉这个任务;提交任务的线程自己执行任务;把队列头部的任务直接扔掉,然后提交这个任务到队列中。

当然了,自己去实现这个RejectedExecutionHandler也可以,但一般情况下,不需要。

五、为什么wait,notify,notifyAll方法在Object队象中

一个经典问题,整理一下,说一下自己的看法。

1.wait和notfiy它不并不是普通的方法,也不是像synchronized那样的关键字,它是线程间通讯的一种机制。放在Object class中是种好的选择。

此外,当进入临界的代码时,线程需要被锁,它们也在等待锁的到来,但是它们不知道哪个线程正在持有锁,相反,它们只知道锁正在被某个线程占用,以及它们应该等待锁,

而不是知道哪个线程在synchronized块中,让它们释放锁。

2.锁面向于每个对象,这也是放在Object Class中的一个重要原因。

六、谈谈String

String a = new String("123");

首先我们猜猜这里创建了几个对象?

不是1个,也不是2个。常量池里有“123”,那么就创建一个对象(new String),如果常量池里没有“123”,那么就会创建2个对象。

有篇文章写的很好,说得很明白,里面还有几个例子:

http://www.java67.com/2014/08/difference-between-string-literal-and-new-String-object-Java.html

java知识整理的更多相关文章

  1. 面试之Java知识整理

    1.面向对象都有哪些特性 继承.封装.多态性.抽象 2.Java中实现多态的机制是什么? 继承与接口 3.Java中异常分为哪些种类 3.1按照异常需要处理的时机分为编译时异常(CheckedExce ...

  2. Java知识整理一

    文档二 密码:java

  3. java部分基础知识整理----百度脑图版

    近期发现,通过百度脑图可以很好的归纳总结和整理知识点,本着学习和复习的目的,梳理了一下java部分的知识点,不定期更新,若有不恰之处,请指正,谢谢! 脑图链接如下:java部分基础知识整理----百度 ...

  4. 2019-9-16 java上课知识整理总结(动手动脑,课后实验)

    java上课知识整理总结(动手动脑,课后实验) 一,课堂测试 1,题目:课堂测试:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件” 要求:(1)题目避免重复: (2)可定制( ...

  5. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  6. 【转载】UML类图知识整理

    原文:UML类图知识整理 UML类图 UML,进阶必备专业技能,看不懂UML就会看不懂那些优秀的资料. 这里简单整理 类之间的关系 泛化关系(generalization) 泛化(generalize ...

  7. Spring Ioc知识整理

    Ioc知识整理(一): IoC (Inversion of Control) 控制反转. 1.bean的别名 我们每个bean元素都有一个id属性,用于唯一标识实例化的一个类,其实name属性也可用来 ...

  8. ORACLE FLASHBACK DATABASE 知识整理

    1.知识储备 1)    只有SYSDBA有权执行,闪回前一定要记录当前SCN 2)    需要停机,并要求处于ARCHIVELOG模式中 3)    闪回日志不能被复用和归档,是自动管理的.RVWR ...

  9. Redis知识整理

    Redis知识整理 转自:https://www.cnblogs.com/rjzheng/p/9096228.html 1.单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返 ...

随机推荐

  1. 序列(SEQUENCE)

    序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一 ...

  2. Cracking The Coding Interview 3.6

    // Write a program to sort a stack in ascending order. You should not make any assumptions about how ...

  3. JSP组件Telerik UI for JSP发布R1 2019 SP1|附下载

    Telerik UI for JSP拥有由Kendo UI for jQuery支持的40+ JSP组件,同时通过Kendo UI for jQuery的支持能使用JSP封装包构建现代的HTML5和J ...

  4. DevExpress v18.1新版亮点——Reporting篇(三)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Reporting v18.1 的新功能,快来下载试用新版本 ...

  5. tomcat启动失败,提示信息:Unable to ping server at localhost:1099

    jdk1.7+maven9.0.0开启服务器时,提示Unable to ping server at localhost:1099 然后换成tomcat8.5.1就成功开启服务器

  6. Problem B: 重载函数:max

    Description 编写两个名为max的函数,它们是重载函数 ,用于求两个整数或实数的最大值.它们的原型分别是: int max(int a,int b); double max(double a ...

  7. java 设计模式参考资料

    参考博客 http://www.cnblogs.com/lin3615/p/3783272.html 设计模式之责任链模式http://www.cnblogs.com/draem0507/p/3784 ...

  8. chromium ⑤

    我们都知道chromium是用webkit完成页面显示的,   那么chromium是怎样集成和封装webkit的呢?   是怎样将webkit整合到自己的框架中,并将一个页面渲染出来的?   这篇我 ...

  9. 使用OpenBTS基站测试物联网模块安全性

    0×00 引子 近年来,随着云计算.物联网技术的快速发展,物联网的理念和相关技术产品已经广泛渗透到社会经济民生的各个领域,越来越多的穿戴设备.家用电器通过蓝牙.Wi-Fi.Li-Fi.z-wave.L ...

  10. strcmp,stricmp

    strcmp,stricmp:原型:int strcmp(const void *s1, const void *s2);功能:比较字符串s1和s2是否相同,区分大小写. 说明:如果s1=s2则返回零 ...