Java基础练习题

第一章
1:简述Java 从代码到运行的全过程
 
2:简述虚拟机的工作机制
 
3:简述java的垃圾回收机制
 
4:简述java的安全机制
 
5:简述path、classpath、JAVA_HOME各自的含义和配置方式
 
第二章

1:叙述标识符的定义规则,指出下面的标识符中那些是不正确的,并说明理由
  here , _there, this, it, 2to1, _it

2:Java中共有那些基本数据类型?分别用什么符号来表示,各自的取值范围是多少?

3:复习所有的Java关键字

4:指出正确的表达式
  A byte b=128;   
  B char c=65536;  
  C long len=0xfffL;   
  D double dd=0.9239d;

5:下面哪几个语句将引起编译错?
  A. float f=4096.0;  
  B. double d=4096.0;  
  C. byte b=4096;  
  D. char c=4096;

6:简述Java 中的运算符,以及他们的运算次序。

7:创建一个switch 语句,为每一种case 都显示一条消息。并将switch 置入一个for循环里,令其尝试每一种case。在每个case后面都放置一个break,并对其进行测试。然后,删除break,看看会有什么情况出现。

8:执行下列代码后的x 和y 的结果分别是什么?
  int x,y,a=2;   
  x=a++;   
  y=++a;   

9:下面的程序输出结果是:a=6 b=5
  请将程序补充完整。
  public class A{
  public static void main(String args[]){
  int a=5,b=6;
  a= _a+b_____;
  b=a-b;
  a=__a-b_____;
  System.out.println("a="+a+" b="+b);
  }
  }
 
10:下面哪个语句序列没有错误,能够通过编译?
  A.
  int i=0;
  if (i) {
  System.out.println(“Hi”);
  }
  B.
  boolean b=true;
  boolean b2=true;
  if(b==b2) {
  System.out.println(“So true”);
  }
  C.
  int i=1;
  int j=2;
  if(i==1|| j==2)
  System.out.println(“OK”);
  D.
  int i=1;
  int j=2;
  if (i==1 &| j==2)
  System.out.println(“OK”);

11:阅读以下代码行:
  boolean a=false;
  boolean b=true;
  boolean c=(a&&b)&&(!b);
  int result=c==false?1:2;
  这段程序执行完后,c与result的值是:
  A c=false; result=1;
  B c=true; result=2;
  C c=true; result=1;
  D c=false; result=2;

12:下列代码哪行会出错?
1) public void modify() {   
2) int i, j, k;   
3) i = 100;   
4) while ( i > 0 ) {   
5) j = i * 2;   
6) System.out.println (" The value of j is " + j );   
7) k = k + 1;   
8) i--;   
9) }   
10) }   

  A 第 4行   
  B 第 6行  
  C 第 7行   
  D 第 8行  
 
13:指出下列程序的运行结果。
  int i = 9;
  switch (i) {
  default:
  System.out.print("default");
  case 0:
  System.out.print("zero"); break;
  case 1:
  System.out.print("one");
  case 2:
  System.out.print("two");
  }

  A default
  B defaultzero
  C 编译错
  D 没有任何输出

14: 将1 到1000 之间的奇数打印出来。
 
15: 判断一个数能否同时被3和5 整除。
 
16: 输入10个数,找出最大一个数,并打印出来。
 
17: 给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90 分以上为’A’,80~89 分为’B’,70~79 分为’C’,60~69 分为’D’,60分以下为’E’。
 
18: 输出图案:
*
**
***
****
*
**
***
****
 
19: 使用for 语句打印显示下列数字形式:n=4
  1
  1 2 1
  1 2 3 2 1
1 2 3 4 3 2 1
 
第三章

1:写一个MyPoint 完全封装类,其中含有私有的int类型的x 和y 属性,分别用公有的getX 和setX、getY 和setY 方法访问,定义一个toString 方法用来显示这个对象的x、y 的值,如显示(1,2),最后用main 方法测试。

2:在MyPoint 类中增加equals()、toString()方法,根据命令行参数个数测试:若不传参数,则显示(0,0);若传一个参数,则打印(此参数值,0);若传两个参数,则打印(第一个参数值,第二个参数值)。

3: 有一个序列,首两项为0,1,以后各项值为前两项值之和。写一个方法来实现求这个序列的和

