作品编号 91855558874563331258
学 校元明壮市文银汉镇便家蚕小学*
教 师 青稞酒*
班 级 飞鸟参班*
Java基础入门》习题答案
第1章Java开发入门
一、填空题1 、 Java EE、 Java SE、 Java ME2、 JRE 3、 javac4、 bin5、 path、 classpath二、选择题1 、ABCD 2、 C3、 D
4、B 5、B三、简答题1 、面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、 JREJava Runtime EnvironmentJava运行时环境 它相当于操作系统部分提供了Java程序运行时所需要的基本条件和许多Java基础类例如 IO类、GUI控件类、 网络类等。 JRE是提供给普通用户使用的如果你只想运行别人开发好的Java程序那么你的计算机上必须且只需安装JRE。 JDKJava DevelopmentKit Java开发工具包 它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具是提供给Java开发人员使用的。初学者学习和使用Java语言时 首先必须下载和安装JDK。 JDK中已经包含了JRE部分 初学者安装JDK后不必再去下载和安装JRE了。 四、编程题public class Hel loWorld{publ icstatic void main(String[]args) {System out println("这是第一个Java程序 "); } }
第2章Java编程基础
一、填空题1 、 class 2、 true和false 3、 单行注释、多行注释、文档注释4、 基本数据类型、引用数据类型5、 1 、 2、 4、 86、&&&| | | 7、 08、 5
9、 3410、 56二、判断题1 、 错2、对3、错4、对5、错三、选择题1 、 AD2、AD3、 C4、ABCD5、C6 、A7、AC8、
A9、 B 10、 A四、程序分析题1 、 编译不通过。 int值4和b相加时 由于变量b的类型为byte取值范围没有int类型大存不下int类型的值 因此编译不通过。 2、 编译不通过。这是因为y是在最里层的代码块中定义的一个变量只有在那个代码块中才可使用 在使用y=x;语句时已经超过了y变量的作用域所以编译无法通过。 3、 打印结果为 3。 4、 打印结果为 98
7五、 问答题1、 Java语言的八种基本数据类型有 byte字节型 占一个字节。 short短整型 占两个字节。 int整型 占4个字节。 long长整型 占8个字节。 float单精度浮点型 占4个字节。 double双精度浮点型 占8个字节。 char字符型 占两个字节。 boolean型表示逻辑值有true和false两个值分别占一个字节。 2、如果使用“&”在表达式之间进行连接那么无论任何情况 “&”两边的表达式都会参与计算。 如果使用“&&”进行连接 当“&&”左边的表达式为false则不会执行其右边的表达式。例如定义intx=2,y=0;boolean b=x<y&x/2>0表达是会发生被0除异常 因为x/y的表达式执行了。而boolean b=x<y&x/2>0是不会出现这种异常的 因为x<y为false表达式x/y不会执行。 3、方法重载指的是在一个类中可以声明多个同名的方法而方法中参数的个数或者数据类型不一致。 调用这些同名的方法时 JVM会根据实际参数的不同绑定到不同的方法。
六、编程题1 、参考答案public class Test01 {publ icstatic void main(String[]args) { int sum=0; for (int i=1 ; i< 100; i++) { if(i%2 !=0)sum+=i ; }System outprintln(sum); } }
2、参考答案
public class Test02{publ icstatic void main(String args[]) { int y=function(0);
System outprintln(y); }publ icstaticintfunction(intx) { inty; if(x>0) {y=x+3; }else if(x==0) {y=0; }else{y=x*x- 1 ; } returny; } }
3、参考答案public class Test03{public static void main(String[]args) { int[]arr={25,24, 12,76, 101 ,96,28}; for (int i=0; i <arr length- 1 ; i++){//定义内层循环for (intj=0; j<arr length- i - 1 ; j++) { if(arr[j]>arr[j+1]) {//比较相邻元素//下面的三行代码用于交换两个元素inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp; } } } for (int i=0; i<arr length; i++) {System out print(arr[i]+" "); //打印元素和空格} } }
第3章面向对象上
一、填空题1 、封装、继承、多态2、 new 3、成员变量、局部变量4、类、类5、 this 6、 finalize()
7、静态变量8、 内部类9、 javadoc10、 private二、判断题1 、对2、对3、错4、对5、错三、选择题1 、 B2、 D 3、 B4、ABC
5、ABCD 6、ACD 7、ABCD 8、ABCD 9、D 10、D四、程序分析题1 、程序不能编译通过因为在类A中的成员变量secret用private修饰所以在类Test1 中无法访问。 2、程序不能编译通过 因为在静态方法method()中不能访问非静态成员变量x。 3、程序能够编译通过运行的结果为“inner” 。 五、简答题1 、构造方法是类的一个特殊成员它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用retu rn语句返回一个值2、单例模式可以保证在整个程序运行期间针对该类只存在一个实例对象。 六、编程题1 、参考答案class Student{private String name;private double grade;publ ic Student() { }publ ic Student(String name,double grade) { this name=name; this grade=grade; }publ ic String getName() { return name; }publ icvoid setName(String name) {this name=name; }public double getGrade() { return grade; }publ ic void setGrade(double grade) { this grade=grade; } }public class Test01 {publ icstatic void main(String[]args) {Student stu1 =new Student();stu1 setName("zhangsan");stu1 setGrade(99);Studentstu2=new Student("l isi" 100); } }
2、参考答案class Father{private String name="zhangjun";class Chi ld{publ icvoid introFather() {System outprintln("MyFather's name is"+name); } } }public class Test02{publ icstatic void main(String[]args) {Father Child child=new Father()new Chi ld();child introFath er(); }}
第4章面向对象下
一、填空题1 、继承2、方法抽象类3、 im port 4、子类、父类、基类5、 Exception 6、 final 7、 super 8、 Object 9、 try、 catch 10、jar–cvf java–jar二、判断题1 、错2、对3、错4、对5、对三、选择题1 、 B2、 C3、ABC4、 ABCD5、 C6、AC7、 C8、
D 9、A10、 B四、程序分析题1 、程序编译能通过这是因为intx=2/0;System outprintln(x);这两条语句使用了try块捕获了程序因为除以0而产生的异常情况 之后程序会继续向下执行 输出“进入catch代码块” “进入final ly代码块” 。 2、程序编译不通过这是因为在程序中使用了final关键字修饰Animal类使得Animal类不能被继承。shout()方法中同样使用了final关键字使得该方法不能被重写。
3、程序编译能通过输出结果为“动物叫 ”和“汪汪……” 因为在程序中调用shout()方法时首先会通过supershout()调用父类的方法说出“动物叫 ”之后再输出“汪汪……”4、程序编译不通过 因为接口中定义的方法不能有方法体所以定义的eat()方法是错误的。接口中的方法必须在子类中全部实现 由于run()方法在子类中并没有重新实现所以这也是错误的。 五、简答题1 、在继
承关系中子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表则称子类的该方法重写(覆盖)父类的方法。 2、多态意味着一个对象有着多种形态可以在特定的情况下表现不同的状态从而对应着不同的属性和方法。简单的说多态就是使用父类类型的变量引用子类对象根据被引用子类对象的特性程序会得到不同的运行效果。 3、在J ava中使用a bs tra ct关键字修饰的类称之为抽象类。抽象类是不能被实例化的通常需要写一个子类来继承抽象类 同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。 接口可以说是一种特殊的抽象类接口中只能定义常量和抽象方法。由于接口的特殊性在定义时需要使用i nte rface关键字。 六、编程题1 、参考答案class Student{publ icString name;public intage;publ icStudent(String name, intage){ this name=name; this age=age; }publ icvoidshow(){System out println("name: "+name+"age: "+age); } }class UnderGraduate extends Student{publ ic String degree;publicUnderGraduate(String name, int age,String degree){super(name,age); this degree=degree; }public voidshow(){System out println("name: "+name+"age: "+age+"degree: "+degree); } }public class Test01{public static void main(String[]args) {Student student=new Student("zhangsan" 16);studentshow();UnderGraduate underGraduate=new UnderGraduate("l isi"20, "bechalor");underGraduate show(); }
}
2、参考答案interface Shape{double area(double givenValue); }class Square implements Shape{publ icdouble area(doublesideLength){ return sideLength*sideLength; } }class Circle implements Shape{public double area(double r) { return Math PI*r*r; } }publ ic classTest02{publ icstatic void main(String[]args) {Shape square=new Square();Shape circle=new Circle();
System outprintln(square area(2));System outprintln(circle area(3)); } }
3、参考答案class NoThisSongException extends Exception{publ ic NoThisSongException(){super(); }public NoThisSongException(Stringmessage){super(message); } }class Player{publ ic void play(int index)throws NoThisSongException{ if(index>10){ throw newNoThisSongException("您播放的歌曲不存在"); }System out println("正在播放歌曲"); } }publ ic class Test03{public static voidmain(String[]args) {Player player=new Player(); try{player play(13); }catch(NoThisSongException e) {System out println("异常信息为 "+e getMessage()); } } }
第5章多线程
一、填空题1 、 线程、通信2、 Thread、 Runnable 3、 就绪4、 synchronized、对象、 this 5、 进程6、新建状态(New)、 就绪状态(Runnable)、 运行状态(Running)、 阻塞状态(Blocked)、 死亡状态(Terminated)7、 10、 1 8、 开启一个新线程、 run()方法9、wait()、 notify()、 notifyAl l() 10、 setDaem on(true)、 start()二、判断题1 、错2、对3、对4、错5、错三、选择题1、 B 2、AC 3、ABC4、 BC5、ABD6、ABC7、 C8、 D9、AB 10、ABCD四、程序分析题1 、程序不能编译通过 因为RunHandler类没有实现Runnable接口因此RunHandler的实例对象不能作为参数传递给Thread的构造方法。 2、程序不能编译通过因为Thread的子类A重写的run()方法的访问级别不能低于父类run()方法的。 访问级别3、程序不能编译通过因为同步方法中调用wait()方法的对象必须为同步锁对象。 4、 t start();五、简答题1 、一种是继承java lang包下的Thread类覆写Thread类的run()方法在run()方法中实现运行在线程上的代码。new Thread() {publ ic void run(){} }start();
另一种就是实现java lang Runnable接口 同样是在run()方法中实现运行在线程上的代码。newThread(new Runnable(){publ icvoid run(){} })start()
2、调用sleep()方法正在执行的线程主动让出CPU去执行其他线程在sleep()方法指定的时间过后 CPU才会回到这个线程上继续往下执行如果当前线程进入了同步锁 sleep()方法并不会释放锁 即使当前线程使用sleep()方法让出了CPU但其它被同步锁挡住了的线程也无法得到执行。wait()
在一个已经进入了同步锁的线程内进行调用让当前线程暂时让出同步锁 以便其它正在等待此锁的线程可以得到同步锁并运行。当其它线程调用了notify()方法后调用wait()方法的线程就会解除wait状态 当再次获得同步锁后程序可以继续向下执行。 六、编程题1 、参考答案public class MyThread extends Thread{publ ic MyThread(String name) {super(name); }publ ic void run()
{System out println(this getName()); }publ ic static void main(String[]args) {new MyThread("Thread1")start();new
MyTh read("Th read2")start(); } }
2、参考答案publicclass MyRunnable implements Runnable{publicvoid run() {for (int i=0; i<50; i++) {System outprintln("new"); } }publ icstatic void main(String[]args) {new Thread(new MyRunnable())start(); for (int i=0; i<100; i++) {System out println("m ain"); } } }
3、参考答案public class Test01 {publ ic static void m ain(String[]args) {Teacher t=new Teacher();n ew Thread(t, "陈老师")start();new Thread(t,"高老师")start();new Thread(t, "李老师")start(); } }class Teacher implements Runnable{private int notes=80;publ ic void run(){whi le(true) {dis patchNotes(); //调用售票方法if(notes<=0) {break; } } }private synchronized void dis patchNotes() { if(notes>0) {try{Thread sleep(10); //经过的线程休眠10毫秒}catch(InterruptedException e) {e printStackTrace(); }
System out println(Thread currentThread()getName()+"---发出的笔记"+notes--); } } }
4、参考答案public class Accumulator extends Thread{private int stratNum;publ icstatic intsum;publ ic Accumulator(int startNum){ thisstratNum=startNum; }publ icstaticsynchronized void add(intnum) {sum+=num; }publ icvoid run() { intsum=0; for (int i=0;i<10; i++) {sum+=stratNum+i ; }add(sum); }public static void main(String[]args) throws Exception{Thread[] threadList=newThread[10]; for (int i=0; i<10; i++) { threadList[i]=new Accumulator(10* i+1 ); threadList[i]start(); }for (int i=0; i<10; i++){ thread List[i] join(); }
System outprintln("Sum is : "+sum); } }
第6章JavaAPI
一、填空题1 、 String、 StringBuffer 2、 Date、Calendar、 DateFormat 3、 getRuntime()4、 sqrt()5、 DateFormat 6、 π、 e 7、Random、 java uti l 8、 length()9、 静态10、 edcba二、判断题1 、错2、错3、对
4、错5、对6、 B7、 C8、A9、A10、 B
三、选择题1 、 C2、 C3、 D4、C5、 C四、程序分析题1 、程序编译能通过输出结果如下
570-80-581 -61
2、程序编译能通过输出结果如下str length():15 str charAt(0):d lastIndexOf(m):10 substring(2,4):fe indexOf(g):5
五、简答题1 、 String类是不可变类 即字符串值一旦初始化后就不可能改变。 StringBuffer是可变字符串类类似String的缓冲区可以修改字符串的值。 2、 D a te类用来表示某个特定的瞬间能够精确到毫秒。而在实际应用中往往需要把一个日期中的年、月、 日等信息单独返回进行显示或处理这个类中的大部分方法都已被标记过时。 Calender类基本取代了Date类该类中定义了一系列用于完成日期和时间字段操作的方法。 Calendar的getTime()方法getTime()返回一个表示Calendar时间值的Date对象同时Calendar有一个setTime(Date date)方法 setTime()方法接收一个Date对象将Date对象表示的时间值设置给Calendar对象通过这两个方法就可以完成Date和Calendar对象之间的转换。 六、编程题1 、 参考答案public class Test01 {publ ic static void m ain(String[]args) {String str="Hel loWorld"; //字符串转成char数组char[]ch=strtoCharArray();StringBuffer buffer=new StringBuffer(); for (int i=str length() - 1 ; i>=0; i--) { if(ch[i]>='A'&&ch[i]<='Z'){buffer append(String valueOf(ch[i]) toLowerCase()); }else if(ch[i]>='a'&&ch[i]<='z')
{buffer append(String valueOf(ch[i]) toUpperCase()); } }System out println(buffer toString()); } }
2、 参考答案importjava text DateFormat; importjava uti l Calendar; im portjava uti l Date;publ ic class Test02{publ icstatic void main(String[]args){Calendar calendar=Calendar getInstance();calendar add(Calendar DATE, 100);Date date=calendar getTime();DateFormatformat=DateFormat getDateInstance(DateFormat FULL);String string=format format(date);System out println(string); } }
3、 参考答案importjava uti l Random;publ ic class Test03{public static void main(String[]args) {Random rand=new Random(); int[]num=newint[5]; for (int i=0; i<num length; i++) {num[i]=20+rand nextInt(31 );System outprintln(num[i]); } }
}
第7章集合类
一、填空题1 、集合2、 Comparator3、有序、可重复无序、不可重复4、 hashNext()、 next()5、 Col lection、 Map 6、键、值7、ListIterator 8、ArrayList、 LinkedList Has hSet、 TreeSet HashMap、 TreeMap 9、 put()、 get() 10、Collections、Arrays二、判断题1 、错2、对3、对4、错5、对三、选择题1 、 BC2、A3、 D4、ABD5、 C6、AB7、 D8、 AB9、 ABC10、 B四、程序分析题1 、程序可以编译通过输出结果是“a、 b、 c” 因为TreeSet集合不允许存放重复元素第2次增加的元素c会覆盖之前存入的元素c所以输出结果是“a、 b、 c” 而不是“a、 b、 c、 c” 。 2、程序不可以编译通过这是由于向ArrayList集合中存入元素时集合并不能记住元素的类型因此在取出元素时只能使用Object类型而不能使用Stri ng类型。 3、程序可以编译通过但是什么也没有打印。使用ListIterator进行从后向前的遍历集合可以使用以下两种方法一是使用listIterator(int index)方法将索引index的值设置为集合元素的数目也就是ListIterator it=l ist l istIterator(3); 二是将程序先从前向后遍历然后再从后向前遍历。
4、程序编译不通过 由于Ma p集合在遍历的过程中不能使用集合对象本身删除元素这会导致并发修改异常若想删除集合中的元素可以使用Iterator的remove()方法。 五、简答题1 、为了使程序能方便的存储和操作数目不固定的一组数据 J D K提供了一套类库这些类都位于java uti l包中统称为集合。集合框架中包含3个接口分别是List、 Set、 Map。 2、 List的特点是元素有序、元素可重复。 List接口的主要实现类有ArrayList和LinkedList。 Set的特点是元素无序、元素不可重复。 Set接口的主要实现类有Has hSet和TreeSet。 Map的特点是存储的元素是键(Key)、值(Value)映射关系元素都是成对出现的。 Map接口的主要实现类有H as h Map和TreeMap。 3、Col lection是一个单例集合接口。它提供了对集合对象进行基本操作的通用方法。 Col lections是一个工具类。它包含各种有关集合操作的方法。 六、编程题1 、参考答案importjava uti l *;public class Test01 {public static void main(String[]args) {ArrayList l ist=new ArrayList();for(int i=0; i<10; i++) { l ist add("A"+i); } Iterator it=l ist iterator();whi le(it hasNext()) {Object obj=it next();
System out println(obj); } } }
2、参考答案
importjava uti l *;public class Test02{public static void main(String[]args) {HashSet hashSet=new HashSet();Person p1 =newPerson("Jack"25);Person p2=new Person("Rose"23);Person p3=new Person("Jack"27);hashSet add(p1 );hashSet add(p2);hashSetadd(p3); for(Objectobj:hashSet){Person p=(Person)obj;System out println(p name+":"+p age); } } }class Person{Stringname; intage;publ ic Person(String name, intage) {super(); this name=name; this age=age; }publ ic inthashCode() { returnname hashCode(); }publ ic boolean equals(Object obj) { if(this==obj) return true; if(obj==null) return false;Person other=(Person)o bj;return other name equals(this name); } }
3、参考答案importjava uti l *;public class Test03{public static void main(String[]args) {TreeMap map=new TreeMap(new MyCom parator());map put("1" "Lucy");map put("2" "Lucy");map put("3" "John");map put("4" "Smith");map put("5" "Amanda"); for (Objectkey:map keySet()) {System out println(key+":"+map get(key)); } } }class MyComparator implements Comparator{public intcompare(Object obj1 ,Object obj2) {String ele1 =(String)obj1 ;String ele2=(String)obj2; return ele2 com pareTo(ele1 ); } }第8章IO输入输出
一、填空题1 、 字节流、字符流2、 Fi le、 java io 3、 SequenceInputStream 4、 RandomAccessFi le 5、 管道流6、LineN um berReader、Buffered Reader、setLineN um ber(int)、getLineNum ber()7、字节流、字符流8、 PrintStream、setOut(PrintStreamout)9、 Unicode 10、 newLine()二、判断题1、 错2、对3、对4、对5、错三、选择题1 、AB2、 C3、 C4、ABCD5、AB6、ACD7、A8、A9、 D10、A四、程序填空题
1 、 InputStream Reader、 br readLine()、运行结果为22、 Fi leInputStream(fi le 1 )、 FileOutputStream、 fis avai lable()五、 问答题1 、Java程序通过流来完成输入和输出流是输入或输出信息的抽象。流通过Java的输入/输出系统与外设连接进行数据通信。流是抽象的对象具体实现代码在java io包中。 2、字节流的两个基类是InputStream和OutputStream字符流的两个基类是Reader和Writer它们都是Object类的直接子类字节流是处理以8位字节为基本单位的字节流类 Read er和Writer类是专门处理16位字节的字符流类。 3、管道流分为管道输入流Piped InputStream和管道输出流PipedOutputStream 通常由一个Piped InputStream实例对象和一个PipedOutputStream实例对象相互连接而实现管道通信 PipedOutputStream 向管道写入数据Piped InputStream从管道中读取PipedOutputStream写入的数据管道流主要用来完成线程之间的通信。 六、编程题1 、参考答案importjava io*;public class Test01 {public static void main(String[]args) throws Exception{//字节流拷贝Fi leInputStream in=new Fi leInputStream("E:/src txt");Fi leOutputStream out=new Fi leOutputStream("E:/des1 txt");byte[]buf=new byte[1024]; i nt len;whi le((len=in read(buf)) !=-1 ) {outwrite(buf,0, len); } in close();outclose(); //字符流拷贝BufferedReader bf=newBufferedReader(new Fi leReader("E:/src txt"));BufferedWriter bw=new BufferedWriter(new Fi leWriter("E:/des2 txt"));String s tr;whi le((str=bf readLine()) !=null) {bw write(str);bw newLine(); }bf close();bw close(); } }
2、参考答案importjava io*;public class Test02{public static void main(String[]args) throws Exception{BufferedReader br=newBufferedReader(new InputStream Reader(System in));
String password="";boolean b=false; for (int i=0; i<5; i++) {System out println("请输入密码:");password=br readLine(); if(password equals("123456")) {System out println("恭喜你进入游戏");b=true;break; } } if(!b) {System out println("密码错误游戏结束");System exit(0); } } }
第9章GUI 图形用户界面
一、填空题1 、 GUI、 java awt、 javaxswing 2、 适配器3、 Graphics 4、 事件监听器5、 JComponent6、 窗体事件、键盘事件、鼠标事件、动作事件7、 WindowListener、windowClosing(WindowEvent e)8、 模态对话框、非模态对话框9、 setLayout(nul l)
10、 JMenuBar、 JMenu、 JMenuItem二、判断题1 、对2、错3、对4、错5、错三、选择题1 、 D 2、 D3、ABD4、A5、 D6、ABCD四、程序分析题1 、参考答案extends Stdno=new JTextField();Name=new JTexxtField();
7、ABD
8、ABC
9、 D
10、 C
2、参考答案card next(cp);cp add(jbt);
五、简答题
1 、参考答案通过实现XxxL i s te n e r接口或者继承XxxAd a p te r类实现一个事件监听器类并对处理监听动作的方法进行重写创建事件源对象和事件监听器对象调用事件源的a d d XxxL i s n ten e r()方法为事件源注册事件监听器对象2、参考答案AWT是Abstract Wi ndow Tool Kit (抽象窗口工具包)的缩写 这个工具包提供了一套与本地图形界面进行交互的接口。AWT中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系 当我们利用AWT来构件图形用户界面的时候我们实际上是在利用操作系统所提供的图形库。 由于不同操作系统的图形库所提供的功能是不一样的在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现J a va语言所宣称的"一次编译到处运行"的概念 AW T不得不通过牺牲功能来实现其平台无关性也就是说 AWT所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。 由于AWT是依靠本地方法来实现其功能的我们通常把AWT控件称为重量级控件。 Sw i n g是在AWT的基础上构建的一套新的图形界面系统它提供了 AWT所能够提供的所有功能并且用纯粹的Java代码对AWT的功能进行了大幅度的扩充。由于在Swi ng中没有使用本地方法来实现图形功能我们通常把Swi ng控件称为轻量级控件。 AWT和Swing之间的基本区别 AWT是基于本地方法的C/C++程序 其运行速度比较快 Swing是基于AWT的Java程序其运行速度比较慢。对于一个嵌入式应用来说 目标平台的硬件资源往往非常有限而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下简单而高效的AWT当然成了嵌入式J a va的第一选择。而在普通的基于P C或者是工作站的标准Java应用中硬件资源对应用程序所造成的限制往往不是项目中的关键因素 所以在标准版的Java中则提倡使用Swing 也就是通过牺牲速度来实现应用程序的功能。 六、编程题1 、参考答案importjava awt*; importjava awt event*; importjavaxswing*;publ ic class MyMouseHandler extends JFrame{public
MyMouseHandler() {final JLabel label=new JLabel("此处显示鼠标右键点击的坐标"); label setOpaque(true);label setBackground(Color PINK); this add(label ,BorderLayout NORTH); this setSize(300,200);this setDefaultCloseOperation(JFram e EXIT_ON_CLOSE); this addMouseListener(new MouseAdapter() {publ ic voidmouseCl icked(MouseEvente) { if(e getButton()==e BUTTON1 ) { intx=e getX(); int y=e getY();String banner="鼠标当前点击位置的坐标是"+x+""+y; label setText(banner); } } });this setVisible(true); }public static void main(String[]args) {new MyMouseHandler(); } }
2、参考答案importjava awt*; importjava uti l *; importjavaxswing*; importjava awtevent *;publ icclass Information extends JFrame{//窗口NORTH部的JPanel面板private JPanel panel=new JPanel(); //爱好标签private JLabel lb1 =new JLabel("爱好"); //三个表示爱好的JCheckBox复选框private JCheckBoxcb1 =new JCheckBox("羽毛球");private JCheckBoxcb2=new JCheckBox("乒乓球
");private JCheckBoxcb3=new JCheckBox("唱歌"); //性别标签private JLabel lb2=new JLabel("性别"); //表示性别的JRadioButton单选框private JRadioButton rb1 =new JRadioButton("男");private JRadioButton rb2=new JRadioButton("女"); //ButtonGroup添加JRadioButton,实现单选功能private ButtonGroup bg=new ButtonGroup(); //文本域组件private JTextAreaarea=new JTextArea(); //窗口 CENTER部的JScrol lPane面板其中放置area文本域private JScrol lPane pane=newJScrol lPane(area); //Set集合存放选中的兴趣private Set hobbies=new HashSet(); //gender选中的性别private String gender=""; //JCheckBox复选框的事件监听器private ActionListener l istener1 =new ActionListener() {public voidactionPerformed(ActionEvent e) {JCheckBoxcb=(JCheckBox)e getSource(); //选中的复选框把文本添加到Set集合中if(cb isSelected()) {hobbies add(cb getText()); //反之从集合中移除}else{hobbies remove(cb getText()); }print(); } }; //JRadioButton单选框的事件监听器private ActionListener l istener2=newActionListener() {publ ic void actionPerformed(ActionEvent e) {JRadioButton jb=(JRadioButton)e getSource();gender=jb getText();print(); } }; //打印方法private void print() {//清空文本域area setText(""); //如果Set集合中有元素打印兴趣if(hobbies size()>0)area append("你的兴趣爱好有: "); Iterator it=hobbies iterator();whi le(it hasNext()) {area append(it next()+""); }//如果gender不为空字符串打印性别if(!""equals(gender))area append("你的性别为 "+gender); }public Information(){//添加标签、单选和复选按钮panel add(lb1 );panel add(cb1 );panel add(cb2);panel add(cb3);panel add(lb2);panel add(rb1 );panel add(rb2);bg add(rb1 );bg add(rb2); //为单选和复选按钮添加事件监听器cb1 addActionListener(l istener1 );cb2 addActionListener(l istener1 );cb3 addActionListener(l istener1 ); rb1 addActionListener(l istener2);rb2 addActionListener(l istener2); //将JPanel面板和JScroll Pane面板添加到JFram e容器中Container container=this getContentPane();container add(panel ,BorderLayout NORTH);container add(pane,BorderLayout CENTER); this pack();this setDefaultCloseOperation(JFrame EXIT_ON_CLOSE); this setVisible(true); }public static void main(String[]args) {newInformation(); } }
3、参考答案importjavaxswing*; importjava awt*; importjava awtevent*;publ icclass MyMenu extends JFrame implements ActionListener{JLabel label=new JLabel("请选择菜单"JLabel CENTER);JMenuItem aaMenuItem,baMenuItem;MyMen u() {J MenuBar menuBar=new JMenuBar();JMenu aMenu=newJMenu("菜单A");JMenu bMenu=new JMenu("菜单B");JMenuItem aaMenuItem=newJMenu Item("菜单项AA"); J Menu Item abMenu Item=new JMenu Item("菜单项AB"); J Menu Item baMenu Item=new JMenu Item("菜单项BA");menuBar add(aMenu);menuBar add(bMenu);aMenu add(aaMenuItem);aMenu addSeparator();aMenu add(abMenu Item);bMenu add(baMenu Item);aaMenu Item addActionListener(this);abMenu Item addActionListener(this);baMenuItem addActionListener(this);setJMenuBar(menuBar);getContentPane()add(label ,BorderLayout CENTER); }publ ic voidactionPerformed(ActionEvent e) {JMenu Item source=(JMenu Item) (e getSource()); label setText("选择了菜单:"+source getText());label setHorizontalAl ignment(JLabel CENTER); }public static void main(String args[]) {JFrame frame=new MyMenu(); frame setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);frame setSize(300,200); frame setVisible(true); } }
第10章
网络编程
一、填空题1 、面向连接、客户端、服务器端2、2、0-655353、链路层、网络层、运输层、应用层4、 InetAddress 5、DatagramPacket、DatagramSocket二、判断题1 、错2、对3、对4、错5、对三、选择题1 、 C2 A3、ABD 4、 B 5、A6、 D 7、 B 8、 C四、简答题1 、在Internet中传输数据都需要遵守一定的规则这种规则通常被称作网络通信协议。 网络通信协议对数据传输格式、传输速率、传输步骤等作了统一规定通信双方必须共同遵守这个规定才能完成数据的交互。到目前为止 网络通信协议已经有很多种其中TCP/IP协议在世界范围内应用最为广泛。 2、 U D P协议是无连接通信协议所谓的无连接就是指数据的发送端和接收端不建立逻辑连接。 由于UDP协议消耗资源小通信效率高通常都会用于音频、视频和普通数据的传输。 UDP协议在传输数据时不能保证数据的完整性 因此在传输重要数据时不建议使用U D P协议。 TCP协议是面向连接的通信协议 即在传输数据前先在发送端和接收端建立逻辑连接然后再传输数据它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服
务器端 由客户端向服务端发出连接请求每次连接的创建都需要经过“三次握手” 。 3、 ServerSocket类用于创建服务端程序通过调用ServerSocket对象的accept()方法接收来自客户端的请求。 Socket类用于创建客户端程序 当客户端和服务端的两个Socket建立了专线连接后连接的一端既能向另一端连续写入字节也能从另一端读取字节。Socket类中定义了getInputStream()方法返回Socket的输入流对象定义了getOutputStream()方法返回Socket的输出流对象。只要连接的一端向该输出流对象写入了数据连接的另一端就能从其输入流对象中读取到。 五、编程题1 、参考答案importjava net InetAddress;publ ic class Test01 {publ ic static void main(String[]args) throws Exception{ InetAddress localAddress=InetAddress getLocalHost(); InetAddress remoteAddress=InetAddress getByName("www oracle com");
System out println("本机的IP地址 "+localAddress getHostAddress());System out println("本地的主机名 "+localAddress getHostName());System out println("甲骨文的IP地址 "+remoteAddress getHostAddress()); } }
2、 参考答案接收端importjava net*;publ ic class Test02{publ ic static void main(String[]args) throws Exception{byte[]buf=new byte[1024];DatagramSocket ds=new DatagramSocket(8001 );Datagram Packet dp=new Datagram Packet(buf, 1024);ds receive(dp);Stringstr=new String(dp getData(),0,dp getLength());System out println(str);ds close(); } }
发送端importjava net*;publ ic class Test03{publ icstatic void main(String[]args) throws Exception{DatagramSocket ds=newDatagramSocket(3000);String str="hel lo world";Datagram Packet dp=new Datagram Packet(str getBytes(),str length(),InetAddress getByName("localhost"),8001 );ds send(dp);ds close(); } }
3、参考答案服务端importjava io*; importjava net*;publ ic class Test04{publ ic static void main(String[]args) throws Exception{new
TCPServer() l isten(); } }class TCPServer{publ ic void l isten() throws Exception{ServerSocket serverSocket=new
ServerSocket(8002);
Socket cl ient=serverSocket accept();OutputStream os=cl ient getOutputStream();os write("hello world")getBytes());Thread sleep(5000);os close();cl ient close(); } }
客户端importjava io*; importjava net*;publ ic class Test05{publ ic static void main(String[]args) throws Exception{new
TCPCl ient()connect(); } }class TCPCl ient{publ ic void connect() throws Exception{Socket cl ient=new
Socket(InetAddress getLocalHost(),8002); InputStream is=cl ient getInputStream();byte[]buf=new byte[1024]; int len=is read(buf);System out println(new String(buf,0, len));cl ient close(); } }
今天看到一个网友从原来虚拟主机准备转移至服务器管理自己的业务。这里问到虚拟主机和服务器到底有什么不同,需要用到哪些工具软件。那准备在下班之间稍微摸鱼一下整理我们服务器安装环境和运维管理中常见需要用到的软件工具推荐。第一、系统镜像软件一般来说,我们云服务器或者独立服务器都是有自带镜像的。我们只需要选择镜像安装就可以,比如有 Windows和Linux。但是有些时候我们可能需要自定义镜像的高级玩法,这...
SoftShellWeb是一家2019年成立的国外主机商,商家在英格兰注册,提供的产品包括虚拟主机和VPS,其中VPS基于KVM架构,采用SSD硬盘,提供IPv4+IPv6,可选美国(圣何塞)、荷兰(阿姆斯特丹)和台湾(台北)等机房。商家近期推出台湾和荷兰年付特价VPS主机,其中台湾VPS最低年付49美元,荷兰VPS年付24美元起。台湾VPSCPU:1core内存:2GB硬盘:20GB SSD流量...
bgpto怎么样?bgp.to日本机房、新加坡机房的独立服务器在搞特价促销,日本独立服务器低至6.5折优惠,新加坡独立服务器低至7.5折优惠,所有优惠都是循环的,终身不涨价。服务器不限制流量,支持升级带宽,免费支持Linux和Windows server中文版(还包括Windows 10). 特色:自动部署,无需人工干预,用户可以在后台自己重装系统、重启、关机等操作!bgpto主打日本(东京、大阪...