Java进阶知识

常见异常:

空指针异常NullPointerException,调用了未经初始化的对象或不存在的对象,或访问或修改了null对象的属性或方法;

找不到类名异常ClassNotFoundException,的确不存在,开发环境进行了调整或,如类的根目录结构、编译运行时发生变化的等;

类名不合法异常IllegalAgreementException,向方法传递了不合法或不正确的参数;

输入不匹配异常InputMismatchException,由scanner抛出表获取内容与期望类型的模式不一致或内容超出预期;IllegalAccessException,应用程序试图创建一个实例、设置或获取一个属性,或调用一个方法,但当前正在执行的方法无法访问指定类、属性、方法或构造方法的定义时;

ClassCastExceptiom,当试图将对象转换为不是实例的子类时抛出;

SQLException,数据库访问或其他错误信息的异常;

IOException,发生某种I/O异常。

运行时异常和检查时异常的区别:

运行时异常,不要求程序在编译时对异常进行处理,也能编译通过;

检查时异常又称非运行异常,要求程序员必须在编译时进行处理,否则编译不通过。

【企业面试常考】ArrayList和LinkList的区别:

前者采用数组进行顺序存储,在插入或删除数据时,需要批量移动数据元素,故性能较差;在查询数据元素时,因为数组是是连续存储的,可以通过下标进行访问,故在遍历元素或随机访问元素时效率高。LinkList则相反。

顺序存储结构和链式存储结构的优缺点:

前者  优点:节省存储空间(分配的存储单元全用来存放节点的数据,节点间逻辑关系没有占用额外的存储空间);增加访问速度(存储单元存放可实现节点的随机存取);查找速度快。缺点:插删慢

后者  优点:插删快。  缺点:占用空间大(每个节点都由数据域和指针域组成);查找速度慢(通过指针逐个查找)。

栈和队列两种数据结构特点:

栈Stack:先进后出或后进先出;只能在一端进行插入和删除操作的特殊的线性表。

队列Queue:先进先出或后进后出;只允许在队头进行删除操作和在队尾进行插入操作。

二分(折半)查找优缺点及其适用范围:

优点:比较次数少;查找速度快;平均性能好。缺点:要求待查数据为有序结构;插入删除困难。

适用范围:数据不常变动而查找频繁。

Set接口和List接口的区别:

Set接口为无序、不允许重复 故不可通过索引访问Set接口中的数据元素;

List接口为有序,允许重复,操作此接口的用户可对这个序列中每个元素进行精确控制。

Collections和Collection的区别:

Collections工具类,是集合对象工具类,提供了操作集合的工具方法,如排序、复制和反转排序等。

Array工具类,是数组的工具类,提供了操作数组的工具方法,如排序、二分查找等。

Collection是最基本的集合接口,继承自Iterable接口,一个Collection代表一个Object,每个Object即Collection中的元素。

Comparable和Comparator的区别:

ComparableTreeSet集合内默认是按照自然顺序排序的,在集合内元素间的比较,由compareTo(Object o)方法完成,故称为内部比较器;string和各种包装类已经实现了Comparable接口;存入TreeSet中的对象需要实现Comparable接口。

Comparator为外部比较器,当集合中的对象不支持自比较或自比较功能不满足程序员需求时用;配合Collections的sort(List list,Comparator c)方法配合使用;和内部比较器Comparable相比,可重用性好。

泛型:解决程序可读性及强制类型转换时的稳定性问题。

泛型产生原因:装入集合的各种类型对象都被当成Object对待,失去了自己的类型,而从集合中取出对象时需要进行类型转换,效率低下且容易出错。

要使编写Java程序具有跨平台性,在进行文件操作时需要注意:

File类创建一个路径的抽象时,保证创建的File类也跨平台,并注意不同操作系统对文件路径的设定。Linux和Unix系统下,PATH分隔符为“:”,路径分隔符为"/";而Window系统下路径分隔符为反斜杠"\"或双斜杠"//"。

字节流和字符流的区别,及字符流的好处:

字节流:处理单位是字节,常用来处理音乐图片文件等二进制文件;1个汉字将通过2次才可操作。

字符流:处理单位是Unicode编码字符;1个汉字只需操作一次。

字符流好处:在操作汉字、国际化等方面具有优势。

静态导入及静态导入的优缺点:

静态导入:用来指定类的某个静态属性或方法,或全部静态属性或方法。

优点:省略了System和Integer的书写,代码编写相对简单。

缺点:代码相对简单的同时使代码可读性性降低;可能引起静态导入冲突,如同时导入Integer和Long类,编译器无法识别两类中都有Max_value常量属性。

为什么使用缓冲流:

字节流和字符流都是无缓冲的输入输出流,每次读写都交给操作系统处理,每次读写都可能引发磁盘硬件的读写或网络访问顺而占用大量操作系统资源,影响效率的同时还可能对系统的性能造成很大影响。

缓冲流是一种装饰器类,目的是让原字节流字符流新增缓冲的功能。以字符流为例,字符缓冲流从字符流中读取写入字符,不立刻要求系统进行处理,而是缓冲部分字符,从而实现按规定字符数、按行等方式的高效读取或写入。缓冲区的大小可以指定(缓冲流构造方法指定)。

有些情况下,不是非要等缓冲区满才向文件系统写入,如在处理一些关键数据时,需要立即将这些关键数据写入文件系统,可调用flush()方法,手动刷新缓冲流。