4:请编写一个方法实现如下功能:将1至7 的数字转换为星期日到星期六的字符串。

5:请编写一个方法实现如下功能:有任意三个整数a,b,c,请输出其中最大的

6:请编写一个方法实现如下功能:将任意三个整数a,b,c按从小到大的顺序输出。

7:请编写一个方法实现如下功能:用程序找出每位数的立方和等于该数本身值的所有的3 位数。(水仙花数)

8:请编写一个方法实现如下功能:计算1 加到n ( n>=2的整数)的总和。

9:请编写一个方法实现如下功能:得到一个整数的绝对值。

第四章

1:创建一个构造方法重载的类,并用另一个类调用

2:创建Rodent(啮齿动物):Mouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)等的一个继承分级结构。在基础类中,提供适用于所有Rodent 的方法,并在衍生类中覆盖它们,从而根据不同类型的Rodent 采取不同的行动。创建一个Rodent 数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。

3:编写MyPoint的一个子类MyXYZ,表示三维坐标点,重写toString方法用来显示这个对象的x、y、z 的值,如显示(1,2,3),最后用main方法测试

4:当你试图编译和执行下面的程序时会发生什么?
class Mystery{
  String s;
  public static void main(String[] args){
  Mystery m=new Mystery();
  m.go();
  }
  voidMystery(){
  s="constructor";
  }
  void go(){
  System.out.println(s);
  }
}
选择下面的正确答案:  
A 编译不通过
B 编译通过但运行时产生异常
C 代码运行但屏幕上看不到任何东西
D 代码运行,屏幕上看到constructor
E 代码运行,屏幕上看到null
 
5:当编译和运行下列程序段时,会发生什么?  
class Person {}
class Woman extends Person {}
class Man extends Person {}
public class Test{
  public static void main(String argv[]){
  Man m=new Man();
  Woman w=(Woman) new Man();
  }
}
A 通过编译和并正常运行。
B 编译时出现例外。
C 编译通过,运行时出现例外。
D 编译不通过
 
6:对于下列代码:
1 class Person {
2 public void printValue(int i, int j) {//... }
3 public void printValue(int i){//... }
4 }
5 public class Teacher extends Person {
6 public void printValue() {//... }
7 public void printValue(int i) {//...}
8 public static void main(String args[]){
9 Person t = new Teacher();
10 t.printValue(10);
11 }
12}
第10 行语句将调用哪行语句?
A line 2
B line 3
C line 6
D line 7

7:下列代码运行结果是什么?  
public class Bool{
  static boolean b;
  public static void main(String []args){
  int x=0;
  if(b){
  x=1;
  }
  else if(b=false){
  x=2;
  }
  else if(b){
  x=3;
  }
  else{
  x=4;
  }
  System.out.println(“x= ”+x);
  }
}
 
8:在命令行输入java X Y的结果是:
public class X{
  public void main(String []args){
  System.out.println(“Hello ”+args[0]);
  }
}
A. Hello X Y
B. HelloX
C. HelloY
D. 不能编译
E. 运行时有异常
 
9:下列代码编译并运行的结果是:  
public class Test{
  public static void main(String []args){
  class T1 extends java.lang.Thread{}
  class T2 extends T1{}
  class T3 implements java.lang.Runnable{}
  new T1().start();
  new T2().start();
  new Thread(new T3()).start();
  System.out.println(“Executing”);
  }
}
A. 编译失败
B. 程序能运行但永远永不终止
C. 能运行并输出“Executing”
D. 运行时有异常
 
10:代码运行结果是什么?
public class Test{
  public static void main(String []args){
  double num=7.4;
  int a=(int)Math.abs(num+0.5);
  int b=(int)Math.ceil(num+0.5);
  int c=(int)Math.floor(num+0.5);
  int d=(int)Math.round(num+0.5);
  int e=(int)Math.round(num-0.5);
  int f=(int)Math.floor(num-0.5);
  int g=(int)Math.ceil(num-0.5);
  int h=(int)Math.abs(num-0.5);
  System.out.println("a="+a);
  System.out.println("b="+b);
  System.out.println("c="+c);
  System.out.println("d="+d);
  System.out.println("e="+e);
  System.out.println("f="+f);
  System.out.println("g="+g);
  System.out.println("h="+h);
  }
}
   
11:完成此段代码可以分别添加哪两个选项?
1. public class Test{
2.
3. public static void main(String []args){
4.
5. System.out.println(“c=”+c);
6. }
7.}
a)在第2行加上语句static char c;
b) 在第2 行加上语句char c;
c) 在第4 行加上语句static char c;
d) 在第4 行加上语句char c=’f’;
   
