Java基础知识考点Java开卷考试.docx
- 文档编号:24931907
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:18
- 大小:23.03KB
Java基础知识考点Java开卷考试.docx
《Java基础知识考点Java开卷考试.docx》由会员分享,可在线阅读,更多相关《Java基础知识考点Java开卷考试.docx(18页珍藏版)》请在冰豆网上搜索。
Java基础知识考点Java开卷考试
开卷考试,共2个小时,要求卷面整洁,书写清晰。
一判断题10分,每题1分
在编程时编写过多的注释,会使编译之后生成的程序文件变大。
(错)
放心,编译器会删除所有的注释。
所以,哪怕你在程序中写了一部长篇小说,也不会拖慢程序的运行速度。
一个Java源文件中只能定义一个公有类,并且类名必须与文件名一致。
(对)
. 通过在程序中引入“importjavax.swing.*;”语句,就可以使用javax.swing包中的所有类(包括其嵌套的子包中的类)。
(错)
要使用嵌套子包中的类,必须再次添加import子句
J2SE的功能是J2ME的一个子集。
(错)
Java规定所有的方法都必须放到某个类中,不存在独立于类的方法。
(对)
java中所有类是java.lang.Object类的子类(对)
Swing是一套GUI组件,采用了新的思路设计Java应用程序的界面,它完全地替换掉了原有的AWT。
(错)
Swing仍然使用AWT的事件模型,并非完全抛弃。
值得注意的NetBeans6.9.1完成最新的更新组件后,创建Java桌面应用程序时,有了一个新的提示消息框:
二简答题40分,每题5分,共8个小题。
现代编程语言有两种主要的类型:
一种是“编译型”的,比如C,程序源码必须经过编译才能运行;另一种是“解释型”的,这种类型的语言(比如早期的Basic)通常都拥有一个交互环境,用户输入一句代码计算机就执行一句代码。
Java属于上述哪种类型?
如果你认为Java不属于上述任何一种类型,那么它是不是一种新的编程语言类型?
Java源程序需要编译,但运行时需要即时“解释”为本地CPU能执行的机器指令,所以它不属于“纯”的编译型或解释型,而是一种混合类型。
Java中有两个关键字:
void和null,它们有什么区别?
void是无类型,null是空值,一个是对返回类型来说,一个对值来说的。
Void表示这个方法执行结束后不返回任何值。
void :
Public void sort();表示方法没有返回值
Null 表示一个对象为null,就是没有分配内存,没有初始化。
3. 简述“类(Class)”、“类库(ClassLibrary)”、“包(Package)”、“ Jar 文件”这四个概念间的联系。
类库其实是一个“统称”,它是类的集合。
包则是类库的组织形式,它类似于C++中的namespace,可以解决类的同名问题。
Jar则是一个采用Zip格式压缩的文件包 ,主要是为了方便Java组件的复用,简化Java应用程序的部署和发布。
Jar包中可以保存任意类型的多个文件和多级嵌套的文件夹。
比如JDK就包容了不少Jar压缩包,你可以使用解压缩工具(比如WinRAR)去查看它的内容。
可以把Jar文件看成是Java类库的一个物理“载体”,之所以称其为“物理”的,是因为我们可以在计算机中直接“看见”并“操作”它。
在一个很大的循环(比如循环100000次)中,如果需要进行大量字符串的连接操作,通常人们会使用StringBuffer(或StringBuilder)而不是String类型,请解释这么做的理由。
StringBuffer可存放允许修改的字符串,String对一串字符进行操作,不可变类。
StringBuffer内部结构是数组,字符可以动态改变,String是final类型,不可改变。
因为String的对象是不能修改的,进行加操作,会产生新的对象,在很大的循环中这样做会浪费内存空间。
而StringBuffer是对同一个内存对象,进行修改,节省内存,增加效率。
现有两个长度不同的数组:
int[]arr1=newint[10];
int[]arr2=newint[100];
那么以下语句能通过编译吗?
arr1=arr2;
如果你认为可以通过编译,得到这个结论的依据是什么?
如果不能通过编译,你认为其原因是什么?
可以。
因为哪怕是基本类型的数组,数组本身也是引用的,用=号时,只是将一个数组的地址,指向另一个,并不是进行复制。
请看以下代码:
doubled1=100.1;
doubled2=1001/10;
System.out.println(d1==d2);//输出:
false
明明d1与d2是相等的,为什么程序运行时会输出一个让人意外的结果:
false?
Doubled2=1001/101001和10都是int型它们相除得出一个int型100
前面用double类型所以是100.0所以的d1和d2不相等。
请看以下示例代码:
Strings1="Hello";
Strings2="Hello";
System.out.println(s1==s2);//输出:
true
Strings3=newString("Hello");
Strings4=newString("Hello");
System.out.println(s3==s4);//输出:
false
请解释一下为什么上述代码中“System.out…”两句代码输出完全不同的结果?
请看代码
Strings="北京";
s=s+"奥运会";
请问上面代码产生几个String对象
3个
请看代码
shorts=1;
shortt=s+1;
以上代码是否可以编译,如果不能,请说明原因
不能,1是int型s为short型都转换为int型shortt=(short)(s+1)
谈谈你对interface的理解和应用。
接口(interface)是抽象类的变体。
在接口中,所有方法都是抽象的。
多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个有程序体。
接口只可以定义staticfinal成员变量。
接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。
由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。
引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
三简单编程题30分,每题5分,共6个小题。
以所有学习过程中练习过的作业为原型,注意适当的变化和新要求。
试凑法、迭代法、最大最小值、打印图形、求素数、排序等。
1.编写一个程序,用户输入任何一个字符串之后,反转输出其结果。
其运行结果如下所示:
请输入一个字串:
我在学习Java程序设计,您输入了:
计设序程avaJ习学在我
packagefei;
publicclassfanchuan{
publicstaticvoidmain(String[]args){
Strings="计设序程avaJ习学在我";
chararray[]=s.toCharArray();
for(inti=array.length-1;i>=0;i--){
System.out.println(s.charAt(i));
}}}
packagefei;
importjava.util.Scanner;
publicclassFanchuan2{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);//System.out
Stringword=sc.nextLine();
System.out.println(word);
StringBuffersbb=newStringBuffer(word);
System.out.println(sbb.reverse().toString());//自定
chara[]=word.toCharArray();
for(inti=a.length-1;i>=0;i--){
System.out.println(a[i]);
}//把a里的东西反序赋给b
char[]b=newchar[a.length];
for(intj=0,i=a.length-1;j System.out.println("j="+j+",i="+i); b[j]=a[i];} Stringend=newString(b); System.out.println(end);}} 2.请编写一个方法,其声明如下: publicstaticint[]getRandomizeNumbers(intbegin,intend,intcount) 此方法将生成一个数组,包容count个[begin,end)范围内的随机整数. packagefei; publicclassZuoye2{ publicstaticint[]getRandomizeNumbers(intbegin,intend,intcount){ int[]a=null; a=newint[count]; for(inti=0;i a[i]=begin+(int)(Math.random()*(end-begin)); } returna; } publicstaticvoidmain(String[]args){ }} (2)编写一个方法,它接收一个int数组作为参数,外界只需调用一次这个方法,可以马上得到这个数组的最大值、最小值和平均值信息。 classArrayInfo { publicintmax=0; publicintmin=0; publicdoubleaverage=0; } 定义好了ArrayInfo类后,此方法就很容易编写了: publicstaticArrayInfogetArrayInfo(int[]arr){ ArrayInfoobj=newArrayInfo(); intsum=0; obj.max=obj.min=arr[0]; for(intvalue: arr){ if(value>obj.max){ obj.max=value; } if(value obj.min=value; } sum+=value; } obj.average=(double)sum/arr.length; returnobj; } (4)数学中,一个复数包容着一个实部(Real)和一个虚部(Imaginary)。 请设计一个Complex类,它的实例代表一个复数,并且用户可以这样使用它: //创建一个实部为3,虚部为4的复数 Complexobj=newComplex(3,4); //Complex对象具备按照数学中复数的习惯表示形式输出的能力。 System.out.println(obj);//输出: 3+4i 送分题,覆盖一下toString()方法就行了。 classComplex{ publicdoublereal; publicdoubleimaginary; publicComplex(doublerealValue,doubleimaginaryValue){ real=realValue; imaginary=imaginaryValue; } publicStringtoString(){ returnreal+"+"+imaginary+"i"; } } 四综合编程题20分 类,方法,继承等。 一个图书管理系统的面向对象设计方案: Book代表书,有“Name(书名)”、“Author(作者名)”、“Price(单价)”和“IsBorrowed(是否被借出)”四个属性。 类Library代表图书馆,其内部字段books用于保存图书馆中所有的书。 它的FindBook()方法依据书名查找同名的书(可能有多本)。 另一个GetAllBooks()方法获取馆藏所有书的详细信息。 类Reader代表读者,Name字段代表其姓名,读者可以“ReturnBook(还书)”和“BorrowBook(借书)”。 请编程完成以下工作: 1. 用Java编程实现上述3个类。 (15分) 2. 在main()方法内书写以下测试代码: (5分) (1) 创建一个Library类的实例myLittleLibrary,其中预存有以下3本书: Java程序设计,张三著,45元 Java核心技术,李四著,50元 Java程序设计,王五著,38元 (2) 显示图书馆中所有图书的信息,输出样例如下: Java程序设计,张三著,45元,可借 Java核心技术,李四著,50元,可借 Java程序设计,王五著,38元,未还 (3) 创建一个Reader类的实例oneBeautifulGirl,她先在myLittleLibrary中查找《Java程序设计》 (4) oneBeautifulGirl借了张三著的那一本书。 现在显示图书馆中所有图书的信息. (5) oneBeautifulGirl把书还了,再次显示图书馆中图书信息。 package图书管理系统; importjava.util.Scanner; publicclassTestBook{//测试类,检测程序实例化 publicstaticvoidmain(String[]agrs){ Libraryall[]=newLibrary[3];//总共有三本书 Libraryleft[]=newLibrary[1];//每次借阅一本 all[0]=newLibrary("Java程序设计","张三著",45.0,"No.1"); all[1]=newLibrary("Java核心技术","李四著",50.0,"NO.2"); all[2]=newLibrary("Java程序设计","王五著",38.0,"No.3"); //书的信息(书名,作者,价格,书号) Readerr=newReader("oneBeautifulGirl",11101010,"计科",1); //借书人的信息(姓名,学号,专业,班级) r.FindBook(all);//找书 r.GetAllBook(left);//自己拥有的书 r.BorrowBook(all,left);//借书 r.ReturnBook(all,left);//还书 } } classLibrary{//图书馆类 StringName;//书的属性(书名,作者,价格,书号) StringAuthor; StringNumber; doublePrice; publicintnum; publicLibrary(Stringname,Stringauthor,doubleprice,Stringnumber){ Name=name; Author=author; Price=price; Number=number; } publicvoidshowBookInfo(){ System.out.println("**************************"); System.out.println("书名: "+Name); System.out.println("作者: "+Author); System.out.println("价格: "+Price); System.out.println("书号: "+Number); System.out.println("**************************"); }} classReader{//借书者类 Scannerscan=newScanner(System.in); Stringnames;//借书人的信息属性 intnumber;//姓名,学号,专业,班级 Stringgrade; intclasses; intscore=0; Reader(Stringn,intnum,Stringg,intc){ this.names=n; this.number=num; this.grade=g; this.classes=c; } voidFindBook(Library[]all){//查书 for(inti=0;i<3;i++) all[i].showBookInfo(); } voidGetAllBook(Library[]left){ for(inti=0;i<1;i++){//借阅哪本书 if(left[i]! =null) left[i].showBookInfo(); } } voidBorrowBook(Library[]all,Library[]left){//借书 System.out.println("请输入您要查找的书名: "); Stringk=scan.next(); inti; for(i=0;i<10;i++){ if(k.equals(all[i].num)){ all[i].showBookInfo(); break; } } System.out.println("你要借吗? 请输入1,表示借。 "); intj; j=scan.nextInt(); if(j==1){ System.out.println("借阅成功"); left[score]=all[i]; score+=1; } if(score<2){ System.out.println("您还可以借阅"+(1-score)+"本"); }else{ System.out.println("对不起,一个人只能借1本");}} voidReturnBook(Library[]all,Library[]left){//还书 System.out.println("请输入您要还的书的书号"); intn=scan.nextInt(); for(inti=0;i<3;i++){ if(n==all[i].num){ for(intj=0;j<1;j++){ if(left[j]==all[i]){ left[j]=null; System.out.println("还书成功"); }}}}}} package练习; importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassCalButtons{ @SuppressWarnings("serial") classCalButtonPaneextendsJPanelimplementsActionListener{ String[]keys={"7","8","9","/","4","5","6", "*","1","2","3","-","0",".","=","+"}; JButton[]keyb=newJButton[keys.length]; JTextFieldt; JButtonclear; doublesum=0,num; inti=0; intj=0,l,action; Stringshow=""; CalButtonPane(JTextFieldt){ super(newGridLayout(6,6,8,8)); this.t=t; for(inti=0;i keyb[i]=newJButton(keys[i]); keyb[i].addActionListener(this); this.add(keyb[i]); } clear=newJButton("Clear"); clear.addActionListener(this); keyb[0].addActionListener(this); } classCalculatorextendsJFrame{ JPanelp; JTextFieldt; CalButtonPanecp; publicCalculator(){ super("Java计算器"); setDefaultCloseOperation(EXIT_ON_CLOSE); calInit(); Containercc=getContentPane(); cc.setLayout(newBorderLayout()); cc.add(t,"North"); cc.add(cp,"Center"); cc.add(cp.clear,"South"); this.setLocation(300,200); this.pack(); this.setResiza
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础知识 考点 开卷 考试