调用一次flash()方法将刷新Writer和OutputStream链中的所有缓冲区。

装饰器模式和适配器模式:

装饰器模式在实际中的使用过程:对象的引用要传入装饰类中,动态地给这些对象增加额外的功能,形成新的对象,而这些新的对象才是实际需要的字节流和字符流。

适配器模式:将字节流转换为字符流,实际上使用的一种设计模式。意图是将一个类的接口转换成用户希望的另外一个接口,该模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。

XML表示数据的优点及XML文档的应用范围:

优点:简单、灵活、交互性好、可扩展性。

应用范围:存储数据、系统配置、数据交换。

解析XML文档技术有哪些及它们的区别:

DOM解析:DOM是W3C标准,提供的是标准的解析方式。

DOM解析方式一直不如人意的原因:DOM解析XML文档时,把所有内容一次性转载人内存,并构建一个准留在内存中的节点树;如果需要解析的XML文档过大,或只对该文档的部分感兴趣,这中做法会引起性能问题。

SAX解析:既是一个接口,也是个软件包。在解析XML时是事件驱动型,

SAX解析工作原理:对文档进行顺序扫描,当扫描文档开始与结束、元素开始与结束等地方时通知事件处理程序,有事件处理程序做相应动作,然后继续同样的扫描,直到文档结束。

SAX解析缺点:要用SAX对文档进行解析时,就要实现多个事件处理程序,用来处理可能触发的事件,对程序员而言操作起来相对复杂。

原文地址:https://www.cnblogs.com/whirlwind/p/9194887.html

时间: 2024-10-30 23:46:02

Java进阶知识的相关文章

Java进阶知识23 Spring对JDBC的支持

1.最主要的代码 Spring 配置文件(beans.xml) 1 <!-- 连接池 --> 2 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 3 <!-- 注册驱动 --> 4 <property name="driverClass" value="com.mysql.jdbc.Driver&q

Java进阶知识22 Spring execution 切入点表达式

1.概述   切入点(execution ):可以对指定的方法进行拦截,从而给指定的类生成代理对象.(拦截谁,就是在谁那里切入指定的程序/方法) 格式: execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?) 参数解析: modifiers-pattern?:指定方法的修饰符,支持通配符,该部分可以省略.(public/pr

Java进阶书籍推荐

学习Java,书籍是必不可少的学习工具之一,尤其是对于自学者而言.废话不多说,下边就给广大程序猿们推荐一些Java进阶的好书. 第一部分:Java语言篇 1.<Java编程规范> 适合对象:初级.中级 介绍:这本书的作者是被誉为Java之父的James Gosling,入门者推荐阅读,对基础的讲解很不错. 2.<Java编程思想> 适合对象:初级.中级 介绍:豆瓣给出了9.1的评分,全球程序员广泛赞誉.有人说这本书不适合初学者,不过小编认为作者并没有对读者已有的知识经验有过多要求,

java进阶07 线程的让步与阻塞与同步

前面介绍了线程的一些基本知识,现在来说下线程的让步,阻塞,和同步 先说说让步 所谓让步,就是让调用者的线程暂停,让其他线程重新竞争CPU,包括调用者. 先看看代码 package Thread; public class ThreadYield { public static void main(String[] args){ MyThread5 rthread=new MyThread5(); Thread thread1=new Thread(rthread); Thread thread2

转:java 进阶之路

转: https://www.zhihu.com/question/39139518 一.基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 Java内存模型 1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具 jps, jstack, jmap, jconsole, jinfo, jhat, javap, … BTrace — Project Ken

Spring实战3:装配bean的进阶知识

主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expression Language 在装配bean—依赖注入的本质一文中,我们探讨了Spring的三种管理bean的方式:自动装配.基于JavaConfig.基于XML文件.这篇文字将探讨一些Spring中关于bean的管理的高级知识,这些技能你可能不会每天都用,但是非常重要. 3.1 Environments

java进阶11 static final关键字

static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块. 被static修饰的成员变量和成员方法独立于该类的任何对象,也就是说. 它不依赖类的特定的实例,被类的所有实例共享. package Static; public class Static { /* * 使用的情况 * 1:在对象之间共享值时 * 2:方便访问变量 * */ public static void main(String[] args){ Sta

Java线程知识拾遗

知识回顾 进程与线程是常常被提到的两个概念.进程拥有独立的代码段.数据空间,线程共享代码段和数据空间,但有独立的栈空间.线程是操作系统调度的最小单位,通常一个进程会包含一个或多个线程.多线程和多进程都可以实现并发处理,如 nginx 使用多进程方式.tomcat 使用多线程方式.Apache 支持混合使用.在 C/C++ 等语言中可以同时使用多进程和多线程,而在 Java 中只能使用多线程. 在 Java 中,创建线程的唯一方式是创建 Thread 类的实例,调用实例的 start() 方法启动

Java进阶(二十五)Java连接mysql数据库(底层实现)

Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜索.特将之前使用的方法做一简单的总结.也能够在底层理解一下连接数据库的具体步骤. 实现 首先需要导入相关的jar包,我使用的为:mysql-connector-java-5.1.7-bin.jar. 下面来看一下我所使用的数据库连接方法类: MysqlUtil.java package cn.edu