java面试——java常用类库与技巧

String,StringBuffer,SrtingBuilder的区别

  目录  

  • java异常

java异常

  异常处理机制主要回答了三个问题

  • what:异常类型回答了什么被抛出
  • where:异常堆栈跟踪回答了在哪抛出
  • why:异常信息回答了为什么抛出

Java的异常体系

  

  RuntimeException:不可预知的,程序应当自行避免

  1. NullpointException——空指针异常
  2. ClassCastException——类型强制转换异常
  3. IllegalArragumentException——传递非法参数异常
  4. IndexOutOfBoundsException——下标越界异常
  5. NumberFormatException——数字格式异常

  非RuntimeException:可预知的,从编译器校验的异常

  1. ClassNotFoundException——找不到指定的class的异常
  2. IOException——IO操作异常

  Error

  1. NoClassDefFoundError——找不到class定义的异常
  2. StackOverflowError——深递归导致栈被耗尽而抛出的异常
  3. OutOfMemoryError——内存溢出异常

  NoClassDefFoundError的成因:

  1. 类依赖的class或者jar不存在
  2. 类文件存在,但是存在不同的域中
  3. 大小写问题,javac编译的时候是无视大小写的,很有可能编译出来的class文件就与想要的不一样

  从责任角度看

  1. Error属于JVM需要负担的责任
  2. RuntimeException是程序应该承担的责任
  3. Check Exception可检查异常是Java编译器应该负担的责任

Error和Exception的区别

  从概念角度解析Java的异常处理机制

  • Error:程序无法处理的系统错误,编译器不检查
  • Exception:程序可以处理的异常,捕获后可能恢复
  • 总结:前者是程序无法处理的错误,后者是可以处理的异常

原文地址:https://www.cnblogs.com/echola/p/11153017.html

时间: 2024-10-02 00:38:44

java面试——java常用类库与技巧的相关文章

java面试中常用的排序算法

一.冒泡排序 [java] view plaincopyprint? package sort.bubble; import java.util.Random; /** * 依次比较相邻的两个数,将小数放在前面,大数放在后面 * 冒泡排序,具有稳定性 * 时间复杂度为O(n^2) * 不及堆排序,快速排序O(nlogn,底数为2) * @author liangge * */ public class Main { public static void main(String[] args) {

Java面向对象_常用类库api——日期操作类

Data类 类Data表示特定的瞬间,精确到毫秒,也就是程序运行时的当前时间 Data data=new Data();//实例化Data对象,表示当前时间 Calendar类 日历类,使用此类可以将时间精确到毫秒显示. //两种实例化方式 Calendar c=Calendar.getInstance();//Calendar类是抽象类,不能直接new Calendar c=new GregorianCalendar(); DateFormat类及子类SimpleDateFormat 例: 1

Java面向对象_常用类库api——对象比较器

概念:对两个或多个数据项进行比较,以确定他们是否相等,或确定他们之间的大小关系及排列顺序成为比较. 1.Comparable接口: 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法. 1 public class ComparableDemo { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-ge

Java复习之常用类库

一.StringBuffer 1. StringBuffer与String的区别 2. StringBuffer常用方法 StringBuffer buf = new StringBuffer(); buf.append(); buf.insert(); buf.reverse(); buf.replace(); buf.subString(); buf.delete(); buf.indexOf(); 3. StringBuffer的实际应用 凡是要修改字符串内容的时候,都要使用StringB

Java面向对象_常用类库api——二叉树数据结构实现

二叉树是每个节点最多有两个子树的有序树.通常子树被称为"左子树"和"右子树". 二叉树算法的排序规则: 1.选择第一个元素作为根节点 2.之后如果元素大于根节点放在右子树,如果元素小于根节点,则放在左子树 3.最后按照中序遍历的方式进行输出,则可以得到排序的结果(左->根->右) 8.3.10.1.6.14.4.7.13 1 public class BinaryTree { 2 private Node root; 3 public void addN

Java面向对象_常用类库api

StringBuffer 例: 1 public class StringBufferDemo { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 //使用String的写法连接字符串,比较占内存 9 String s="hello"; 10 String ss=s+"world"; 11 fo

java 面试-- java框架

1.spring是如何管理事务的? Spring并不是直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给持久化机制所提供的相关平台框架的事务来实现,spring为不同的事务API提供一致的编程模型. Spring的事务分为编程式事务和声明式事务,编程式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP)有助于将用户操作与事务规则进行解耦. Spring提供两种方式的编程式事务管理,分别是使用transactionTemplate(线程安全的)和platformTra

java面试-Java内存模型(JMM)

一.并发编程两个关键问题 线程之间如何通信及线程之间如何同步.java并发采用的是共享内存模型 二.JMM内存模型 Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式. 从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地 内存(Local

Python/Java程序员面试必备常用问题解析与答案

转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作(practice) 1. 什么是Python? Python是一种编程语言,它有对象.模块.线程.异常处理和自动内存管理.可以加入与其他语言的对比.下面是回答这一问题的几个关键点: a. Python是一种解释型语言,python代码在运行之前不需要编译. b. Python是动态类型语言,在声明变