-
1.
在
main(
S
tring
[] args)
方法内是否可以
< br>调
用一个非静
态
方法
?
答案:不能
2.
同一个文件里是否可以有两个
public
类
?
答案:不能
3.
方法名是否可以与构造器的名字相同
?
答案:可以。
public
class
Test
{
public Test(String iceboy)
{
System
.n(iceboy);
}
public void Test(String iceboy)
{
n(iceboy);
}
public static void
main(String[] args)
{
Test a = new
Test(
输
出
“abc”
(
p>
输
出
“iceboy”
}
}
4.
初
始化了一个没有
run()
方法的
线<
/p>
程
类
,
是否会出
错
?
答案:不会。
第一
种
方法
:直接
继
承
Thread
类
。
public class Test
{
public static void main(String[] args)
{
ThreadClass t = new ThreadClass();
();
n(
输
出
“end”
}
}
class ThreadClass extends
Thread //Thread
类
已
经实现
了空的
run()
方法。
{
}
第二
种
方
法:
实现
Runnable
接口
public class Test
{
public static void main(String[] args)
{
ThreadClass t = new
ThreadClass();
Thread thread = new Thread(t);
();
n(
}
}
class
ThreadClass implements Runnable
{
public void run() //
必
须
有此方法否
则编译报错
。它
是
Runnable
接口中的抽象方法。
{
n(
}
}
4.
局部内部
类
是否可以
< br>访问
非
final
变
量
?
答案:不能
访问
局部的,可以
访问
成
员变
量
(
全局的
)
。
class Out
{
private String name =
void print()
{
final String work =
若不是
final
的
则
不能被<
/p>
Animal
使用
.
int
age=10;
class Animal
//<
/p>
定
义
一个局部内部
类
.
只能在
print()
方法中使用
.
//
局部
类
中不能使用外部的非
final
的局部
变
量
.
全局的
可以
.
{
public void eat()
{
n(work);//ok
//age=20;error not final
n(name);//ok.
}
}
Animal local = new Animal();
();
}
}
5.
选
择语
句
case
中,允
许
使用的
值
有哪些
?
答案:
int,short,char,by
te(
都在
int
范
< br>围
之内,且是整数
)
6. Math,String
是不
可
继
承的。
(final
类
)
Instanceof
后面跟的
应该
是
OBJECT
。
构造器可以是私有的。
(private)
=
与
p>
==
意
义
是完全不
同的。一个是
赋值
,一个是等于。
全局
变<
/p>
量可以不
进
行初始化,如果使用一个局部
变
量,
则这
个
局部
变
量要被初始化。
7.
在
try-catch-final
块
中的退出
语
句。
public class
Test
{
public static void main(String[] args)
{
int a=1;
try
{
a=a/0;
}catch(Exception e)
{
n(
return;//
当
return<
/p>
时
,
finally
中的
语
句会
执
行。
//(0);//
若用上
这
句,
fin
ally
中的
语
句不会
执
行。直接返回,退出程序。
}
finally //
当没有
(0);
时
,无
论<
/p>
是否
发
生异常它都会
执
行。
{
n(
}
}
}
注:
try-catch-final
块
的
顺
序不能
调换
。
8.
下面都是正确的
main
方法
签
名。
public static void main(String[] args)
public static final void main(String[]
args)
static public void main(String[] args)
static public synchronized void
main(String[] args)
static public abstract void
main(String[] args)//
错误
9. if(-0.0 == 0
.0)
是相等
还
是不等
?
答案:相等。
10.
一个抽象
类
是否可以没有抽象方法
?
答案:可以。
AccessFile
类继
承
Object
,
并且
实现
了
DataInput
和
DataOutput
接口。
答案:正确
tion
与
Collections
的区
别
?
答案:
C
ollection
是一个接口,但
Collections
却是一个
辅
助
类
,里面有很多静
态
< br>的工具方法。而且很有用的。如:
reverse(List
list);sort(List list, Comparator c)
等。
p>
Collections
没有
实现
任何接口。它直接
继
承了
Object
。
Child extends Parents{}
class Parents{}
是否可以
这样
声明
类
,在一个文件中
?
答案:可以。
14.
数
组
,无
论
是当前的,
< br>还
是
类
等
级
的,都会被初始化。
String
是被初始化
为
null,
不是空字符。
null,““,”
“,
都是不同的。
“continue”
只能在一个循
环
里
(
如
p>
for,do,while)
,它不能在
c
ase
语
句中出
现
。
Primitive
(int,char,long
等
)
数
组
是不能互相
p>
赋值
的,即使它
们
本身可以。
一个
Constructor
可以抛出任何异常。
初始化
块
是按照声明的
顺
序<
/p>
执
行的。
所有
关
于
NaN(Not a Number)
和
non-NaN
的比
较
,都返回
false.
这
条很重要。
==
会<
/p>
产
生
编译错误
,
如果两
边类
型不匹配的
话
。
equals()
返回
false
如果
对
< br>象
类
型不同,但不
产
生
编译错误
。
成
员变
p>
量默
认
初始化的
值
。
p>
成
员变
量
类
型
取
值
byt
e-
0 short-0
int-0 long-0L
char-'u0000' float-0.0F double-0.0D
boolean-false
所有引用
类
型
null
16.
integer
和
long
操作
/
和
%
的
话
,
p>
可能会抛出
ArithmeticException
,比如除
0
。但是
float
与
double
不会,即使是除以
0
。
double a=0;a=a/
0;
则
a
等于
NaN
。
17.
普通内部
类
不可以
拥
有静
态变
量,但静
态
内部
类
可以。
File
类
没有
任何
处
理文件内容的方法。
InputStream
和
OutputStream
是
抽象
类
,
DataInput
和
DataOutput
是
接口。
DataInputStream
实
现
了
DataInput
接口。
18.
面向
对
象的特征有哪些方面
?
<
/p>
答案:最基本特征:封装,
继
承,多
p>
态
。
其他特征:抽象
关联
,聚合,
组
合,内聚,耦合
是最基本
的数据
类
型
吗
? String
和
StringBuffer
的区
别
?
答案:
String
不是一最基本的数据
类
型。
STRING
的
长
度是不可
变
< br>的,
STRINGBUFFER
的
长
度是可
变
的。如果你
对
字符串中的内容
经
常
p>
进
行操作,特
别
是内容要修改
时
,那
么
使用
StringBuffer
,如果最后需要
String<
/p>
,那
么
使用
St
ringBuffer
的
toString()
方法
和
Integer
有什
么
区
别
答案:
int
是基本
类
型。
Integer
是引用
类
型。
Int
eger
可以把
String
转换
p>
成
int
。
21.
运
行
时
异常与一般异常有何异同
?
答案:异常表示程序运行
过
程中可能出
现
的非正
常状
态
,运行
时
异常表示虚
拟
机的通常操作中可能遇到的异常,是
一
种
常
见
运行
错误
。
java
编译
器要求方法必
须
声
明抛出可能
发
生的非运行
时
异常,但是并不要求必
须
声明抛出未被捕
获
的运行
时
异常。
p>
22.
p>
说
出一些常用的
类
,包
,
接口,
请
各
举
5
个
?
答案:常用
类
-System,ArrayList,FileInputStream,Thr
ead,Socket.
常用的
包
-,,,,java
.net
常用接口
-Collection,
Connection
,
Cloneable, Comparable, Serializable
23.
说
出
ArrayList,Vector, LinkedList
的存
储
性能和特性
.
答案:
A
rrayList
和
Vector
都是
使用数
组
方式存
储
数据,此数
组
元素数大于
实际
p>
存
储
的数据以便增加和插入元素,
它
们
都允
许
直接按序号索引元素,但是插入元素要
涉
及数
p>
组
元素移
动
等内存
操作,所以索引数据快而插入数据慢,
Vector
由于使用了
synchronized
方法
(
p>
线
程安全
)
,通常
性能上
较
ArrayList
差,而<
/p>
LinkedList
使用双向
链
表
实现
存
储
,按序号索引数据需要
进
行前向或后向遍
历
,但是插入数据
时
只需要
记录
本
项
的前后
项
即可,所以插入速度
较
p>
快。
24.
设计
4
个
p>
线
程,其中两个
线
程
每
次
对
j<
/p>
增加
1
,另外两个
线
程
对
j
每
次减少
1
。写出程序。
注:因
为这
4
个
线
< br>程共享
J
,所以
线
程
类
要写到内部
类
中。
加
线
程:
每
次
对
j
加一。
减
< br>线
程:
每
次
对
j
减一。
public class
TestThreads
{
private int j=1;
//
加
线
程
private class Inc
implements Runnable
{
public void run()
{
for(int i = 0;i < 10;i++)
{
inc();
}
}
}
//
减
线
程
private class Dec
implements Runnable
{
public void run()
{
for(int i = 0;i < 10;i++)
{
dec();
}
}
}
//
加
1
private synchronized void inc()
{
j++;
n(tThread().getName()+
}
//
减
1
private synchronized void dec()
{
j--;
n(tThread().getName()+
}
//
测试
程序
public static void
main(String[] args)
{
TestThreads test = new
TestThreads();
//
创
建两个
线
程
类
Thread thread
= null;
Inc inc = Inc();
Dec dec = Dec();
//
启
动<
/p>
4
个
线
程
for(int i = 0;i <
2;i++)
{
thread = new Thread(inc);
();
thread = new
Thread(dec);
();
}
}
}
25
.
数
组转换问题
。
Object[] object = new Person[2];
Person [] person = new Person [3];
person = (Person
[])object;//
可以
转换
int[] i = new int[2];
long[] l = new
int[3];
i =
(long[])l;//
不可以
转换
26.
用
socket
通
讯
写出客
户
端和服
务
器端的通
讯
,要求客
户发
p>
送数据后能
够
回
显
相同的数据。
Server
.java:
源代
码
import
java
.net
.*;
import .*;
class
Server
{
public
Server()
{
BufferedReader br = null;
PrintWriter pw = null;
try
{
ServerSocket server = new S
erverSocket(8888);//
建立服
务
器端
Socket
socket = ();//
监
听客
户
端
//
得到
该连
接的
输
入流
br = new BufferedReader(new
InputStreamReader(utStream()));
//
得到
该连
接的
输
出流
pw = new PrintWriter(putStream(),true);
//
先
读<
/p>
后写
String
data
= ne();
System
.n(data);//
输
p>
出到控制台
n
(data);//
转发给
客
户
端
}catch(Exception e)
{
tackTrace();
}
finally
{
try
{
//
关
闭读
写流
();
();
}catch(Exception e)
{}
}
}
public static void main(String[] args)
{
Server server = new
Server();
}
}
Cl
ient
.java:
源代
码
import
java.
net
.*;
import .*;
class
Client
{
public Client()
{
BufferedReader
br = null;
PrintWriter pw =
null;
try
{
Socket socket
= new Socket(
与服
务
器
建立
连
接,服
务
器要先启
//
< br>得到
Socket
的
输
入与
输
出流
br = new BufferedReader(new
InputStreamReader(utStream()));
pw = new PrintWriter(putStream(),true);
//
先写后
读
n(
你好
!
String data = null;
while(true)
{
data = ne();
if(data!=null) break;
}
n(data);
}catch(Exception e)
{
tackTrace();
}
finally
{
try
{
();
();
}catch(Exception e)
{}
}
}
public static void main(String[] args)
{
Client c = new Client();
}
}
27.
谈谈
final,
finally, finalize
的区
别
< br>。
答案:
final
用于声明属性,方
法和
类
,分
别
表示属性不可
变
,
注意:如果是基本<
/p>
类
型
说
明
变
量本身不能改
变
,如果是引用
类
型,
说
明它不能指向其他的
p>
对
象了。但
对
象<
/p>
还
是可以改
变
的。方法不可覆盖,
类
不可
继
承。
finally
p>
是异常
处
理
语
p>
句
结
构的一部分,表示无
< br>论
是否出
现
异常
总
是
执
行。
< br>
-
-
-
-
-
-
-
-
-
上一篇:java中length和length()的区别
下一篇:中考英语必考词完整版