1.一个“.java”源文件中是否可以包含多个类?
可以包含多个类,但是只有一个public的类,并且public 的类名必须与文件名一致
2.Java中有没有goto?
Java中的保留字,现在没有在Java中使用,不是关键字
3.说说&和&&的区别?
&和&&都可以用作逻辑与的运算符,表示逻辑与,当运算符两边的表达式的结果都为true时,整个运算结果为true
只要有一方为false,则结果为false
不同点&&还具有短路与的功能,如果第一个表达式为false。则不再计算第二个表达式,
4.在Java中如何跳出当前的多重循环?
在Java中,要想跳出多重循坏,可以再外面的循坏语句前定义一个标号,然后在里层循环的代码中使用带有标号的break语句
OK;
for(int i=0;i<10;i++){
for(int j=o;j<10;j++){
system.out.print("i="+i,"j="+j)
if(j==5)
break ok;
}
}
或者,让外层的循环条件表达式的结果可以受到里层循环体代码的控制
0px; ">int arr[][] ={{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length&& !found;i++) {
for(int j=0;j<arr[i].length;j++){
System.out.println(“i=” + i + “,j=” + j);
if(arr[i][j] ==5) {
found = true;
break;
}
}
}
5.char类型变量中能不能存储一个中文汉字?为什么?
char类型变量是用来存储Unicode编码字符的,Unicode编码字符集中包含了汉字,所以是可以存储汉字的
如果某个特殊的汉字没有包含在Unicode编码字符集中,那么久不能存储这个特殊汉字,Unicode编码占用两个字节,所以char类型的变量也是占用两个字节
8.用最有效的方法计算出2乘8等于几?
2<<3
因为将一个数左移N位,相当于乘以了2的N次方。
9.“==”和equals方法究竟有什么区别?
==操作符专门用来比较两个变量的值是否相等,也就是比较变量所对应的内存中所存的数值是否相等,要比较两个基本类型的数据是否相等
只能用 ==
而equals方法适用于比较两个独立对象的内容是否相同。
静态变量和实例变量有什么区别?
在语法定义上,静态变量前面要加static关键字,而实例变量前面则不需要加
在程序运行上面,实例变量属于某一个对象的属性,需要创建实例对象,其中的实例变量才会分配空间,才能使用这个实例变量
而静态变量不属于某一个实例对象,是属于类,只要程序加载了类的字节码,不需要创建任何实例对象,静态变量就会被分配空间,静态变量就能使用
总之,实例变量必须创建对象后才能通过这个对象来使用,而静态变量则可以直接使用类名来引用。
13.是否可以从一个static方法内部发出对非static方法的调用?
不可以,因为非static方法要与对象关联在一起,必须创建一个对象后,才可以在该对象上进行方法的调用
而static方法调用不需要创建对象,可以直接调用,也就是说,当一个static方法被调用时,可能没有创建任何实例
如果从一个static方法中发出对非static方法的调用,那个非static方法的关联对象没有,这个逻辑无法成立。
14.int与integer的区别?
int是Java提供的8种原始数据类型之一,Java为每个原始类型提供了封装类,integer是Java为int提供的封装类
int默认为0,integer默认为null,另外integer提供了多个与整数相关的操作方法,例如,将一个整数转换成为字符串。
15.请说出public private protected的作用域
public 当前类 同一包下 子孙类 其他包 都可以访问
protected 当前类下,同一个包中,子孙类都可以访问,其他包中不能访问
private 当前类中可以访问,其他都不可以
friendly 当前类和同一包下都可以访问,子孙类和其他包不可以访
16重载和重写的区别?
overlord 即重载:表示同一个类中有多个名称相同的方法,但是这些方法的参数列表各不相同
override 即重写:表示子类中的方法可以与父类中的方法名称和参数完全一致,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法
这相当于把父类中定义的那个完全相同的方法给覆盖了。子类覆盖父类方法时只能抛出比父类更少额异常,因为子类可以解决父类的一些问题
不能比父类有更多的问题。
17.构造器constructor是否可以被重写?
构造器constructor不能被override,因为不能不继承。但是可以重载overlord
18.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承具体类?抽象类是否可以有静态的main方法?
接口可以继承接口
抽象类可以实现接口
抽象类可以继承具体类
抽象类中可以有静态的main方法
抽象类与普通类的唯一区别:就是不能创建实例对象,和拥有abstract方法。
21.写clone()方法时,通常有一行代码是什么?
super.clone();
22.Java中实现多态的机制是什么》
靠的是父类或者接口的引用变量可以指向子类或具体实现类的实例对象。
23.abstract 类和interface接口有什么区别?
含有abstract修饰的class是抽象类
abstract类不能创建实例对象,含有abstract方法的类必须定义为abstract。clas
但是抽象类中方法不一定是抽象的。
接口可以说成是抽象类的一种特性,接口中的所有方法必须是抽象的,接口中定义的方法默认为public abstract类型
接口中的成员变量类型默认为public static final
抽象类中可以包含静态方法,接口中不能包含静态方法
一个类可以实现多个接口,但是只能继承一个抽象类
26.什么是类部类?
27.String是最基本的数据类型麽?
基本数据类型包括byte int char long float double boolean short
Stirng是final修饰的,所以不能被继承
31、 String s = "Hello";s = s + " world!";这两行代码执行后,原始的 String
对象中的内容到底变了没有?
没有。 因为 String 被设计成不可变(immutable)类, 所以它的所有对象都是不可变对象。在
这段代码中, s 原先指向一个 String 对象,内容是 "Hello",然后我们对 s 进行了+操作,那
么 s 所指向的那个对象是否发生了改变呢?答案是没有。这时, s 不指向原来那个对象了,
而指向了另一个 String 对象,内容为"Hello world!",原来那个对象还存在于内存之中,只
是 s 这个引用变量不再指向它了。
32.string和stringbuffer区别?
Java平台提供两个类,string和stringbuffer,他们都可以存储和操作字符串
这个string类提供的数值是不可以改变的字符串,而stringbuffer的类提供了部分字符串进行修改
所以可以使用stringbuffer来动态构造字符数据
另外,string实现了equals方法,而stringbuffer没有实现equals方法
33.数组有没有length方法?string有没有length方法?
数组没有length()方法,但是有length属性,string有length()方法
34:final,finally和finalize区别
final适用于声明属性,方法和类,分别表示属性不可变,方法不可以覆盖,类不可以继承
finally是异常处理语句构造的一部分,表示总执行
finalize是object类一个方法
35运行异常和一般异常有何不同?
异常表示程序运行过程中可能出现的非正常状态
运行时异常表示虚拟机的通常操作中可能遇到的异常。是一种常见的运行错误。
36.写出常见的5个运行异常
NULLpointException 空指针异常
ArrayIndexOutOfBoundsException 下标越界异常
classCaseExcepion 类加载异常
37.Java中有几种方法实现一个线程?用什么关键字修饰同步方法?
有两种实现方法分别是 继承Thread类和实现runnable接口
用synchronize关键字修饰同步方法
38.sleep()和wait()有什么区别?
sleep()是线程类Thread的方法。导致此线程暂停执行时间,给其他线程执行机会。但是健康状态依然保持,
到时后会自动恢复,调用sleep不会释放对象锁
wait是object类的方法。此对象调用wait方法会导致本线程放弃对象锁,只能对该对象发出notify方法,线程才进入运行状态
48.同步和异步有什么不同,在什么情况下回使用它们?
如果数据将在线程间共享,例如正在写的数据以后可能被另外一个线程读到,或者正在读的数据可能已经被另外一个线程谢过了
那么这些数据就是共享数据,必须进行同步存取
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待返回结果,
就应该使用异步编程
多线程有几种实现方法?同步有几种实现方法?
多线程有两种实现方法,分别是继承thraed类和实现runnable接口
同步的实现有两种,分别是synchronized wait与notify
wait让一个线程处于等待状态,并且释放所持有对象的lock
sleep让一个正在运行的线程处于休眠状态,是一个静态方法,
notify唤醒一个处于等待状态的线程
Allnotify唤醒所有处于等待状态的线程。
51启动一个线程是用run还是start?
启动一个线程是start,是线程就绪状态,以后可以被调度运行状态
一个线程必须关联一些具体的执行代码,run方法就是该线程所关联的执行代码