12:下列代码运行结果是什么?
public class A{
  puvlic static void main(Stirng []args){
  int m=2;
  int p=1;
  int t=0;
  for(;p<5;p++){
  if(t++>m){
  m=p+t;
  }
  }
  System.out.println(“t equals ”+t);
  }
}
A. 2
B. 4
C. 6
D. 7
 
13:已知如下的命令执行java MyTest a b c 请问哪个是正确的?
A、args[0] = "MyTest a b c"
B、args[0] = "MyTest"
C、args[0] = "a"
D、args[1]= 'b'
 
14:将下面类中的变量和方法改为静态的,使程序能正确编译执行。如果保持用实例变量和方法就必须创建对象,请创建A的对象并通过该对象来引用实例变量和方法。
public classA{
  int a=9;
  public void show(int a){
  System.out.println(a*10);
  }
  public static void main(String args[]){
  a+=a;
  show(a);
  }
}
 
15:设计个Circle类,其属性为圆心点(类型为前面设计的类MyPoint)和半径,并为此类
  编写以下三个方法:
  一是计算圆面积的calArea()方法;
  二是计算周长的calLength();
  三是boolean inCircle(MyPoint mp)方法,功能是测试作为参数的某个点是否在当前对象圆内(圆内,包括圆上返回true;在圆外,返回false)


第五章

1:写一个方法,在方法内部定义一个一维的int 数组,然后为这个数组赋上初始值,最后再循环取值并打印出来

2:下面的数组定义那些是正确的

  A: int a[][] = new int[3,3];
  B: int a[3][3] = new int[][];
  C: int a[][] = new int[3][3];
  D: int []a[] = new int[3][3];
  E: int [][]a = new int[3][3];

3:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”

4:请在下面语句中找出一个正确的。  
  A. int arr1[2][3];
  B. int[][] a2 = new int[2][];
  C. int[][] arr2=new int [][4];
  D. int arr3[][4]= new int [3][4];

5:用二重循环求出二维数组b所有元素的和:int[][] b={{11},{21,22},{31,32,33}}

6:编写一个方法实现将班级同学的名单存放在数组中,并利用随机数(Math.random())随机输出一位同学的姓名。

7:生成一百个随机数,放到数组中,然后排序输出。

8:统计字符串中英文字母、空格、数字和其它字符的个数。

第六章

1:设计一个银行帐户类,具有户名,帐号,余额等属性,以及存款、取款等方法,并对此类进行测试

2:写一个方法,功能:定义一个一维的int 数组,长度为3,把任意三个整数a,b,c赋值给数组,然后将它们按从小到大的顺序输出(使用冒泡排序)

3:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 (不使用数学公式,要求用递归)

4:输出一个字符数组中的所有字符的所有组合。比如有字符集str={A,B,C}。应输出:
A B C AB AC BA BC CA CB ABC ACB BAC BCA CAB CBA

5:已知两个对像String s1,String s2,已用ASC码排序好了,编写程序将两个String 合并,得到的结果。例如:s1="abc" s2="abc" 得s="aabbcc";结果也是排序的

6:两个乒乓球队进行比赛,各出三人。甲队为a,b,c 三人,乙队为x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a 说他不和x 比,c 说他不和x,z 比,请编程序找出三队赛手的名单。

7:编程:编写一个截取字符串的方法,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6, 应该输出为"我ABC"而不是"我ABC+汉的半个"。

8:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。请编写一个方法来实现上述加密算法。

9:企业发放的奖金根据利润提成。利润低于或等于10 万元时,奖金可提10%;利润高于10 万元,低于20 万元时,低于10 万元的部分按10%提成,高于10 万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40 万到60 万之间时高于40万元的部分,可提成3%;60 万到100 万之间时,高于60 万元的部分,可提成1.5%,高于100 万元时,超过100 万元的部分按1%提成,请编写程序,输入当月利润,求应发放奖金总数?

10: 老伯伯要带鱼、狗、猫过河到对岸.,有一条船,只能坐一个人,老伯每次只能带一样动物过河,当老伯不在的时侯狗会咬猫,猫会吃鱼.,请问怎么顺序过河呢?要求:编写程序,由程序来推出过河的顺序

