栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java复习面试03

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java复习面试03

目录: 16.String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String 对象中的内容到底没有? 17.是否可以继承 String 类? 18.String s = new String("xyz");创建了几个 String Object? 二者之间有什么区 别? xyz 是字量 19.String 和 StringBuffer 的区别 20.try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,么时候被执行,在 return 前还是后? 21.final, finally, finalize 的区别。 22.运行时异常与一般异常有何异同? 23.error 和 exception 有什么区别? 24.给我一个你最常见到的 runtime exception。 25.sleep() 和 wait() 有什么区别? 26.同步和异步有何异同,在什么情况下分别使用他们?举例说明。 27.当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对 象的其它方法? 28.多线程有几种实现方法?同步有几种实现方法?

16.String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String 对象中的内容到底没有?

没有。因为 String 被设计成不可变 (immutable) 类,所以它的所有对象都是不可变对象。在这段代码中, s 原先指向一个 String 对象,内容是 "Hello" ,然后我们对 s 进行了 + 操作

 17.是否可以继承 String 类?

String 类是 final 类故不可以继承。

18.String s = new String("xyz");创建了几个 String Object? 二者之间有什么区 别? xyz 是字量

 两个,一个放在常量区,不管写多少遍,都是同一个。New String 每写一遍,就创建一个新。

Strirng a=new String("a");
Strirng b=new String("b");

内存存放的地址不同:当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间。


19.String 和 StringBuffer 的区别

JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字符串,即包含多个字符字符数据。这个 String 类提供了数值不可改变的字符串,而这个StringBuffer类提供的字符串进行改当你知道字符数据要改变的时候你就可以使用StringBuffer,典型地,你可以使用 StringBuffers 来动态构造字符数据。


20.try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,么时候被执行,在 return 前还是后?

会执行,在 return 前执行。 如下列:
public static void main(String[] arag){
   System.out.println(test1());
}

private static int test1(){
 int i=1;
 try{

 return i;
 }catch(Exception e){
     
 }finally{
  System.out.println("finally:"+(++i));
}
retrun 0;

}

21.final, finally, finalize 的区别。

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成 final 类型。 // 析构函数 finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回 收,例如关闭文件等。 JVM 不保证此方法总被调用。

22.运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。 java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
public static void test2() terows Exception {
 throw new  Exception;
}
public static void test3(){
 throw new  RuntimeException;
}

23.error 和 exception 有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示 ,一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

24.给我一个你最常见到的 runtime exception。

ArithmeticException,ArrayStoreException,,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException, ClassCastException, CMMException,ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException,IllegalMonitorStateException, IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException, NoSuchElementException,NullPointerException,ProfileDataException, ProviderException,RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException。
25.sleep() 和 wait() 有什么区别?
sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会 ,自动恢复。调用 sleep 不会释放对象锁。 线程: 是什么?: 程序运行最小单元 如何实现?: extends,Thread,implement,Runnable 线程的状态?: 准备,运行,休眠,等待,阻塞,停止 常用的方法?:Thread t1 =new Thread();                       t1.start();                       t1.sleep(1000);                       t1.wait(),进入等待状态,t2.notifyall();唤醒等待的线程 死锁?:         ab两个线程,a线程要抢占A锁,b线程要抢占B锁,锁都得不到释放,线程呈现僵持状态。
26.同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那 么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很 多情况下采用异步途径往往更有效率。
27.当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对 象的其它方法?
分几种情况: 1. 其他方法前是否加了 synchronized 关键字,如果没加,则能。 2. 如果这个方法内部调用了 wait ,则可以进入其他 synchronized 方法。 3. 如果其他个方法都加了 synchronized 关键字,并且内部没有调用 wait ,则不能。
28.多线程有几种实现方法?同步有几种实现方法?
多线程有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口 同步的实现方面有两种,分别是 synchronized,wait 与 notify wait(): 使一个线程处于等待状态,并且释放所持有的对象的 lock 。 sleep(): 使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException 异常。 notify(): 唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由 JVM 确定唤 醒哪个线程,而且不是按优先级。 Allnotity(): 唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/946342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号