`
talentluke
  • 浏览: 604582 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java疑难点总结

 
阅读更多

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开发疑难问题汇总

    资源名称:JAVA开发疑难问题汇总资源目录:【】10年程序员生涯总结:从C 到Java的几点思考【】50个必备的实用jQuery代码段【】5招教你把握Java性能监控【】J2EE基础:浅谈依赖注入实现的方法【】java-内部类那点事...

    Java导出Execl疑难点处理的实现

    总结,Java导出Excel涉及到的疑难点主要包括选择适合的Workbook实现、跨单元格及边框设置、自定义背景颜色以及单元格内部分文字颜色设置。通过Apache POI库提供的API,我们可以有效地解决这些问题,创建出满足业务...

    Java编程10个疑难问题

    从给定的文件信息中,我们可以总结出两个关键的Java编程疑难问题,这些问题涉及了Java中的随机数生成和哈希代码实现,对于深入理解Java语言特性和编程实践具有重要意义。 ### 1. 随机数生成的问题 #### 问题描述:...

    Java网络编程总结

    另外,标签中提到的“源码”和“工具”,暗示我们可以深入研究Java网络库的源代码,理解其内部实现,这对于优化网络程序性能和解决疑难问题非常有帮助。例如,可以学习Apache MINA、Netty等高性能网络框架的源码,...

    Java葵花宝典V1.2--Java技术难点总结

    本文将针对Java中的几个技术难点进行总结,帮助读者加深理解。 首先,关于Java中的字符串声明和对象引用的问题,需要明确的是,当我们使用如下代码: ```java Strings="Helloworld!"; ``` 我们声明的是一个名为`s`...

    java 方法的流程控制与异常处理

    - **不同点**:系统定义的异常通常是针对特定场景预定义好的异常类型,而用户自定义异常则是根据具体需求创建的新异常类型。 - **使用方式**:系统定义的异常可以直接使用,而用户自定义的异常则需要先定义然后在...

    More Java Pitfalls中文版

    这篇博文是该书内容的中文版,提供了丰富的实例和解析,帮助读者理解并解决Java编程中的疑难杂症。 在Java编程中,"源码"标签指的是对原始代码的探讨,这包括类、方法、变量的定义以及它们之间的关系。了解源码可以...

    《在线视频播放平台》疑难杂症总结笔记.zip

    《在线视频播放平台》前后台-前端功能演示,Redis实现首页热点数据缓存 防止缓存雪崩 延迟双删实现缓存同步 登录校验 退出登录 Cookie Redis模拟Session 项目笔记讲解总结。登录的过程: ​ 前台获取username和user...

    oracle最全面的错误疑难解决方案和总结文档

    在使用Oracle的过程中,可能会遇到各种错误和疑难问题,这篇文档是关于Oracle错误解决方案和知识点的综合总结,适合Java开发者参考学习。 首先,文档提到了Oracle的两个默认用户——SYS和SYSTEM。SYS是超级用户,...

    Java虚拟机规范

    ### Java虚拟机规范知识点解析 #### 一、Java虚拟机规范概述 **Java虚拟机(JVM)**是一种可以执行Java字节码的虚拟机环境。它为Java程序提供了一个独立于硬件平台的运行环境,使得Java程序能够跨平台运行。《Java...

    应用程序调试技术之Java篇 视频 ppt

     调试技术实务分为调试基本概念和设置,通过使用JDK自带的一些工具来调试Java程序中的疑难症状。不仅仅介绍了枯燥的程序调试技术,还深入的从操作系统实现以及Java虚拟机实现的本质出发,介绍调试工作中的工作方法...

    java H2DB 1.4 Docs

    总结来说,"java H2DB 1.4 Docs"包含的资源全面覆盖了H2DB的各个方面,无论你是初次接触还是资深用户,都能从中获得宝贵的指导。通过深入学习和实践,你将能够充分利用H2DB的特性,构建高效稳定的数据存储解决方案。

    北大青鸟S1JAVA第三章课后练习详解

    【北大青鸟S1JAVA第三章课后练习详解】 ...总结来说,北大青鸟S1JAVA第三章的课后练习是学习Java编程基础的关键步骤,通过实践和反思,学员们可以逐渐精通Java语言,为后续的高级主题和项目开发打下坚实基础。

    基于Java语言的医疗质量管理系统设计与实现.pdf

    3. 终末质量模块,则侧重于对医疗过程终末阶段的质量进行评估,统计门急诊人次、全院业务量、手术管理质量指标等,并对护理质量控制、医嘱合理性、处方质量、病历质量等进行统计分析,同时关注危重病例和疑难病例的...

    Java虚拟机

    - **团队协作**:深入理解JVM能够使开发者与其他团队成员之间进行更有效的沟通,尤其是在涉及系统架构设计或疑难问题排查时。 #### 三、总结 通过学习Java虚拟机,不仅可以帮助开发者更好地理解Java语言本身,还能...

    android 疑难内存分配分析

    ### 疑难内存分配分析 #### 1. **全局设置(GlobalSetting.java)** 在提供的代码片段中,首先引入的是`GlobalSetting.java`文件。这里定义了一个静态常量`HUAWEI_FEATURE_SETTINGS_SYNC`,用于标记是否开启华为...

    MyEclipse.6.Java.开发中文教程

    ### MyEclipse 6 Java 开发中文教程知识点总结 #### 一、MyEclipse 6 环境搭建与配置 - **系统需求**:在开始之前,了解系统的最低要求对于确保开发环境的稳定性和效率至关重要。这通常包括操作系统版本(如...

    Oracle数据库精讲与疑难解析

    总结来说,Java通过CallableStatement对象调用Oracle数据库的存储过程,涉及的主要步骤包括: 1. 创建CallableStatement对象,使用`prepareCall()`方法。 2. 设置IN参数,使用setXXX()方法。 3. 注册OUT参数,使用`...

Global site tag (gtag.js) - Google Analytics