第七章

1:定义一个对象“交通工具”,并定义接口,说明交通工具可以移动。继承交通工具而产生汽车、飞机、轮船,并定义类来实现其移动的方法。

2:定义一个类来使用上面的接口

第八章

1:用extends 关键字创建自己的例外类;

2:用main()创建一个类,令其掷出try 块内的Exception 类的一个对象。为Exception 的构建器赋予一个字串参数。在catch从句内捕获异常,并打印出字串参数。添加一个finally从句,并打印一条消息,证明自己真正到达那里。

3:给定下面代码:  
public void example(){
  try {
  unsafe();
  System.out.println("Test 1");
  }catch(Exception e){
  System.out.println("Test 2");
  }
  finally{
  System.out.println("Test 3");
  }
  System.out.println("Test 4");
}
如果方法unsafe()运行正常,哪个结果不会被显示出来?
  A. Test 1 B. Test 2 C. Test3 D. Test 4

4:编写应用程序,从命令行传入两个整型数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException 异常在命令行输入不同的参数时能输出如下各种结果:  
  java A  
  总是被执行  
  Exception in thread "main" java.lang.ArrayIndexOutofBoundsException at  
  A.main(A.java:7)  
 
  java A 1 2  
  0  
  总是被执行  
 
  java A 1 3a  
  java.lang.NumberFormatException: 3a  
  at java.lang.Integer.parseInt(Integer.java:435)  
  at java.lang.Integer.parseInt(Integer.java:476)  
  at A.main(A.java:8)  
  总是被执行  
 
  java A 1 0  
  java.lang.ArithmeticException: / by zero at A.main(A.java:9)  
  总是被执行  

第九章

1:定义一个类,类里面有一个属性col,类型是集合类型 Collection,实现下列方法:可以向col 里面添加数据、修改数据、查询数据、删除数据。也就是把这个 col当作一个数据存储的容器,对其实现数据的增删改查的方法。  
 
2:把上题的Collection改成使用Map实现  
 
第十章
 
1、 构建一个地址本的应用,画出增、删、改、查、列表的界面  
 
第十一章
 
1:完成地址本的应用,为已经画出的增、删、改、查、列表界面添加动态功能的实现。要求数据存储使用第九章集合完成的作业。也就是使用 Swing 做表现层,集合做逻辑层来实现可以增删改查的地址本的功能。  
 
第十二章
 
1:利用输入输出流编写一个程序,可以实现文件复制的功能,程序的命令行参数的形式及操作功能均类似于DOS中的 copy命令  
 
2:为前面完成的地址本程序添加文件的操作,把存放在内存集合中的数据存放到文件中,形成用Swing完成表现层,集合完成逻辑层,I/O 完成数据存储的结构。  
 
第十三章
 
1、 从Thread继承一个类,并覆盖 run()方法。在run()内,打印出一条消息,然后调用sleep()。重复三遍这些操作,然后从run()返回。在构建器中放置一条启动消息,并覆盖 finalize(),打印一条关闭消息。创建一个独立的线程类,使它在 run()内调用System.gc()和System.runFinalization(),并打印一条消息,表明调用成功。创建这两种类型的几个线程,然后运行它们,看看会发生什么。  
 
第十四章
 
1:修改程序 1,删去为输入和输出设计的所有缓冲机制,然后再次编译和运行,观察一下结果。  
 
2:修改程序2JabberClient,禁止输出刷新,并观察结果。  
 
3:可以尝试做一个类似QQ 的聊天通讯工具  
 
第十五章
 
1:准备工作:  
定义一个 Model 类,里面所有的属性都是 private 的,然后为每个属性提供 getter和setter 方法;  
再准备一个Map,map的key值都是类里面的属性字段的字符串表示,值任意。  
 
2:真正的工作:  
设计一个方法Object getModel(Map map,Class cls),传入一个包含所有值的 Map,然后再传入 Model 类的 class,那么返回 Model 类的实例,这个实例里面已经包含好了所有相关的数据。也就是把Map中的数据通过反射,设置回到 Model类实例中。  


转自http://topic.csdn.net/u/20110720/11/1b0917e0-f23b-43a3-8569-5a4bb0c40eaa.html

你可能感兴趣的:(java)