本帖最后由 小刀葛小伦 于 2019-9-26 16:11 编辑 1,short s1=1;s1=s1+1;有什么错??? 答:s1为short型,1为int型,s1+1=2先为int型,S1为short 型,所以需要通过强制转化—s1=(short)(s1+1); 举例:short s1=1; s1+=1;(正确,因为可以自动转化) 2,请简述equals与==的区别 在String中,equals对比的是内容,==是比较地址 3,sleep与wait的区别 (1)sleep方法可以设置线程阻塞的时间,而wait方法必须要notily方法来唤醒 (2)sleep方法属于Thread类,而wait属于Object类 (3)sleep方法不会释放锁的资源,而wait方法会释放锁的资源 面试官:每个引用对象都有wait方法吗? 答:都有,因为每个类都会继承Object基类 4,String,Stringbuffer,Stringbuidder的区别? (1)String是JAVA的基础类,他可以定义少量的字符串 (2)StringBuffer是对String的扩充,他可以拼接大量字符串,但是他的效率比较低,因为他是线程安全的 (3)StringBuidder是对StringBuffer的拓展,他提高了效率,但是他是线程不安全的 5,ArrayList和Vector的区别? (1)ArrayList底层是用数组实现的,所以查找快,增删慢,ArrayList是线程不安全的 (2)Vector由于是线程安全的,所以他的效率要比ArrayList底的多 6,Super关键字的使用? (1)Super关键字实现的前提必须要有继承 (2)Super关键字可以调用父类的方法,属性,通过Super.方法名,Super.属性 (3)Super关键字必须位于类的第一行 7,创建线程有哪几种方法?? 常见的创建线程的方法 (1)继承Thread类,调用start()方法 (2)实现Runnable接口,重写run方法,调用start方法 8,Synchronized可以加在什么地方? (1)Synchronized可以加在方法上,可以加在类上。Synchronized是一把重量级锁 9,什么是线程同步? (1)一个线程重开始到结束都不可以被打断,直到这个线程释放锁,共享打印机就是一个线程同步的实例, 10,Query接口的List和iterate方法的区别? 什么是Query? Query是查询的意思,在数据库中查询一个文件或记录, 个人理解:List和Iterate都可以访问数据库,只不过iterator如果要查找的数据缓存中有就直接从缓存中拿,而不去在查找数据库了。 11,数组中有没有length()方法,String有没有这个方法? (1)数组中没有这个方法,使用length属性,返回的结果应该是数组的长度 int[] arr={1,2,3,4,5}; int length1=arr.length;//求数组的长度 (2)String里面有这个方法,返回的是该字符串的长度 String str="Hello"; int length2=str.length(); //求字符串的长度 12,try{}里面有一个return语句,finally里面也有一个return语句,finally里面的语句会不会被执行,在return前还是return后? 我们都知道,不管发什么,finally里面的语句一定会被执行,所以12题的答案是会被执行 废话不多说,看代码 int x=1; try{ return ++x }finallu{ return ++x; } 结果为 x=3; 原因很简单,因为finally语句块的代码始终要执行,所以在try里面碰到return的话实现不返还的等执行完finally一后在返回try里面的return - 13,JAVA中,运行任意一个相同的循环代码,是否每次执行完的时间都相同,为什么? 不相同,随着代码的运行,会在jvm中产生大量的垃圾,随着垃圾越来越多,效率也会越来越慢 14,说出ArrayList,LinkList,Vector的存储机制和特性 (1)ArryaList:底层是用数组实现的,查找快,增删慢,线程不安全,适用于单线程 (2)LinkList底层用链表实现的,适合插入删除,不适合查找,线程不安全,适用于单线程 (3)Vector:底层用数组实现的,查找快,增删慢,线程安全,适合多线程 15,this关键字? (1)static修饰的方法不能用this关键字 (2)this关键字表示当前对象,通过this关键字可以调用本类的方法属性 (3)this关键字可以区别变量名 16,break和continue的区别?? (1)break和continue都是用来控制循环体的 (2)break是直接结束他所在的循环,而continue是结束他这一次循环,继续下一次的循环 (3)break可以在switch中使用,而continue只能在循环中使用 17,char类型能否存储汉字?? (1)在C语言中不可以存储,因为汉字占俩个字节,而C语言的char只有一个字节 但是他可以在java中存储因为java 的char占俩个字节 (2)拓展:unicode编码是java默认的编码格式,占16位,俩个字节 18,静态变量与实例变量的区别?? (1)在语义上:静态变量用static所修饰、被static所修饰的变量只被初始化一次 (2)在运行上:静态变量属于类,实例变量属于对象 (3)被ststic所修饰的方法和类都是先被加载。 19,是否可以从一个static方法中调用一个非静态的方法?? (1)不可以,因为被static修饰的方法在类初始化的时候就被加载,而非静态的方法可能在这个时候还没有完成初始化 21,简述JDK1.5的新特性?? (1)for-each循环 (2)自动装箱拆箱 (3)静态导入 (4)范型 22,什么是单利模式,为什么要用单利模式? (1)单例模式是一种设计模式,他提供了一种创建对象的最佳方式, 注意:单例模式只有一个实例 单例类必须提供一个方法可以访问 拓展:单例类的构造函数是被私有的 23,重载和重写的区别? (1)重载是在一个类中,参数列表不同,参数个数不同,参数类型不同 (2)重写必须要有继承的前提,重写方法抛出的异常不可以大于父类抛出的异常 拓展:在重载中方法的返回类型不同是否构成重载???? (1)不能构成重载,重载必须要用参数来区分,传入不同参数,可以实现重载。