java基础问答题

1、一个 ".java"源文件中是否可以包括多个类(不内部)?有什么限制?
可以,一个类中只能有一个被public修饰的类,这个类名还必须和文件名相同。
2、Java有 没有 没goto?
没有,这个是保留字,还没有在java中被使用。
3、说 &和&& 的区别?
这两个都是与的意思,如果符号两边的表达式都是true,则整个为true,否则,只要一边为fals,就为false,但是&&为短路与,就是当左边的判断为false后,右边的就不再判断了。
4、在 JAVA中如何跳出当前的多重嵌套循环?
在外循环处设置一个标记,内循环跳出时使用带标记的break。
5、switch语句能否作用在语句能否作用在 byte,能否作用在 long上,能否作用在 String上?
只能是整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。在jdk1.7之后,可以使用String。 long呢?
6、short s1 = 1; s1=s1+1; 有什么错 ? short s1=1;s1+=1 有什么错 ?
第一个中short进行运算时会自动提升为int,但是s1为short类型,所以会出现错误 ,对于short s1 = 1; s1 += 1;由于 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
7、char 型变量中能不能存贮一个汉字 ?为什么?
能的,因为char型变量是用来存储Unicode编码的,Unicode编码中存储了汉字,所以char能存储汉字。
8、用最有效率的方法算出 2乘以 8等于几 ?
2<<3,因为将一个数左移n位,就相当于乘以了2的n次方。
9、请设计一个百亿的算器 ?
不会啊
10、使用 final关键字修饰一个变量时,是引用不能变?还是引用的对象不能变?
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。
11 、"=="和equals方法究竟有什么区别?
== 如果两边是数值,表示判断数值是否相等,如果两边是引用类型,表示对象是否相同
equals方法是用于比较两个独立对象的内容是否相同
12 、静态变量和实例变量的区别?
在语法上:静态变量前要加上static,实例变量不用
在程序运行上:实例变量是对象的属性,必须先创建对象,才会给实例变量分配空间,才能使用实例变量,而静态变量是类变量不用创建对象就能分配空间并使用。
13 、是否可以从一个 static方法内部发出对非static方法的调用?
不可以,因为static方法,是类方法,可以不创建对象就调用,也就是说static方法被调用时,可能还没创建对象,而非static方法只有在创建过对象时才能调用,所以非static方法里可以调用static方法,static方法里,不能调用非static方法。
14 、Integer与 intint 的区别?
int是八大基本数据类型之一,java为它们都提供了封装类,Integer就是int的封装类,int的默认值是0,Integer的默认值是null。
15 、Math.round(11.5) 等于多少? Math.round(-11.5) 等于多少 ?(返回最接近参数的值)
Math类提供了三个和取整有关的方法:ceil,floor,round
ceil:向上取整
floor:向下取整
round:四舍五入
16 、下面的代码有什么不妥之处 ?
1. if(username.equals(“zxx”){}
2. int x = 1;
return x==1?true:false;
17 、请说出作用域 、public , private,protected,以及不写时的区别?
private 本类
protect 本类 子类 同包
不写 本类 同包
public 本类 子类 同包 其它包
18、Overload 和 Override的区别? Overloaded是否可以改变返回值的类型 ?
overload:重载,在同一类中,方法名相同,方法的个数或返回类型不同。与返回值无关
override:重写,在继承中,子类声明了和父类一样的方法。
19 、构造器 Constructor是否可被override?
不可以,因为 Constructor是一个被final修饰的类。
20 、接口是否可继承接口? 抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
接口可以继承接口
抽象类可以实现接口
抽象类是可以继承实体类
抽象类中可以有静态的main方法
21、写 clone()方法时,通常都有一行代码是什么?
clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员。
22 、面向对象的特征有哪些方面?
封装,继承,多态
23、java中实现多态的机制是什么?
父类引用指向子类对象
24 、abstract class和interface有什么区别?
成员变量:抽象类中可以有变量和常量,接口中只能有常量
成员方法:抽象类中可以有抽象方法和普通方法,接口中只能有抽象方法
构造方法:抽象类中有,接口中没有
25、abstract方法否可同时是static? 是否可同时是 native ?是否可同时synchronized?
都不可以
方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。
27、内部类可以引用它的包含成员吗? 有没什么限制?
可以。
29 、super.getClass()方法调用?
下面程序的输出结果是多少?
importjava.util.Date;
public class Test extends Date{
public static void main(String[] args) {
new Test().test();
}
public void test(){
System.out.println(super.getClass().getName());
}
}
不太懂
30、String s = " Hello";s=s+"world";这两句代码执行之后,原始String对象中的内容到底有没有改变?
没有,String是不可变的,s原先指向一个对象,第二句话让它又指向一个对象成了hello world,但是原先那个并没有改变。
32 、是否可以继承String类?
不可以,String是final修饰的类。
33 、String s = new String("xyz");创建了几个 String Object?二者之间有什么区别?
一个,创建对象的同时给对象赋值
34 、String和StringBuffer的区别?
String与StringBuffer都是用来存储字符串的,但是String存储的字符串值不可以改变,StringBuffer存储的字符串值可以改变。
35 、如何把一段逗号分割的字符串转换成个数组 ?
用split方法
36 、数组有没length() 这个方法 ?String有没有没length()这个方法?
数组没有length这个方法,但是有length这个属性
String有length这个方法
37 、下面这条语句一共创建了多少个对象: String s="a"+"b"+"c"+"d"。
一个,相当于定义了一个abcd的字符串。
38、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,之前
40 、final, finally, finalize的区别?
final用于修饰类,方法,变量,变量值不可变,方法不能重写,类不能被继承
finally是异常处理语句的一部分,表示总是执行
finalize是 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 
41 、运行时异常与一般异常有何异同?
不知道啊
44 、请写出你最常见到的 5个 runtime exception?
NotBoundException ,NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、 DataFormatException
45 、java语言如何进行异常处理,关键字: throws,throw,try,catch,finally 在 分别代表什么意义?在 try块中可以抛出异常吗?
throws: 用在方法后面,跟的异常的类名。可以有多个异常类名。表示可能有异常抛出,但是不一定会发生。
throw: 用在方法体里面,跟的是异常对象。只能抛出一个具体的异常对象。表示抛出一个具体的异常了。只要执行到这里,一定会有异常抛出
try:将会发生异常的语句括起来,从而进行异常的处理,
catch:如果有异常就会执行他里面的语句,
finally:不论是否有异常都会进行执行的语句。
46、java中有几种方法可以实现一个线程?用什么关键修饰同步方法 ? stop() ? suspend() 方法为何不推荐使用?
继承Thread类或者实现Runnable接口
synchronized
stop不安全,suspend容易发生死锁
47 、sleep()和 wait()有什么区别?
sleep是睡眠,当睡眠时间结束后,就会执行该线程
wait是等待,只有再调用notfiy方法后才会继续执行
51、启动一个线程是用 run() 还是 start()?
start方法,使线程进入就绪状态,start是方法,但是它调用了run方法。
52 、当一个线程进入对象的synchronized方法后,其它线程是否可进入此对象的其它方法?
1.其他方法前是否加了synchronized关键字,如果没加,则能。
2.如果这个方法内部调用了wait,则可以进入其他synchronized方法。
3.如果其他个方法都加了synchronized关键字,并且内部没有调用wait,则不能。
4.如果其他方法是static,它用的同步锁是当前类
这个真不会
53 、线程的基本概念,线程的基本状态,以及状态之间的关系?
在同一个进程内又可以执行多个任务,而这每一个任务就可以看成是一个线程
新建 就绪 运行 堵塞 死亡
57 、介绍Collection框架的结构?
Collection是一个接口,List和Set是我们经常用的两个子接口,List接口下边的ArrayList和LinkedList以及Vector时常用的子类,Set接口下的HashSet和TreeSet是经常用的子类。
58 、Collection框架中实现比较要实现什么接口 ?
不知道
59 、 ArrayList 和Vector的区别?
ArrayList和Vector都是List接口的实现类,区别是ArrayList线程不安全,效率高,Vector线程安全,效率低。
61 、List和 Map区别 ?
List中存储的是对象,且可以重复,有序,Map中存储的是键值对,键是不可以重复的,值是可重复的。
62 、List, Set, Map是否继承自Collection接口 ?
List和Set继承Collection接口,Map不是。
63、List、Map、Set三个接口,存取元素时各有什么特点?
List:可重复,无序
Set:不可重复,有序
Map:存储的是键值对,键不可以重复,值可以重复,如果值重复,后面的值会把前面的顶替掉。
64 、说出LinkedList,ArrayList,Vector,的存储性能和特征?
ArrayList:底层是数组,查询快,增删慢,线程不安全,效率高
Vector:底层是数组,查询快,增删慢,线程安全,效率低
LinkedList:底层是链表结构,查询慢,增删快,线程不安全,效率高
68 、你所知道的集合类都有哪些?方法?
集合类:ArrayList,LinkedList,Vector,HashSet,TreeSet.
69 、两个对象值相同e) ((x.equals(y) == true),但却可有不同的hash code这句话对不?
对,如果对象要保存在HashSet或HashMap中,它们的equals相等,那么,它们的hashcode值就必须相等。如果不是,则不必相等。
71 、说出一些常用的类,包,接口请各举5个?
类:String,Math,Date,Exception,Integer
包:util包,lang包,io包,sql包,
接口:Collection, List ,Set ,Map ,Iterator
72、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请分别说出是什么类?
字节流,字符流
字节流的抽象类:输入流InputStream,输出流:OutputStream
字符流的抽象类:输入流InputStreamReader,输出流:OutputStreamWriter
77 、GC 是什么是什么?为什么要有GC?
GC是垃圾回收机制, 当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。 垃圾回收能自动释放内存空间,减轻负担。
78 、垃圾回收的优点和原理。并考虑2种回收机制?
回收机制有:分代复制垃圾回收,标记垃圾回收,增量垃圾回收。
79、 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性吗?
可以。
80、重载和重写的英文名字是什么?
重载(overload),重写(override)。
81、什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?(解释是用java虚拟机)
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。
82、JDK和JRE的区别是什么?
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。
Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如JavaDoc),可以让开发者开发、编译、执行Java应用程序。
83、装箱和拆箱分别是是什么?
java为八大基本数据类型都提供了封装类
装箱:基本数据类型到封装类
拆箱:封装类到基本数据类型
84、String str=null 和String str="" 的区别?
String str=null;    :只是创建一个变量的变量,但是没有指向内存空间。
 String str=" ";   创建一个str的变量,并在字符串常量池中开辟内存空间。
85、run方法和start方法有什么区别?
run()方法:只是一个普通方法,如果直接调用run方法,程序中依然只有主线程一个线程,其程序执行路径还是只有一条,
start()方法:来启动一个线程,此时此线程处于(可运行)状态,并没有运行,一旦得到了cpu给定的权限,就开始执行run()方法,若此时系统资源又被其他线程所争取到,则此线程就处于阻塞状态。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值