《Java经典练习题.doc》由会员分享,可在线阅读,更多相关《Java经典练习题.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 Java基础试题一、选择题1编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A. .java B. .class C. .html D. .exe2、设 x = 1 , y = 2 , z = 3,则表达式 yz/x 的值是( A )。 A. 3 B. 3. 5 C. 4 D. 53、main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的( B )?A、public static void main()B、public static void main( String args )
2、C、public static int main(String arg )D、public void main(String arg )44.Which of the following is not a valid comment:Da. /* comment */ b. /* comment */ c. /* comment d. / comment 5. Java中char类型的数据长度为 :C(A)8位 (B)16位 (C)32位 (D)64位 6.下面哪个表达式是错误的: B(A)int i = 100; (B)float f = 100.0; (C)Object o = “Hell
3、o world”; (D)char c = u1234; 7.下面哪个语句是正确的:C (A)byte s = 256; (B)String s = Hello world; (C)int x = 012; (D)char c = “a”; 8.下列叙述中,正确的是:AA)声明变量时必须指定一个类型 B)Java认为变量number与Number相同C)Java中唯一的注释方式是/ D)源文件中public类可以有0或多个9.下列属于合法的Java标识符是:DA)ABC B)&5678 C)+rriwo D)saler10.下面哪个标识符是不合法的:D (A)s1 (B)$1 (C)_1 (D
4、)1s 11在switch(expression)语句中,expression的数据类型不能是:A A)double B)char C)byte D)short12已知:int a = new int100;在下列给出的数组元素中,非法的是:D A)a0 B)a1 C)a99 D)a10013下列的哪个赋值语句是不正确的?: AAfloat f = 11.1; Bdouble d = 5.3E12; Cfloat d = 3.14f ; Ddouble f=11.1E10f; 14下列的哪个赋值语句是正确的?D Achar a=12; Bint a=12.0; Cint a=12.0f; Di
5、nt a=(int)12.0; 15下面关于数组的定义错误的是( B )A) int a=1,2,3,4,5,6; B) int a6=1,2,3,4,5,6 C) int a; D)int a=new int6;( 以下为多项选择)16下面哪些代码可以正确编译 ( AC )(A)double d = 1.0; int i = 1; if(d = i) System.out.println(“Hello world”); (B)int i = 1; int j = 2; if(i = 1 & j = 2) System.out.println(“Hello world”); (C)boolea
6、n b1 = true, b2 = false; if(b1 = b2) System.out.println(“Hello world”); (D)int i = 0; if(i) System.out.println(“Hello world”); 17.下面的哪些声明是合法的?AC (A)int a; (B)int a5; (C)int a; (D)int a = 5; 18. 下面哪些类型是Java的基本数据类型 ABD(A)int (B)boolean (C)String (D)double 二、填空题 1.JVM是( Java虚拟机 ),JDK是( Java开发工具包 ),appl
7、etviewer是(小应用程序阅览器) 。 2. Java源程序经编译生成的字节码文件的扩展名为( class )3. Java语言的主要贡献者是( James Gosling (詹姆斯戈士林) )。4在JDK中,Java语言的编译命令是_Javac.exe_,Java语言的执行命令是java .exe_。5写出以下表达式的结果:1) 5 % 6 / 3 =( 1 ) 2) true & false =( false ) 3) 5 3 =( 0 ) 4) 12 -4 =( -16 ) 6.设有数组定义:int a = 11 , 22 , 33 , 44 , 55 , 66 , 77 , 88
8、, 99 ; 则执行下列几个语句后的输出结果是33 66 99 。 for ( int i = 0 ; i a.length ; i + ) if( ai%3=0 )System.out.print(ai+ );三、简答题1.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,String 都不能用于swtich中的表达式(JDK 7以后可以作用于String)。2.一个.java源文
9、件中是否可以包括多个类?有什么限制?可以。必须只有一个类名与文件名相同3 简述Java语言实现平台无关(跨平台)性的原理。J Java程序经过编译,会生成字节码文件,而字节码可以在任何安装了Java虚拟机的平台上运行,Java虚拟机类似一个模拟执行环境,在不同的操作系统上拥有不同的Java虚拟机实现,但是这些Java虚拟机遵循统一的规范来解释class文件,并将class文件中的指令转换为本地操作系统对应的指令,这样就实现了相同的class文件可以通过Java虚拟机转换为对应操作系统上的对应指令,实现class文件,即Java程序的跨平台性。4 说明Java语言中三种注释的语法格式,以及用途。
10、Java语言中注释的语法有三种:单行注释、多行注释和文档注释。1) 单行注释, 单行注释指只能书写一行的注释。用于对于代码进行简单的说明, 单行注释的语法格式为: /注释内容 2) 多行注释: 多行注释指可以书写任意多行的注释。多行注释一般用于说明比较复杂的内容,例如程序逻辑或算法实现原理等。多行注释的语法格式为: /* 注释内容 */ 3)文档注释:文档注释指可以被提取出来形成程序文档的注释格式,这是Java语言有特色的注释格式。一般对于程序程序的结构进行说明,例如类、属性、方法和构造方法进行说明,文档注释的语法格式为: /* 注释内容 */5请把以下英文翻译成中文:When you com
11、pile a program written in the Java programming language, the compiler converts the human-readable source file into platform-independent code that a Java Virtual Machine can understand. This platform-independent code is called Bytecode. 窗体顶端当你在编译Java编程语言编写的程序,编译器转换成平台无关的代码,Java虚拟机能够理解人类可读的源文件。这个平台无关的
12、代码被称为字节码。 第二章注意问题: main函数是Java应用程序执行的入口。(int)23.7结果为23(int)-45.89f结果为-45+”除字符串相加功能外,还能把非字符串转换成字符串 ,如: “x”+123;的结果是“x123” 。 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了1, 三元运算符 class TernaryOp public static void main(String args) int salary,daysPresent = 30; salary = daysPresent = 20 ? 2000 : 3000; Sys
13、tem.out.println(您本月薪资为 $+salary); ,编写一个程序,这个程序从键盘上输入2个数,然后求这2个数的和,程序结束。提示:调用System.in.read();可以读取到一个从键盘上输入字符对应的整数。通过这个程序,你一定能体会到在什么 import java.io.*;public class Ch1 public static void main(String args) throws IOExceptionBufferedReader ke=new BufferedReader(new InputStreamReader(System.in);String x;
14、int p,q,m;System.out.print(请输入第一个数);x=ke.readLine();p=Integer.parseInt(x);System.out.print(请输入第二个数);x=ke.readLine();q=Integer.parseInt(x);m=p+q;System.out.println(两个数的和为:+m); ,数组public class Lo public static void main(String args) int aa=32,55,69;for(int i=0;iy) System.out.println(xy); else System.o
15、ut.println(x= 90) grade = A; else if (testscore = 80) grade = B; else if (testscore = 70) grade = C; else if (testscore = 60) grade = D; else grade = F; System.out.println(Grade = + grade); ,输入06之间的某一个整数,然后把它转换成星期 输出。(0对应星期日)import java.io.*;public class ex3_3 public static void main(String args)thr
16、ows IOException int day; BufferedReader in =new BufferedReader( new InputStreamReader(System.in); day=(new Integer(in.readLine().intValue();switch (day) case 0: System.out.println(Sunday); break; case 1: System.out.println(Monday); break;case 2: System.out.println(Tuesday); break; case 3: System.out
17、.println(Wednesday); break; case 4: System.out.println(Thursday); break; case 5: System.out.println(Friday); break; case 6: System.out.println(Saturday); break; default: System.out.println(Day out of range Sunday .Saturday ); break; ,打印九九乘数表public class MultiTable public static void main(String args
18、) for (int i=1; i=9;i+) for (int j=1; j=i;j+) System.out.print( +i+*+j+=+i*j); System.out.println(); ,输入一个整数,输出它所有的因数import java.io.*;public class ex3_7 public static void main(String args) throws IOException int n,k; BufferedReader in =new BufferedReader( new InputStreamReader(System.in); System.ou
19、t.println(Enter a positive integer: ); n=(new Integer(in.readLine().intValue(); System.out.print(Number +n+ Factors ); for (k=1; k = n; k+) if (n % k = 0) System.out.print(k + ); System.out.println(); ,计算数列1,2,10 的和。public class ex3_4 public static void main(String args) int i=1, sum=0; while(i=10)
20、sum+=i; i+; System.out.println(sum=+sum); ,计算存款收益:假设银行中存款10000元,按11.25%的利率,一年后连本带利将变为11125元。你若将此款继续存入银行,试问多长时间就会连本带利翻一番import java.text.*;public class Examp3_4 public static void main(String args) double original,money,interest; int years = 0; original = money= 10000; interest = 11.25 / 100; System.
21、out.println(year money);while (money 2 * original) years = years + 1; money = money + (interest * money); System.out.println( + years + + new DecimalFormat(0.00).format(money); System.out.println(); System.out.println( 第 + years + 年存款额达到 + new DecimalFormat(0.00).format(money) + 元。); 编写一个程序用选择法对数组a=
22、20,10,50,40,30,70,60,80,90,100进行由大到小的排序。import java.io.*;public class SelectSortpublic static void main(String args)int a=20,10,50,40,30,70,60,80,90,100;int temp;for (int i=0; ia.length-1;i+)for (int j=i+1; ja.length ; j+)if (aiaj) temp=ai;ai=aj;aj=temp;for (int k=0;ka.length ;k+)System.out.println(
23、a+k+:+ak);第,章一、1. 利用接口继承完成对生物、动物、人三个接口的定义。其中生物接口定义呼吸抽象方法;2. 动物接口除具备生物接口特征之外,还定义了吃饭和睡觉两个抽象方法;3. 人接口除具备动物接口特征外,还定义了思维和学习两个抽象方法。4. 定义一个学生类实现上述人接口。(25分)1 interface Biologyvoid breath();interface Animal extends Biologyvoid eat();void sleep();interface Human extends Animal void think();void study();class
24、Student implements Humanvoid breath()System.out.println(“breathing”);void eat()System.out.println(“eating”);void sleep()System.out.println(“sleeping”);void think()System.out.println(“thinking”);void study()System.out.println(“study”);二、1、 定义一个接口CanFly,描述会飞的方法public void fly();2、 分别定义类飞机和鸟,实现CanFly接口
25、。3、定义一个测试类,测试飞机和鸟。测试类中定义一个makeFly()方法,让会飞的事物飞起来。4、然后在main方法中创建飞机对象和鸟对象,并在main方法中调用makeFly()方法,让飞机和鸟起飞。interface CanFlypublic void fly();class AirPlane implements CanFlypublic void fly()System.out.println(“airplane is flying”);class Bird implements CanFlypublic void fly()System.out.println(“Bird is f
26、lying”);class Teststatic makeFly(CanFly obj)obj.fly();public static void main(String args)AirPlane ap = new AirPlane();Bird b = new Bird();makeFly(ap);makFly(b);三、实现一个名为Person的类和它的子类Employee, Manager是Employee的子类,设计一个接口Add用于涨工资,普通员工一次能涨10,经理能涨20。具体要求如下:(1)Person类中的属性有:姓名name(String类型),地址address(Strin
27、g类型),定义该类的构造方法;(2)Employee类中的属性有:工号ID(String型),工资wage(double类型),工龄(int型),定义该类的构造方法;(3)Manager类中的属性有:级别level(String类型)定义该类的构造方法;(4)编写一个测试类,产生一个员工和一个经理给该员工和经理涨工资,并输出其具有的信息。实现代码:class Person /Person类private String name; /姓名private String address; /地址public Person(String n,String a) /定义该类的构造方法this.setNa
28、me(n);this.setAddress(a);public void setName(String n)this.name = n;public void setAddress(String a)this.address = a;public String getName()return this.name;public String getAddress()return this.address;class Empolyee extends Person /Employee是Person的子类private int employeeNo; /工号private double pay; /
29、工资private int age; /工龄public Empolyee(String name,String address,int empolyeeNO,double pay,int age) /定义该类的构造方法super(name,address); /引用父类的构造方法this.setEmployeeNo(empolyeeNO);this.setPay(pay);this.setAge(age);public void setEmployeeNo(int e)this.employeeNo = e;public void setPay(double p)this.pay = p;p
30、ublic void setAge(int a)this.age = a;public int getEmployeeNo()return this.employeeNo;public double getPay()return this.pay;public int getAge()return this.age;class Manager extends Empolyee /Manager是Employee的子类private int level; /级别public Manager(String name,String address,int empolyeeNO,double pay,
31、int age,int level) /定义该类的构造方法super(name,address,empolyeeNO,pay,age); /引用父类的构造方法this.setLevel(level);public void setLevel(int l)this.level = l;public int getLevel()return this.level;public void printInfo() /输出员工信息System.out.println(姓名:+this.getName()+,工号:+this.getEmployeeNo()+,工龄:+this.getAge()+,级别:+
32、this.getLevel()+,地址:+this.getAddress();System.out.println(原工资:+this.getPay();System.out.println(涨工资后的工资:+new Add().addPay(this.getLevel(), this.getPay();class Add /设计一个Add类用于涨工资public double addPay(int level,double pay)if(level=0) /0表示普通员工pay = (1+0.1)*pay;else if(level=1) /1则表示经理pay = (1+0.2)*pay;e
33、lse /操作无效System.out.println(级别只能为0或1,0表示普通员工,1则表示经理,操作无效!);return pay;public class ExtendsDemo public static void main(String args) Manager m1 = new Manager(张三,南京路,0001,2000,10,0);Manager m2 = new Manager(李四,长江路,0002,3000,15,1);m1.printInfo();System.out.println(*);m2.printInfo();四、1、用面向对象的思想定义一个接口Ar
34、ea,其中包含一个计算面积的方法CalsulateArea()2、然后设计MyCircle和MyRectangle两个类都实现这个接口中的方法CalsulateArea()(3、分别写出两个类中的构造方法并计算圆和矩形的面积 4、在Circle类中增加方法改变圆的半径,在Circle类中增加fitsInside方法判断一个圆是否在一个矩形内,、最后写出测试以上类和方法的程序。五、编写一个完整的Java程序复数类Complex,使两个复数,如 1+2i 和3+4i 相加产生一个新的复数 4+6i 。复数类Complex必须满足如下要求:(1)、复数类Complex 的属性有: realPart
35、: int型,代表复数的实数部分imaginPart : int型,代表复数的虚数部分定义该类的构造方法(2)、复数类Complex 的方法有:构造方法一,将复数的实部和虚部都置0 构造方法二,形参 r 为实部的初值,i为虚部的初值。(3)complexAdd方法: 将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。 (4)toString( ) 方法: 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中a和b分别为实部和虚部的数据。 答案:public class Complexprivate int realPart;private int imagePart;public Complex(int r,int i)this.realPart = r;this.imagePart = i;pu