Java 期末复习题.docx
- 文档编号:30155322
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:28
- 大小:27.12KB
Java 期末复习题.docx
《Java 期末复习题.docx》由会员分享,可在线阅读,更多相关《Java 期末复习题.docx(28页珍藏版)》请在冰豆网上搜索。
Java期末复习题
Java期末复习提要
1.章节重点分布程度
(1)重点章节:
3、4、5、6、7、8、9
(2)一般性章节:
主要考查其中的一些主要知识点:
1、2、17
2.一些相对重要的知识点
(1)3、4、5章的基本语法;
(2)方法重载、覆盖的方法及其区别联系;
(3)类、字符串、异常处理的相关操作;
(4)参数传递中的值、引用传递的方式及其区别;
(5)类的构造函数特点、类的继承,this、super;
(6)静态变量、方法,实例变量、方法等;
(7)一、二维数组的声明、定义、复制等;
(8)final、static、public、protected、缺省类型;
(9)break、continue。
(1)Public和static可以交换吗啊?
答:
不可以。
Public是一个访问标识符用以决定程序其他部分如何访问类程序成员,当public是该成员可以被声明为它的类以外的代码访问,相当于为private。
用以防止类以为的代码使用成员。
而static,允许main()在类的对象创建之前被调用,因为java既是要在任何对象创建之前调用main();
如果两者交换,就如同public被void修饰了,所有的人都可以访问了。
(2).一维数组的定义以及复制:
答:
声明:
Double[]Mylist=newdouble[10];
初始化:
Double[]Mylist={1.0,2.0…};
复制:
intarray1[]={2,3,5,1,9};
Intarrsy2[]=newint[array1.length];
For(inti=0;i {array2[i]=array1[1];} (3)super的用法 答: 我们已经知道,如果子类中定义的成员变量和父类中的成员变量同名时,则父类中的成员变量不能被继承,此时称子类的成员变量隐藏了父类的成员变量。 当子类中定义了一个方法,并且这个方法的名字,返回类型,用参数个数和类型和父类的某个方法完全相同时,父类的这个方法将被隐藏,既不能被子类继承下来。 如果我们在子类中想使用被子类隐藏的父类的成员变量或方法就可以使用关键字super。 (4)参数传递中的值、引用传递的方式及其区别; 答: 值传递: 方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。 引用传递: 也称为传地址。 方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。 (5)基本数据类型变量和引用类型变量的区别 答: 每个变量代表一个存储值得内存单元。 说明变量时,告诉编译器变量将存放什么类型的值,对基本数据类型变量来说,对应内存所存储的值是基本数据类型的。 对引用类型变量来说,它的指是一个引用,是对象的存储地址。 1.final关键词的用法; 答: 有时可能不希望类被扩展。 在这种情况下,用final修饰符说明一个类是终极的,不能做父类。 也可以把一个方法定义为终极的,终极方法不能被它的子类覆盖。 修饰符用在类和类的成员上,只有final修饰符还可以用在方法中的局部变量上,方法内的终极局部变量就是常量。 2.switch表达式的用法,特别是与break的结合使用。 答: swith(switch—expresstion){ Casevalue1: statement(s)1; Break; Casevalue2: statement(s)2; Break; … Casevaluen: statement(s)N; Break; Dafault: statement(s)—for—(default); } Switch—expresstion必须能计算出一个char、byte、short、int的型值,并且必须用括号括住他; Value,…valuen必须与switch—expresstion的指具有相同的数据类型; 当swith—expresstion的值与case语句的指相匹配是,将从改case语句开始执行,知道遇到一个break语句或者到达swith语句的末端。 3.描述语法错误、运行错误和逻辑错误。 答: 语法错误: 在编译过程中出现的错误语法错误或编译错误。 语法错误是由代码结构中的问题引起的。 可能是少了一个花括弧或者丢掉标点等等。 运行错误: 运行错误是引起程序非正常中断的错误。 运行应用程序时,当环境检测一个不可能执行执行的操作时就会出现运行错误。 输入错误是典型的运行错误。 逻辑错误: 逻辑错误是指程序没有按期望的要求执行。 这种错误的原因多种多样。 4.方法重载和方法覆盖的区别。 答: 重载方法就是提供多于一个方法,这些方法有相同的名字但签名不同,覆盖方法就是在子类中定义一个方法,该方法与父类使用相同的签名,并且返回值类型类型也相同。 重载与覆盖的区别 1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。 2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。 3、覆盖要求参数列表相同;重载要求参数列表不同。 4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。 5.编辑、运行Java源程序的基本过程。 答: 现在计算机上利用编辑器编写java源代码,然后将代码保存到磁盘上。 再利用编译器将源程序编译编译成类文件。 如果编译有错误,再修改源代码。 (java编译器将java源代码文件翻译成Java字节码文件)编译器就会生成一个可扩展为.class的字节码。 运行Java程序就是运行程序的字节码,可以在装有JV的任何平台上运行字节码。 如果正确就会显示结果,如果错误就返回再次修改源代码,知道运行成功为止。 这样就是编辑、运行Java源程序的基本过程。 6.构造方法和普通方法之间的区别。 答: 构造方法必须与所在的类具有相同的名字。 构造方法没有返回类型。 甚至连void也没有 构造方法的调用实在穿件一个对象时使用new操作符进行的,构造方法的作用是初始化对象。 7.使用包的好处是什么? 答: 包用于对类进行组织,使用包的四个理由: 查找定位类: 功能相似的类可以放在起同一个包中以便查找定位 避免命名冲突: 当开发的可重用类被其他程序员共享时,命名冲突时有发生。 例如,有相同名字的两个类,为了防止类似事件发生,可将类放在包中,通过包名来引用 便于发布软件: 包将相关的类组织到一起,这样可以很容易被发现 保护类: 包可以提供对类的保护,允许对同一个包中的类方位这些类中被保护的成员,而外部类则无权。 8.抽象类和接口的区别。 答: 抽象类与常规类一样具有数据和方法,但是不能用new操作符创建它的实例抽象方法只有方法签名而没有实现,它的实现由子类提供包含抽象方法的类必须声明为抽象类 接口是一种与类相似的结构,只包含常量和抽象方法,接口在许多方面与抽象类相似,但是抽象类除了包含常和抽象方法外,还可以包含变量和具体方法。 9.给方法传递数组时,就会创建一个新数组并传递给方法,这个说法正确吗? 答: 不对,当传递数组给方法的时候,参数值是数组的引用,给方法传递的是个引用,这个时候数组里面的参数已经被引用了,并不会创造一个新的数组,所有的参数都会指向同一个相同的数组。 10.二维数组的声明和初始化。 答: 声明二维数组变量: 数据类型[][]数组名; 例如: int[][]matrix; 二维数组的初始化; Int[][]array=newint[4][3]; 11.数据域封装的优点是什么? 答: 1.可是免受数据被篡改。 2.可以使类容易维护并且容易调试。 将某些数据域声明为私有数据,可以保证数据域的安全 为了避免直接修改属性,应该使用private修饰符声明私有域。 12.什么是访问器方法? 什么是修改器方法? 访问器方法和修改器方法的命名习惯是什么? 答: 通俗地称get方法为读取器或访问器,称set方法为设置器。 get方法的签名如下: public返回类型get属性名() 如果返回值为boolean型,习惯get方法的定义如下: Publicbooleanis属性名() Set方法的签名如下: Publicvoidset属性名(数据类型属性值。 ) 13.描述关键字this的作用,下列代码有什么错误? 答-有时需要在方法中应用类属性的隐藏变量。 例如,在设置属性的set方法中,精彩将属性名用作参数名。 在这种情况下,为了给属性设置心智,需要引用方法中隐藏的属性名。 隐藏的静态变量可以简单地通过类名。 静态变量的方式应用。 隐藏的实例变量需要使用关键字this来引用。 14.描述基本类型的包装类,为什么需要这些包装类。 答: Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(WrapperClass),有些地方也翻译为外覆类或数据类型类。 包装类型 : Byte,Integer,Short,Long,Boolean,Character,Float,Double等 15.什么是必检异常? 什么是免检异常? 答: 系统错误是由Java虚拟机执行并且在Error类中描述的。 异常是由Exception类描述的、 运行错误是由RuntimeException类描述编程错误 RuntimeException、Error以及它们的子类都成为免检异常 所有其他异常都成为必检异常。 意思就是编译器会强制程序员检查并处理。 16.关键字throw的作用是什么? throws的作用呢? 答: throw是一种控制程序流程的特殊方法而已。 没有相应的catch的话,可以中止当前的方法继续执行。 声明方法时候,如果不声明throws的话,那么一般的Exception都要在这个方法中终结,也就是说一定要有相应的catch处理,否则编译时会产生错误。 如果方法声明了throws的话,可以交给上一级方法去处理。 以此类推。 但是有些Exception可以不加捕捉,编译也会通过。 继承Exception类,可以自己定义Exception,对于特定的状态,用throw抛出专用的例外。 这对于特定的middleware开发,有一定帮助。 5.编程题目范围 (1)2.6 (2)3.8 (3)4.15,4.16,4.20 (4)5.2,5.10,5.16,5.22 (5)6.18,6.19,6.25,6.29 (6)7.12,7.13 (7)8.3,8.11,8.12,8.13 (1)2.6编写程序读入一个0到1000之间的一个整数,并将其各位数字加起来。 如,整数932,各位数字之和为14. importjavax.swing.JOptionPane; publicclassTest2_6{ publicstaticvoidmain(String[]args){ Stringinput=JOptionPane.showInputDialog("请输入0到1000之间的一个整数"); intnum=Integer.parseInt(input); inti=num%10; intj=num/10%10; intk=num/100; Stringoutput="各位数字之和为"+(i+j+k); JOptionPane.showMessageDialog(null,output); } } (2)3.8编写程序对三个整数排序。 整数由输入对话框读入,并分别存入变量num1、num2和num3,对它们进行排序,使得num1<=num2<=num3. importjavax.swing.*; publicclassTest3_8{ publicstaticvoidmain(String[]args){ Stringnum1String=JOptionPane.showInputDialog("请输入一个整数num1: "); intnum1=Integer.parseInt(num1String); Stringnum2String=JOptionPane.showInputDialog("请输入一个整数num2: "); intnum2=Integer.parseInt(num2String); Stringnum3String=JOptionPane.showInputDialog("请输入一个整数num3: "); intnum3=Integer.parseInt(num3String); intt; if(num1>=num2){ t=num1; num1=num2; num2=t; } if(num3<=num1){ t=num1; num1=num3; num3=t; } if(num2>=num3){ t=num2; num2=num3; num3=t; } if(num1<=num2&&num2<=num3){ JOptionPane.showMessageDialog(null,"num1<=num2<=num3\n"+num1+"<="+num2+"<="+num3); } } } (3)4.15以下是程序清单4-6求两个整数n1和n2的最大公约数的另一种解法: 首先求n1和n2的最小值d,然后一次检验d,d-1,d-2,。 。 。 ,2,1是否n1和n2的公约数。 这样,所求的第一个公约数就是n1和n2的最大公约数。 importjavax.swing.JOptionPane; publicclassTest4_15{ publicstaticvoidmain(String[]args){ Strings1=JOptionPane.showInputDialog("Enterfirstinteger"); intn1=Integer.parseInt(s1); Strings2=JOptionPane.showInputDialog("Entersecondinteger"); intn2=Integer.parseInt(s2); intd=n1>n2? n2: n1; intgcd=1; while(d>0){ if(n1%d==0&&n2%d==0){ gcd=d; break; } d--; } JOptionPane.showMessageDialog(null,"Thegreatestcommondivisorfor" +n1+"and"+n2+"is"+gcd); } } 4.16编写程序,读入一个整数,显示它的所有素数因子。 例如,若输整数为120,输出应为2,2,2,3,5。 importjavax.swing.JOptionPane; publicclassTest4_16{ publicstaticvoidmain(String[]args){ Strings=JOptionPane.showInputDialog("请输入一个整数"); intnum=Integer.parseInt(s); Stringoutput=num+"所有素数的因子是"; //while(num>1) for(inti=2;i<=num;){ if(num%i==0){ output+=i+""; num/=i; //break; } else i++; } /* inti=2; while(i<=num){ if(num%i==0){ output+=i+""; num/=i; } else i++; } */ JOptionPane.showMessageDialog(null,output); } } 4.20打印2到1000之间的所有素数,每行显示8个素数。 publicclassTest4_20{ publicstaticvoidmain(String[]args){ finalintPI=1000; intcount=0; intnum=2; while(num booleanisPrime=true; for(inti=2;i<=num/2;i++){ if(num%i==0){ isPrime=false; break; } } if(isPrime){ count++; if(count%8==0){ System.out.println(num); } else System.out.print(num+""); } num++; } } } (4)5.2,使用下述方法头编写方法,计算一个整数各位数字之和: PublicstaticintsumDigits(longn); 例如,sumDigits(234)返回2+3+4=9. importjavax.swing.JOptionPane; publicclassTest5_2{ publicstaticvoidmain(String[]args){ Stringinput=JOptionPane.showInputDialog("请输入一个整数"); longn=Long.parseLong(input); System.out.println(""+sumDigits(n)); } publicstaticintsumDigits(longn){ intsum=0; longtemp=n; while(n>1){ if(n/10<1){ sum+=n; n/=10; }else{ temp%=10; sum+=temp; n/=10; temp=n; } } returnsum; } } 5.10编写一个方法,求两个给定正整数的最大公约数: Publicstaticintgcd(intm,intn) 编写一个测试程序,计算gcd(24,16)和gcd(255,25)。 importjavax.swing.JOptionPane; publicclassExercise5_10{ publicstaticvoidmain(String[]args){ intnum1=Integer.parseInt(JOptionPane.showInputDialog(null,"输入第一个数: ")); intnum2=Integer.parseInt(JOptionPane.showInputDialog(null,"输入第二个数: ")); System.out.println(num1+"和"+num2+"的最大公约数是: "+gcd(num1,num2)); } publicstaticintgcd(intnum1,intnum2){ intgcd=1; for(intk=2;k<=num1&&k<=num2;k++) if(num1%k==0&&num2%k==0) gcd=k; returngcd; } } 5.16,使用下述方法头,判断整数是否素数: PublicstaticbooleanisPrime(intnum) 一个大于1的整数称为素数,如果它的因子只有1和它本身。 publicclassExercise5_16{ publicstaticvoidmain(String[]args){ finalintNUMBER_OF_PRIMES=1000; finalintNMBER_OF_PRIMES_PER_LINE=10; intcount=1; intnumber=2; System.out.println("Thefirstprimenumbernumbersare\n"); while(count<=NUMBER_OF_PRIMES){ if(isPrime(number)){ if(number<10) System.out.print(""); elseif(number<100) System.out.print(""); elseif(number<1000) System.out.print(""); if(count%NMBER_OF_PRIMES_PER_LINE==0){ System.out.println(number); }else{ System.out.print(number+""); } count++; } number++; } } publicstaticbooleanisPrime(intnumber){ booleanisPrime=true; for(intdivisor=2;divisor<=number/2;divisor++){ if(number%divisor==0){ isPrime=false;break; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 期末复习题 期末 复习题