1.类加载和初始化
加载——>连接(验证->准备->解析)——>初始化。
若父类未初始化,则先初始化父类;
初始化一个类(或接口),不会先初始化它所实现的接口(或父接口);
当使用的静态变量或方法不在当前类或接口中定义,而在父类或接口中定义,则不会初始化当前类而只初始化父类;
总之,主动使用的才初始化。
2.类加载器
加载器间的父子关系实际上是加载器对象间的包装关系,而不是类之间的继承关系;
类加载器的命名空间由加载器及所有父加载器所加载的类组成,同一命名空间,类的完整名不同,不同命名空间,类的完整名可相同;
运行时包指加载器相同并且包全名也相同;
父加载器加载的类不能看见子加载器加载的类,但子加载器加载的类却能看见父加载器加载的类;
两个不同命名空间内的类相互不可见,可采用Java反射机制访问实例的属性和方法;
Class对象不再被引用,表示它生命周期结束,可以卸载类,Java虚拟机自带的类加载器(即根加载器、扩展加载器和系统加载器)所加载的类始终不卸载,用户自定义加载器所加载的类可以被卸载,静态变量的声明周期取决于Class对象的生命周期;
Class实例与它的类加载器相互双向关联;
new——>可触及状态<—(finalize)—>可复活状态——>不可触及状态—(垃圾回收)—>生命终止
3.线程
处理线程未捕获的异常UncaughtExceptionHandler以及ThreadLocal<T>;
线程运行机制:程序计数器PC,方法调用栈(局部变量区,操作数和栈数据区);
方法区和堆区为当前进程所有线程共享;
直接调用run方法,是主线程执行,start线程则是当前线程,所以不同;
不能重写start方法,即使重写也要在第一句调用super.start();
一个线程只能被start一次,否则抛出java.lang.IllegalThreadStateException异常;
线程结束或异常不会影响其他线程,主线程发生未处理的异常就会退出程序;
线程优先级不仅取决于Java虚拟机,还依赖于操作系统,若希望程序能移植到不同操作系统,应只用MAX_PRIORITY、MIN_PRIORITY和NORMAL_PRIORITY 3个级别;
4.异常
没有找到处理异常的代码块,若是主线程则调用异常对象的printStackTrace后终止应用程序,非主线程则终止当前线程而其他线程仍然正常运行;
只有发生异常时才对性能造成影响,主要是搜索方法调用栈寻找异常处理代码块,不应该用异常处理机制控制程序的正常流程,仅在可能出现异常的地方用try...catch,将异常处理代码块放在适当的层次,最好放在当前方法中;
try后可只跟finally而不跟catch;
catch从子类向父类排序,父类在子类前编译错误,因为子类异常永远执行不到;
方法有可能出现受检查异常,要么try...cacth,要么throws异常,运行时异常可不用这样;
throws语句后不能紧跟其他语句,因为执行不到;
finally块唯一不执行的情况是先执行了终止应用程序的exit或者强行终止进程;
在finally块中用return/throws/break/continue等改变方法出口的语句,会覆盖catch中的return语句,还可能会导致catch中的异常丢失;
异常转译指捕获原始异常,转换成新异常抛出;
处理多样化的异常,可以自定义异常类,用一个集合成员存储各种异常;
保持异常的原子性方法:检查参数,确保异常发生时没改变对象的初始状态;编写一段恢复代表;临时拷贝上操作,成功后用临时拷贝的内容覆盖原来的对象;
5.模式
标识类型模式,如 Serializable;
接口常量模式;
6.其他
this语句调用其他构造方法须满足:位于构造方法中;第一句;不能用构造方法名直接调用构造函数;
super语句类似;
禁止继承的方法:final;private构造方法;
为保证final类属性也不可变,可采用保护性拷贝clone方法;
finalize出现异常,垃圾回收器不报告异常,程序正常运行,不会中断;
通过对象实例而不是类去访问内部类;
实例内部类不能定义静态成员;
静态内部类能定义静态成员;
局部内部类不能定义静态成员;
内部类不存在覆盖;
基本数据类型,低位可以自动转换为高位,反之不能,如short a=1,b=2;short c=a+b;因为a+b是int型,不能转换为short型;
接口可以继承多个接口;
相关推荐
资源名称:JAVA开发疑难问题汇总资源目录:【】10年程序员生涯总结:从C 到Java的几点思考【】50个必备的实用jQuery代码段【】5招教你把握Java性能监控【】J2EE基础:浅谈依赖注入实现的方法【】java-内部类那点事...
Java葵花宝典V1.2--Java技术难点总结 希望喜欢Java技术的童鞋们为Java技术添砖加瓦,thanx
在java培训班时,老师针对oracle容易出现的问题做了一个总结,里面含有最全面的错误疑难解决方案和知识点的总结。
《在线视频播放平台》前后台-前端功能演示,Redis实现首页热点数据缓存 防止缓存雪崩 延迟双删实现缓存同步 登录校验 退出登录 Cookie Redis模拟Session 项目笔记讲解总结。登录的过程: 前台获取username和user...
调试技术实务分为调试基本概念和设置,通过使用JDK自带的一些工具来调试Java程序中的疑难症状。不仅仅介绍了枯燥的程序调试技术,还深入的从操作系统实现以及Java虚拟机实现的本质出发,介绍调试工作中的工作方法...
Android骚扰拦截简介 Android Telephony Call Android Telephony Sms Android骚扰拦截监听方法 JAVA的反射机制 LBE安全大师骚扰拦截的方法 LBE安全大师骚扰拦截优先级总结 LBE安全大师手机及双卡...Q&A “疑难杂症”
此次新闻app应用程序开发主要利用java语言在android框架中对各种组件包括TextView、EditView、ListView进行系统性、框架性、整合性的学习,在编写app过程中,解决日常学习中遇到的一些单一性问题,同时通过编程实践...
java系统源码 AndroidFAQSolutions(Android开发各类常见错误解决方案) 本文属于个人平时项目开发过程遇到的一些问题,记录下来并总结解决方案,希望能帮到大家解决问题,有些问题的解决方案是在StackoverFlow上...
24.3 ADT 安装疑难解答 69 25 Android的底层库libutils介绍 70 25.1 libutils概述 70 25.2 公共库概述 70 25.3 Binder进程间通讯部分 71 26 Android IPC 通讯机制源码分析 73 26.1 Binder通信简介: 73 26.1.1. ...
JSP技巧精彩文章集合--比较经典的JSP疑难问题和技术总结,对使用JSP开发的童鞋们具有指导性作用。欢迎下载阅读并指教,thanx。
搭建项目篇导入项目 总结导入eclipse项目(非maven,非gradle)导入maven项目导入gradle项目web项目集成Tomcatweb项目集成Jetty创建普通的Java SE项目创建SSH+Maven的web项目创建SSH+Gradle的web项目五.疑难杂症篇...
1. **课程资源**:提供全面的课程资源,涵盖公务员考试各个科目的知识点讲解和考试技巧。 2. **智能题库**:含有庞大的题库资源,支持章节练习、模拟测试和历年真题解析,帮助学习者巩固知识。 3. **学习进度跟踪*...
10.1.1 新闻供给点如何工作 187 10.1.2 推/拉新闻 187 10.1.3 下载新闻组的可选方法 187 10.2 INN硬件与软件要求 188 10.3 INN介绍 188 10.3.1 安装INN 188 10.3.2 INN启动文件 189 10.3.3 配置INN 193 10.4 ...
性能测试是一个很有前途但又很没前途的职业,很有前途是因为做的好能带来高收益,能解决项目和系统的很多疑难问题,甚至是大问题(现实中有多少系统崩溃的悲惨案例,造成的损失很多时候让人承受不起),而优秀的性能...
SpringMVC从入门到精通,个人学习使用汇总版,包括SpringMVC框架的允许流程,常见需求的解决方案,以及自身遇到的各种疑难杂症的汇总,同时还精选了大量博客内容对细节部分进行补充【原创思维导图,请勿侵权!】
转到“目录安全性”窗口,单击“IP地址及域名限制”下的“编辑”按钮,点选中“授权访问”以能接受客户端从本机之外的地方对IIS进行管理;最后单击“确定”按钮。 3.则在任意计算机的浏览器中输入如...