


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一)题型与分值1、填空题(10小题, 10 分)2、单项选择题(10小题, 20分)3、判断题(10小题, 10 分)4、问答与分析题(6小题, 20 分)5、程序填空题(5小题, 30分)6、设计题(1小题, 10分)(二)知识点、Java基本语法1、编译java源文件使用javac命令,执彳亍java字节码文件使用java命令。2、整数相除的结果为整数。【例 1】已知某专业有 x 名男生,每间宿舍住 y 个人,使用 java 表达式_(x+y-l )/y 可以用于计算宿舍总数。【例21假设变量a、b、c为大于1的整数,则代数式丄对应的java表达式为 abc1.0/(a*b*C) 3、将一
2、个整数左移n位,相当于将这个数乘以2的n次方。【例3】已知类Test的构造方法如下,则执行 new Test (100)语句,变量capacity的值 为多少?128Test(int initialCapacity) int capacity = 1; while (capacity < initialCapacity) capacity ?= 1;4、当 length 为 2 的 n 次方时 ,h%length 等价于 h& (length-l )o5、 假设有两个整型数x和y,则表达式(x A y)A y值还原为x。6、基本数据类型的转换:隐式转换、强制转换、数据类型的自动提
3、升例 4】设有如下变量说明:byte myByte;int mylnt;long my Long;char myChar;以下赋值语句哪个需要强制转换。B. mylnt = my Long;D. mylnt = myChar;(B )B. 输岀 23,5,5 和23.A. mylnt = myByte;C. my Byte = 3;【例 5】以下代码的输出结果为:int a = 3;System.out.println (” +”2 + a);System.out.println (2 + 3);System.out.println (2 + 3 +System.out.println (2
4、+” + 3);A? 第 2 行出现编译错误C.输岀 5,5,5 和 23.7、for 语句、 switch.case 语句、 if 语句的工作原理。例 6】设有如下代码段,当变量 x的取值为_2或者3能使程序输岀Two”。switch (x)case kSystem.out.pri ntlnC'On e'AAreak;case 2:case 3:System.out.println("Two");break;default: System.out.println("end");8 、 包与访问限定词。【例 7】在同一目录编译和运行以下两
5、文件结果如何?( a )文件 Pl.javapackage MyPackagel;public class Plprotected void afancymethod()System.out.println( ,'method,');文件 P2.javapackage MyPackage2;import My Package 1.*;class P2 extends Pl public static void main(String argv)new Pl().afancymethod(); 此处代码出错 (看书上的那个访问权限 ) A. P1 通过编译,但 P2 出现编译错误
6、B. 两个文件均未通过编译C. 两个文件均通过编译,但 P2 文件运行时出错D. 两个文件均通过编译, P2 运行时输出 method9 、 方法的重载。个类中允许出现多个同名的方法,只要参数个数或参数类型不同,编译器就认为 这是两个不同的方法。【例8】以下哪条语句插入here处将岀现编译错误(b )public class Testpublic float aMethod(float a,float b) return 1; /hereA. public float aMethod(float a, float b,float c) return 1;B. public float aMet
7、hod(float c,float d)return 1; C. public int aMethod(int a, int b) return 1; D. private float aMethod(int a,int b,int c) return 1; 10、方法与参数传递。【例 9】请分析下面程序的输岀结果。class Invoke void change(int x) x = 3; public static void main(String args) int x = 5;Invoke el = new Invoke(); el.change(x);System.out.print
8、ln(x);【例 10】请分析下面程序的输出结果。3 class Invoke int x; void change(Invoke obj) obj.x = 3;public static void main(String args) Invoke el = new Invoke();el.x=5;el.change(el); System.out.println(el .x);二、面向对象知识1 、在 java 中使用构造方法初始化一个对象。(1) 构造方法必须与类同名,且不能有任何的返回类型。(2)在构造方法中,this()或者super()语句必须位于第一行。【例 1】请分析下面代码编译
9、是否会出错。出错class Test int a = 0;void Test() 此处是普通函数,不是构造函数public Test(int a) this.a = a;public static void main(String args) Test t = new Test(); 此行代码出错 Test tl = new Test(3);【例 2】设有类定义如下,以下哪条语句可以安排在/Here 处?class Base public Base(int i) 显示定义构造函数,则系统不生成默认的无参的构造函数class Sub extends BaseSub(int i)Sub(Strin
10、g s, int i)this(i);/super 或者 this 在构造函数中只能出现一个,并且只能出现在第一行 /Here A. super(); B. Base b = new Base();C. Base b = new Base(10); D. this();2 、 super 关键字的作用:(1)通过 super 关键字可以父类的成员;(2)通过 super( 参数列表 ) 调用父类的构造方法。3 、 方法重写方法重写应该满足以下要求:子类方法与父类方法有相同的返回类型、方法名称、参数 列 表;子类方法的访问级别不能低于父类中该方法的访问级别;子类方法抛出的异常范围不 能大 于父类
11、方法抛出的异常的范围。【例3】以下哪条语句插入here处,不能实现子类 B对父类A中func()方法的重写()子类在对父类的方法进行重写时,不能抛出新的异常,但RuntimeException 中的子类除 外。RuntimeException 是 Exception 的子类。该类型的异常包括除数为零、下标过界、空指针异常等错误。由于这类异常事件很普遍,所以程序可以不必捕获(但建议捕获 ) 这些 异常,而是由 Java 运行系统来处理。import java.io.*;class A void func() throws IOException class B extends A /hereA.
12、 public void func() throws ArithmeticException B. void func() throws IOException,NullPointerException,ArithmeticException C. public void func() throws Exception 抛出的异常大于父类中的异常D. void func() throws FileNotFoundException 4、父类的引用可以指向子类对象。但是,通过父类的引用不能访问子类对象新增加的成【例4】设有如下代码,以下哪个选项的代码可以安排在hew处(b )o class Ba
13、se Widget void speak()System.out.pri ntln( ''hello ");class TypeAWidget exte nds Base Widget public static void main( Stri ng args) /here;A. Object a = new BaseWidget();a.speak();B. Base Widget b = new TypeAWidget(); b.speakQ;C. TypeAWidget c = new BaseWidget();C.speaD. Object a = new T
14、ypeAWidget。;tk.Qpea5、动态绑定6、接口中的方法默认由public、k();abstract关键字修饰,变量由publicstatic> final关键字修 饰。即接口中包含静态常量和抽象方法。【例5】在下面代码中,语句 int a = 1;等价于public static final int a = 1;public in terface Fooint a = 1;7、异常。【例6】设有如下代码,当传入的参数为2和0的时候,输岀的结果为多少?public static void divide(i nt a, int b) int c = a/b; /抛岀异常 catc
15、h (Excepti on e) System.out.pri nt("Exception ");此处捕获到异常,并输岀 Exception return; fin ally System.out.pri ntl nC'Fi nally");/ 最后执行此行代码 ,打印 Fin ally输出结果:Excepti onFi nally【例7】设有如下代码,以下哪些行会发生空指针异常:1 Stri ng s = n ull;2 if ( s = n ull & s.le ngth() > 0)3 System.out.pri ntln("
16、;s != null & s.le ngth() > 0 H);4 if ( s = null && s.le ngth() > 0)5 System.out.println( ns != null && s.length() > 0");6 if ( s = n ull lls.le ngth() > 0)7 System.out.println("s = null II s.length() > 0");8 if ( s = n ull I s.le ngth() > 0)9 Syst
17、em.out.println("s = null I s.length() > 0");8、单例设计模式:饿汉式和懒汉式。1,饿汉式单例类public class Singleton private Singleton()/在自己内部定义自己一个实例,是不是很奇怪?/注意这是private只供内部调用private static Singleton instanee = new Singleton();/这里提供了一个供外部访问本class的静态方法,可以直接访问public static Sin glet on get In sta nce() return in
18、st a n ee;2, 懒汉式单例类public class Sin glet on private static Sin glet on in st a nee = n ull;public static syn chr oni zed Sin glet on get In sta nce() /这个方法比上面有所改进,不用每次都进行生成对象,只是第一次/使用时生成实例,提高了效率!if (in sta nce= = n ull)in sta nce new Sin glet on();retur n in sta nee;三、字符串处理1、String字符串。【例 1 】已知代码 Str
19、ing sl= "al ; "String s2 = si; s2="a2",则 System.out.println(s 1)的结 果 为 a 1o2、 String类和StringBuffer的比较。(详见课件中的相关说明)【例2 判断题:Stri ng字符串的连接效率通常低于Str in gBuffer正确 【例3】以下代码的输岀结果为()StringBuffer sbl = new StringBuffer("hello");Str in gBuffer sb2 = new Stri ngBuffer(nworld"
20、);Str in gBuffer sb3 = sbl;System, out.pri ntl n(sb 1 = sb3);sbl = sbl .appe nd(sb2);System.out.pri ntln(sb 1 = sb3);A. true 和 trueB. false 和 trueC. true 和 falseD. false 和 false四、输入输出处理1、字节流与字符流的父类。【例 1】 _ Outputstream 是输出字节流的父类。2、字符流与字节流的区别:字符流只适合于文本文件的读写,字节流适合于二进制文件的读写;【例 2】 在 windows 上执行语句 FileWr
21、iter fw = new FileWriter( ndata.牧tn),将生成 _gbk 编码的文本文件 datao【例 3】使用字符流对文件进行读写,涉及本地字符编码( gbk) 与 Unicode编码的转换。3、缓冲字符流: BufferedReader 和 BufferedWriter 。BufferedReader 的 readLine 方法。 BufferedWriter 的 newLine 方法。【例4】已知变量 bw为BufferedWriter对象,则在 Linux系统上,br.newLine()等价于 bw.write(_ “n” )语句。4、转换流: InputStrea
22、mReader 和 OutputStreamWTiter(1) 使用 InputStreamReadeT 接收控制台输入。InputStreamReader isr=new InputStreamReader(System.in);is 匸 read();(2) 使用转换流处理不同字符集的转换。【例 5】给出一段代码,实现对包含多行文本的Unicode 编码的文本文件的读取及显示 ,假设被读取的文本文件的名字为 data.txto答:FilelnputStream fis = new FileInputStream("data.txt"); InputStreamReade
23、r isr = new InputStreamReader(fis,"unicode"); BufferedReader br = new BufferedReader(isr); String str = null;while (str=br.readLine() != null) System.out.println(str); bi*. close();五、集合类1、ArrayList 和 LinkedList 的特点及使用场合的比较。【例 1】判断题:已知list 为 List 类型的集合变量,则执行 list.get(i) 语句, ArrayList 的效率普遍低
24、于 LinkedList o 错2、Iterator 接口。3、Collection 接口和 Collections 类。4、 对象比较器接口Comparatoro5、HashSet 类。6、HashMap 类。【例2】HashSet类的是基于一HashMap 类实现的。注意大小写【例 3】已知 HashMap 集合中将存储 1000个键值对象,则你会使用 HashMap mmap=new HashMap(2048) 语句创建 HashMap 集合。解法: HashMap,ArrayList 会自动扩容。并且,系统分配的大小都是 2的整倍数。 当现有元 素达到他们容量的 60%的时候,他们会自
25、动扩容 (扩大原来的一倍 )。因此,距1000最近的2的整倍数是1024,而1000/1024大于60%,所以进行扩容,扩大1024个。因此扩容后容量是2048.因此为了性能考虑,可以直接指定大小为2048。六、图形用户界面设计1、布局管理器边界布局如图public class MyFrame exte nds JFrameJButton jbl a jb2 r jb3 z jb4 r jb5; / 声明 5 个按钮public MyFrame () this ? add ( jbla BorderLayoutNORTH ; / / 添力口至Jjbl=new JButt on(”上北“);jb
26、2=new JButt on("下南“);jb3=new JButton("左西”);jb4=new JButt on("右东");jb5=new JButt on("中间");this ? setSize(300, 200);/ 设置大小 300X200this? setTitle("边界布局“);/设置标题/边界布局是默认的上北下南左西右东最上边-(us.) uoaanap -(uAu) 4nar -出gmHI 绸卓 /'勿 ql' £q'乙 ql '【q uoaansrMeu=
27、gqCMeu=f?quoq ,CMau=gqCMau=3qCMBU=iq(,£ ,) uoAAnar (uZu) U044t!SP-(.1.) uo44ngp () jApqDTx qnd suiejjp spueqxe suiejjApq ssByo OTjqnd I () auiej jApqMSU (sfije 5UTjq.s) uyeuipTOA DTq.BAs OTjqnd血巨 euieyi?萬强 I (snz4) siqTSTAdes'STtnaj t|zi/?(U3IN33 ? An oAeqjspjog7gqC ) ppe -sxqA 瑕孕 / - (ISV3
28、 ? q.noAeqjapjoa 'Aqc ) ppe - sxqA率丰 / - (IS3M ? AnoAeqAapjoaygqC ) ppe -sxqA 瑕丄底口4 蚩/ - ( Hin0S ? AnoAeqjspjog 'AqC) ppe - sxqAthis ? setSize (300, 200) ;/ 设置大小 300X200this . setTitle (边界布局");/设置标题this ?setLayout (new FlowLayout () ) ;/声明为流式布局this ?add(jbl);this ?add(jb2);this ?add(jb3
29、);this ?add(jb4);this ?add(jb5);(true) ;/ ABjFrame rt 见网格布局public class MyFgme extends JFrame JButton jbl r jb2 r jb3 z jb4 r jb5; public MyFrame()/声明5个按钮jbl=new JButton (H1n);jb2=new jb3=new JButt onjb4=newJButtonjb5=newJButto n(n 2 n);JButto n(H3n);(H 4 H;(H 5 n);三行两this ? setVisible/声明为网格布局this ?
30、 setLayout (new GridLayout (3 a 2);3行2列this ? setSize (300, 200) ;/ 设置大小 300X200this . setTitle (日网格布局");/设置标题this ? add(jbl);this ? add(jb2);this ? add(jb3);this ? add(jb4);this ? add(jb5);this ? setVisible (true) ;/设置JFrame可见public static void main(String args) new MyFrame();2、事件处理(看文档最后的那个很详
31、细的)(三)程序设计题1、编写程序。使之能从控制台接收用户输入的若干个整数,当接收的整数为-1时,结束程序。掌握两种接收控制台输入的方法。(1) BufferedReader br = new BufferedReader( new In putStreamReader(System.i n);从控制台读取为 br.readLine();每次读一行(2) Scanner sca n = new Sca nn er(System.i n);2、编写程序,找岀200-300之间能被2整除的数,并将这些数以每行6个的格式输岀。publicvoid dividedBy2()intanotherLine
32、=0; 用于统计个数如果是6的倍数则输岀换行符for(int i=200;iv=300;i+) if(i%2=0)System.out.print(i+""); if(+anotherLine %6=0) System.out.println();3、编写程序,实现以树形结构输岀指定File对象所代表的目录下所有文件和子文件夹。ppt9第8页此代码来自老师ppt如果考的话就背住好了import java.io.*;class FileList public static void main( Stri ng args) File f = new File("D:/
33、Jcreator 安装程序” );listAsTree(f,l);public static void listAsTree(File f, int level) File childs = f.listFiles();Strin gBuffer preStr = new Stri ngBuffer("n);for (i nt i=0; i<level; i+) preStr = preStr. appe nd(”");for (i nt i=0; i<childs .len gth; i+) System.out.pri ntl n( preStr + chi
34、ldsi.getName();if (childsi.isDirectory() list AsTree(childs i,level + 1); 4、编写代码,求一个长整数的各位数之和。两个选择一个采用转化为字符数组计算进行计算public int IongPerSum (long num)Stri ng tem=Stri ng? va 丄 ueOf( num); charper=tem.toCharArray();int sum=0;for(int i=0;i<per ?丄 ength;i+)sum+=per i -1 01 ;/将数字字符减去 0的ascii 码,转换为数字retu
35、rn sum;/方法二采用数学计算方法public int IongPerSum (long num)int sum=0; while( num!=0)sum+=nu m%10; num=nu m/10;if (num=0)break;return sum;5、编写代码,统计以 J”分割的字符串中各个单词岀现的次数。/初始化字符串,以分号分割开Stri ngtext= npig; cat; cat; dog; persi on; house; fox; cat; fox/使用map进行统计String:储存岀现的单词Integer:单词岀现的次数MapvStri ng f I nteger&g
36、t;map=new HashMapvStri ngzI nteger>();/将字符串用分号分割成字符串数组String words=text? split (H; n);/循环遍历字符串数组for(Stri ng s:words)if (map ? containsKey(s) ) /如果在map找到已经存在的单词,则将该单词的个数增加map ? put (s r map ? get (s)+1);1else/如果map没有找到单词,则将改单词添加到map中,并将该单 词的个数初始化为1map ? put (s r 1);System. out? printin (map) ;/ 输岀
37、统计结果6、已知Student类的定义如下:class Stude ntint age;Stri ng n ame;请编写对象比较器类,实现对多个Student对象根据年龄排序,年龄相同的根据姓名排序。7、编写程序,打印输出杨辉三角。打印的杨辉三角的类型如下100 0110|o12101331public void yanghui(int n) /n为杨辉三角的层数int i,j;int arr =new int n n;arr0 0=1;for( i=l;i<arr ? length;i+)for( j = l;j<arr? length;j+)arrij=1;else arri
38、j=arri-1j-1+arri-1j; System.out.pri nt(arrij+"t");System.out.pri ntl n(); 8、请编写一个计算两数最大公约数的方法。【参考代码】使用递归。public static int gcd(int a, int b) int c = a % b;辻(c != 0) return gcd(b, c); elsereturn b; 9、请编写一个方法,对小数进行四舍五入的计算。 【参考代码】public static int func(double a) int b = (int)a; if (Math.abs(a
39、-b) >= 0.5) if (a > 0.0) b+;elseb-; return b;10、请编程实现随机生成1000 个 0-99 之间的整数,并完成每个整数出现的次数的统计。【参考代码】 import java.util.*;class Test public static void main(String args) int numbers = new int1000; Random rand = new Random(); for (int i = 0; i < numbers.length; i+) numbers i = rand.nextlnt(lOO);i
40、nt counts = new int100; for (int i = 0; i < numbers.length; i+)+counts numbers i;for (int i = 0; i < counts.length; i+) System.out.println( n 数字” + i + ”出现了” + countsi + “次” ); 11、请编写一个方法,求两个整数的之和,要求在方法体内不得使用+、X、参考代码】static int addWithoutArithmetic (int nl, int n2) if (n2 = 0)return nl;int sum
41、 = nl A n2;int carry = (nl & n2) ? 1;return addWithoutArithmetic (sum, carry);12、假设某社区有几千名居民,请完成一个时间复杂度为O(n) 的算法对该社区居民的年龄作排序, 可使用 0( 1)的辅助空间。【参考代码】该方法用长度为99 的整数数组 timesOfAge 辅助空间,换来了 O(n) 的时间效 率。不论对多少人的年龄进行排序,辅助数组的长度 timesOfAge 的大小固定,因此它的空 间复杂度 是个常数,即 0(1) 。static void sortAges(int ages) final i
42、nt oldestAge = 99;int timesOfAge = new intoldestAge + 1;for(int i = 0; i <= oldestAge; i+) timesOfAgei = 0;for(int i = 0; i < ages.length; i+) int age = agesi;+timesOfAge age;int index = 0;for(int i = 0; i <= oldestAge; + i) for(int j = 0; j < timesOfAgei; j+) ages index = i;+ index;【参考代
43、码】13、请编写一个方法,返回一个正整数对应的二进制数串static Stri ng In tegerToB in ary(i nt n)String str = ” ”int i = n; int m = 0; while (i > 1) i = n / 2;m = n % 2;str = m + str; n = i;辻(i>0) str = "I" + str;return str;14、事件处理机制(持有对方引用、内部类、匿名内部类)固驱 1=国测试点击则试壘之后更改内咨点击按钮后三种方式中黄底的表示不同之处有一注意匿名内部类中最后的分号持有对方引用pu
44、blic class GEven tTestexte nds JFrame /继承于船体类,并添加自己的东西public JButton jb; / 测试按钮public GEventTest ()jb = new JButt on("点击测试”);jb ? addActionListener(new MyEve ntListe ner(this); /给按钮添加监听事件,并将当前一传递过去this ? setTitle ("测试");this? add ( jb);/将按钮添加到窗体中t his . se tSize(200 ” 100) ;/ 设置大小this
45、 . setResizable (false) ; /设置窗体不可以调节大小(如果嫌 弃太长的话,可以不写)this . setLocationRelativeTo(null) ;/ 设置矿体居于屏幕的中间显示(此行代码如果嫌太长可以不写)this.setDefaultCloseOperatio n( JFrame.EXIT_ON_CLOSE) ; /设置默认的点击窗口的叉的时候的类型(如果嫌弃太长可以不写 )t his . se tv isibJ_e(true); / 窗体显不public static void main(String args)new GEve ntTest();class MyEve ntListe nerimpleme nts Acti on Liste ner GEventTest jf;/事件处理,持有对方的引用public MyEventListener(JFrame jf)/将窗体强制转换成我们自己定t his . jf = (GEve ntTest) j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软考网络管理员考试复习指导试题及答案
- 2025年网络管理员考试心得试题及答案
- 第二次月考提升卷(Unit 4、Unit 5)(含答案)-2024-2025学年人教精通版英语六年级下册
- 学习云原生技术考试考题及答案解析
- 2025合同范本 租房协议书
- 2025法学概论考试的常见问题及试题及答案
- 学期重点项目与计划推进
- 保安人员心理素质提升的实践方案计划
- 2025带薪休假合同「下载」
- 信息处理技术员商务沟通题及答案
- GB/T 26251-2010氟和氟氮混合气
- GB/T 24815-2009起重用短环链吊链等用6级普通精度链
- 无机化学氧族元素课件
- 储煤场管理制度(6篇)
- 线描画基本功教学课件
- 齿轨卡轨车课件
- 医院工会经费使用与管理办法、制度规则
- 重症胰腺炎(1)课件
- 克拉泼改进型电容三点式振荡器
- 介入导管室耗材准备及管理
- SPC基础知识培训教材-入门级_课件
评论
0/150
提交评论