java第八章课后习题解答
java习题及答案第8章 习题参考答案
exitItem.setText("退出");
}
});
…
8.6简述使用面板的原因,编写一个继承自JPanel的面板类MyPanel。
答:用面板可以实现对所有组件进行分层管理,即对不同关系的组件采用不同的布局管理方式,使组件的布局更加合理和程序的界面更加美观。
//创建文件下拉式菜单,并添加到菜单栏
JMenufilemenu= new JMenu("文件");
mbar.add(filemenu);
//创建菜单项,并添加到文件菜单下
JMenuItemopenfileItem= new JMenuItem("打开文件");
JMenuItem closefileItem= new JMenuItem("关闭文件");
编程提示:编写继承自JPanel的面板类MyPanel时,可在MyPanel类中直接放置上面板要放置的组件,在使用该面板时就可以直接放置在窗体上了,例如可创建一个LoginPanel,上面放上用户名和密码输入框及其文本标签,并添加登录和退出按钮和相关代码。
8.7对比各种布局管理方式,指出各自的应用场合。
答:常见的布局管理器有边界布局(BorderLayout)、顺序布局(FlowLayout)、网格布局(Gri不用布局管理器)。其中,各种布局管理方式与适合应用的场合如下:
空布局管理是直接定位的方式排列容器中的组件,适合只在某一平台运行的程序采用;
//JMenuItemexitItem=new JMenuItem("系统退出");
filemenu.add(openfileItem);
习题答案8-Java面向对象程序设计(第3版)-赵生慧-清华大学出版社
第八章【练习8.1】1.A2.A3.B4. 组件是GUI程序的基本组成元素,任何一个GUI就是由若干组件对象构成的。
Swing是在AWT基础之上构建的一套新的Java图形界面库,其不再依赖操作系统的本地代码而是自己负责绘制组件的外观,因此也被称为轻量级(Light-weight)组件,这是它与AWT组件的最大区别。
Swing中几乎所有的类都直接或间接继承自AWT中的类,另一方面,Swing的事件模型也是完全基于AWT的,因此,AWT和Swing并非两套彼此独立的Java图形库。
5. 容器组件指那些能够“容纳”组件的特殊组件,如窗口、面板、对话框等。
容器可以嵌套,即容器中又包含容器。
Swing提供的常用容器组件有窗口、面板、可滚动面板、分割面板、分页面板等。
6.①顶层容器:指GUI程序中位于“最上层”的容器,其不能被包含到别的容器中,如窗口、对话框等。
②非顶层容器:位于顶层容器之下的容器,如面板、内部窗口等。
7. JLabel(标签)用于显示文字或图片,不能接受用户的输入。
JTextField (文本框) 可以接受用户输入或编辑单行文本。
JTextArea(文本区) 接受用户输入或编辑多行文本。
JPasswordField(密码输入框) 是JTextField 的子类,两者的主要区别是JPasswordField 不会显示出用户输入的内容,而只会显示出程序指定的一个固定字符,比如'*'。
8. 将多个单选按钮加入到同一个ButtonGroup群组对象中构成一组,保证该组按钮任一时刻只能有一个单选按钮被选中。
【练习8.2】1.C2.D3.D4.D5.//BasicSwingComponent.java1 import java.awt.FlowLayout;2 import java.awt.event.ItemEvent;3 import java.awt.event.ItemListener;45 import javax.swing.JButton;6 import javax.swing.JCheckBox;7 import javax.swing.JComboBox;8 import javax.swing.JFrame;9 import javax.swing.JLabel;10 import javax.swing.JList;11 import javax.swing.JPanel;12 import javax.swing.JPasswordField;13 import javax.swing.JRadioButton;14 import javax.swing.JScrollPane;15 import javax.swing.JTextArea;16 import javax.swing.JTextField;1718 public class BasicSwingComponent {1920 public static void main(String[] args) {21 JFrame win = new JFrame("JFrame");22 win.setSize(300, 300);23 win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);24 win.setLayout(new FlowLayout());2526 JPanel jp1 = new JPanel();27 JPanel jp4 = new JPanel();28 JLabel label1 = new JLabel("用户名:");29 jp1.add(label1);30 JTextField textField = new JTextField(10);31 jp1.add(textField);32 jp4.add(new JLabel("口令:"));33 JPasswordField pfd = new JPasswordField(10);34 pfd.setEchoChar('*');35 jp4.add(pfd);3637 JPanel panel2 = new JPanel();38 JLabel label12 = new JLabel("性别:");39 panel2.add(label12);40 JRadioButton radio = new JRadioButton("男");41 radio.setSelected(true);42 panel2.add(radio);43 JRadioButton radio2 = new JRadioButton("女");44 panel2.add(radio2);4546 JPanel panel3 = new JPanel();47 JLabel label3 = new JLabel("爱好:");48 panel3.add(label3);49 JCheckBox check = new JCheckBox("运行");50 panel3.add(check);51 JCheckBox check2 = new JCheckBox("音乐");52 check2.setSelected(true);53 panel3.add(check2);54 JCheckBox check3 = new JCheckBox("网络");55 panel3.add(check3);5657 JPanel panel4 = new JPanel();58 JLabel label4 = new JLabel("JComboBox:");59 panel4.add(label4);60 String[] majors = { "软件工程", "计算机", "物联网", "大数据" };61 JComboBox cbxMajor = new JComboBox(majors);62 cbxMajor.addItemListener(new ItemListener() {6364 @Override65 public void itemStateChanged(ItemEvent e) {66 String selection=(String)e.getItem();//获取选择项67 if(e.getStateChange()==ItemEvent.SELECTED )68 System.out.println(selection);6970 }});71 panel4.add(cbxMajor);7273 JPanel panel5 = new JPanel();74 panel5.add(new JLabel("JList:"));75 JList lst = new JList(majors);76 panel5.add(lst);7778 JTextArea ta = new JTextArea();79 ta.setText("此处为简介 \n第二行\n第三行\n第四行");80 ta.setRows(3);81 ta.setColumns(10);82 JScrollPane scp = new JScrollPane(ta);8384 JPanel panel6 = new JPanel();85 JButton button = new JButton("提交");86 panel6.add(button);8788 win.add(jp1);89 win.add(jp4);90 win.add(panel2);91 win.add(panel3);92 win.add(scp);93 win.add(panel6);9495 win.setVisible(true);96 }97 }【练习8.3】1. D2. A3.①事件源(Event Source):事件的产生者或来源。
Java语言程序设计第九版第八章答案
Chapter 8 Objects and Classes1.See the section "Defining Classes for Objects."2.The syntax to define a classis public class ClassName {}3.The syntax to declare a reference variable foran object isClassName v;4.The syntax to create an object isnew ClassName();5.Constructors are special kinds of methods that arecalled when creating an object using the new operator.Constructors do not have a return type—not even void.6. A class has a default constructor only if theclass does not define any constructor.7.The member access operator is used to access adata field or invoke a method from an object.8.An anonymous object is the one that does not havea reference variable referencing it.9. A NullPointerException occurs when a null referencevariable is used to access the members of an object.10.An array is an object. The default value for theelements of an array is 0 for numeric, false for boolean,‘ u0000’ for char, null for object element type.11.(a) There is such constructor ShowErrors(int) in theShowErrors class.The ShowErrors class in the book has a defaultconstructor. It is actually same aspublic class ShowErrors {public static void main(String[] args) {ShowErrors t = new ShowErrors(5);}public ShowErrors () {}}On Line 3, new ShowErrors(5) attempts to create aninstance using a constructor ShowErrors(int), but theShowErrors class does not have such a constructor.That is an error.(b) x() is not a method in the ShowErrors class.The ShowErrors class in the book has a defaultconstructor. It is actually same aspublic class ShowErrors {public static void main(String[] args) {ShowErrors t = new ShowErrors();t.x();}public ShowErrors () {}}On Line 4, t.x() is invoked, but the ShowErrors classdoes not have the method named x(). That is an error.(c)The program compiles fine, but it has aruntime error because variable c is null when theprintln statement is executed.(d)new C(5.0) does not match any constructors in classC. The program has a compilation error because classC does not have a constructor with a double argument.12.The program does not compile because new A() is used inclass Test, but class A does not have a defaultconstructor. See the second NOTE in the Section,“Constructors.”13.falsee the Date’s no -arg constructor to create a Date forthe current time. Use the Date’s toString() method to display a string representation for the Date.15. Use the JFrame ’s no -arg constructor to create JFrame. Use thesetTitle(String) method a set a title and use the setVisible(true)method to display the frame.16.Date is in java.util. JFrame and JOptionPane are injavax.swing. System and Math are in ng.17.System.out.println(f.i);Answer: CorrectSystem.out.println(f.s);Answer: Correctf.imethod();Answer: Correctf.smethod();Answer: CorrectSystem.out.println(F.i);Answer: IncorrectSystem.out.println(F.s);Answer: CorrectF.imethod();Answer: IncorrectF.smethod();Answer: Correct18.Add static in the main method and in the factorialmethod because these two methods don ’t need referenceany instance objects or invoke any instance methods in theTest class.19. You cannot invoke an instance method or reference aninstance variable from a static method. You can invoke astatic method or reference a static variable from aninstance method? c is an instance variable, which cannot beaccessed from the static context in method2.20.Accessor method is for retrieving private data value andmutator method is for changing private data value. The namingconvention for accessor method is getDataFieldName() for non-boolean values and isDataFieldName() for boolean values. Thenaming convention for mutator method is setDataFieldName(value).21.Two benefits: (1) for protecting data and (2) for easyto maintain the class.22.Not a problem. Though radius is private,myCircle.radius is used inside the Circle class. Thus, itis fine.23.Java uses “pass by value ” to pass parameters to amethod. When passing a variable of a primitive type to amethod, the variable remains unchanged after themethod finishes. However, when passing a variable of areference type to a method, any changes to the objectreferenced by the variable inside the method arepermanent changes to the object referenced by thevariable outside of the method. Both the actualparameter and the formal parameter variables referenceto the same object.The output of the program is as follows:count 101times 024.Remark: The reference value of circle1 is passed to xand the reference value of circle2 is passed to y. The contents ofthe objects are not swapped in the swap1 method. circle1 andcircle2 are not swapped. To actually swap the contents of these objects, replace the following three linesCircle temp = x;x=y;y=temp;bydouble temp = x.radius;x.radius = y.radius;y.radius = temp;as in swap2.25. a. a[0] = 1 a[1] = 2 b.a[0] = 2 a[1] = 1c. e1 = 2 e2 = 1d. t1 ’s i = 2 t1t2 ’s i = 2 t2’s j = 1’s j = 126.(a) null(b)1234567(c)7654321(d)123456727.(Line 4 prints null since dates[0] is null. Line 5 causes a NullPointerException since it invokes toString() method from the null reference.)。
Java程序设计 第8章习题参考答案[2页]
第8章习题参考答案一、简答题1.实现类的继承是通过哪个关键字实现的?使用extends 和implements 这两个关键字来实现继承,而且所有的类都是继承于ng.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在ng 包中,所以不需要import祖先类。
在Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends 只能继承一个类。
2.Java能实现多继承关系吗?如何解决这个问题?在Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends 只能继承一个类。
使用implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口,接口跟接口之间采用逗号分隔。
3.如果父类和子类同时提供了同名方法,在类实例化后,调用的是哪个类的方法?采用什么办法避免混淆?子类。
通过super 与this 关键字区别父类和子类。
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用,表示当前正在调用此方法的对象引用。
4.什么是抽象类?抽象类和普通类有什么不同?抽象类是指类中含有抽象方法的类,抽象类和普通类区别是:1、和普通类比较起来,抽象类它不可以被实例化,这个区别还是非常明显的。
2、抽象类能够有构造函数,被继承的时候,子类就一定要继承父类的一个构造方法,但是,抽象方法不可以被声明成静态。
3、在抽象类当中,可以允许普通方法有主体,抽象方法只需要申明,不需要实现。
4、含有抽象方法的类,必须要申明为抽象类。
5、抽象的子类必须要实现抽象类当中的所有抽象方法,否则的话,这个子类也是抽象类。
6、抽象类它一定要有abstract关键词修饰。
《Java语言程序设计-基础篇》答案-第08章
8.19 答: (a) 输出结果如下:
j is 3 i is 1 (b) 输出结果如下: i is 0 j is 4 i is 5 j is 4
8.20 答:(略)
8.21 答:结果是
z对 z错 z对 z对 z错 z错 z对 z错 z错
网 案 答 后 课
a 改为:return super.findArea() * length; hd 8.4 答:(略),自行查阅课本。 .k 8.5 答:每个类均有。
w 从公共父类 ng.Object 继承而来。 ww 创建对象后可以通过对象引用直接调用它们。 网 8.6 答:输出结果如下:
B’s constructor is invoked
1
7
网
案 8.12 答:无修饰符(包作用域)。说明:该题应为“应该在一个类的成员前面……”。
答 8.13 答:protected 修饰符。说明:该题应为“应该在一个类的成员前面……”。
后 8.14 答:类 B 能正常编译。 课 8.15 答:?处应该 protected,当然 public 是一定可以的。
案 A’s constructor is invoked 答 调用 new A(3)时,会调用 Object 的无参构造方法。 后 8.7 答:结果如下: 课 对(a)中的类 Circle,Test 类主方法输出 false;
对(b)中的类 Circle,Test 类主方法输出 false;
原因:
(a)中的 equals 方法,由于参数类型与其父类 Object 的 equals 方法 不同,所以没有形成覆盖,则在 Test 类方法中调用的是父类 Object 的 equals 方法,因此不能正确比较 2 个圆对象是否相等地。 (b)中的 equals 方法,形成了对父类 Object 的 equals 方法的覆盖, 则在 Test 类方法中调用的是子类 Circle 的 equals 方法,因此能正 确比较。
《JAVA大学实用教程》(第四版)课后习题答案
《JAVA大学实用教程》(第四版)课后习题答案第一章Java 语言概述2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗?答:不正确3.j ava 应用程序的主类必须含有怎样的方法?答:含有main 方法4。
“java 应用程序必须有一个类是public 类”这句话正确吗?答;不正确,只能有一个public 类5。
“java Applet 程序的主类必须是public 类”这句话正确吗?答:正确,因为java Applet 主类必须是Applet 类的子类并且是public 的类6。
请叙述java 源程序的命名规则。
答:与public 的类同名。
7。
源文件生成的字节码文件在运行时都加载到内存中吗?答:非也,动态随需要运行才加载。
8.面向对象的程序设计语言有那些基本特征?答:封装;继承;多态性。
9.在Java 程序中有多个类文件时,用Java 命令应该运行那个类?答:具有main 方法的类第二章基本数据类型和数组4。
下列哪些语句是错的?Int x=120;Byte b=120;b=x;答:B=x;错应为b=(byte)x5。
下列哪些语句是错的?答:y=d;错,应y=(float)d6。
下列两个语句是等价的吗?Char x=97;Char x=‘a’;答:是等价的。
7。
下列system.out.printf 语句输出结果是什么?Int a=97;Byte b1=(byte)128;Byte b2=(byte)(-129);System.out.printf(“%c,%d,%d”,a,b1,b2);如果输出语句改为:System.out.printf(“%d,%d,%d”,a,b1,b2);输出什么?答:输出a ,-128,127修改后输出97,-128,1278.数组是基本数据类型吗?怎样获取数组的长度?答:不是基本数据类型,是复合数据类型。
可以通过:数组名.length 的方法获得数组长度9。
自考Java语言程序设计(一)第八章Java异常处理及输入输出流简介课后习题
自考Java语言程序设计(一)第八章Java异常处理及输入输出流简介课后习题
八、Java异常处理及输入输出流简介
17.编写一个程序,在当前目录下创建一个子目录test,在这个新创建的子目录下创建一个文件,并把这个文件设置成只读。
18.位置指针的作用是什么?RandomAccessFile类提供了哪些方法实现对指针的控制?
19.编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他符号的字符数。
throw new Exception();
}
catch(Exception e)
{
System.out.println("catch3");
}
finally
{
System.out.println("final
说明:自定义异常类,关键是选择继承的超类——必须是Exception或者其子类。用异常代表错误,而不要再使用方法返回值。
}
finally
{ System.out.println("执行d Finally"); }
}
}
7.答:无论是出于何种原因,只要执行离开try/catch代码块,就会执行finally代码块。即无论try是否正常结束,都会执行 finally定义的最后的代码。如果try代码块中的任何代码或它的任何catch语句从方法返回,也会执行finally代码块。但本题中在try代 码块中执行了“System.exit(0);”语句,执行了这一语句后,Java虚拟机(JVM)将被终止。那么finally语句块一定不会被执行。
Java EE 开发技术智慧树知到课后章节答案2023年下武昌理工学院
Java EE 开发技术智慧树知到课后章节答案2023年下武昌理工学院武昌理工学院第一章测试1.Apache Tomcat服务器默认使用的通信端口是()。
答案:80802.下面选项中,不是由包java.sql提供的接口是()。
答案:DriverManager3.定义一个Maven依赖坐标,通常需要定义()个值。
答案:34.Java应用于嵌入式开发,指的是()。
答案:Java ME5.Java程序或者Web程序以JDBC方式访问数据库时,可以不使用由数据库厂商提供的驱动包。
()答案:错6.使用Maven能方便地管理Java项目或Java Web项目的依赖包。
()答案:对7.在Java Web中,通常选用Tomcat作为Web服务器。
()答案:对8.使用JDBC提供的Statement接口能实现对数据库的参数式查询。
()答案:错9.IDEA内置了Maven。
()答案:对第二章测试1.page指令的()属性用于引入需要的包或类。
答案:import2.JSP内置对象(),提供了重定向方法sendRedirect()。
答案:response3.会话跟踪所使用的JSP内置对象是()。
答案:session4.JSP表达式用法<%=exp%>,可以通过使用内置对象()的方法println()实现。
答案:out5.JSP页面调试,必须有Web服务器环境。
()答案:对6.JSP页面不能包含HTML标签和JavaScript脚本。
()答案:错7.使用动作标签<jsp:forward>会产生新的请求对象。
()答案:错8.EL表达式简化了对JSP内置对象属性的访问,通常配合JSTL标签来使用。
()答案:对9.JSP文件包含指令标签必须使用file属性。
()答案:对10.若表单提交的数据含有中文,则在接收之前,应使用JSP内置对象request的方法setChraracterEncoding()设置字符编码,以避免显示或写入数据库时出现中文乱码。
Java语言程序设计郑莉第八章课后习地的题目详解
Java语言程序设计第八章课后习题答案1.进程和线程有何区别,Java是如何实现多线程的。
答:区别:一个程序至少有一个进程,一个进程至少有一个线程;线程的划分尺度小于进程;进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
Java程序一般是继承Thread 类或者实现 Runnable接口,从而实现多线程。
2.简述线程的生命周期,重点注意线程阻塞的几种情况,以及如何重回就绪状态。
答:线程的声明周期:新建-就绪-(阻塞)-运行--死亡线程阻塞的情况:休眠、进入对象wait池等待、进入对象lock池等待;休眠时间到回到就绪状态;在wait池中获得notify()进入lock池,然后获得锁棋标进入就绪状态。
3.随便选择两个城市作为预选旅游目标。
实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决定去哪个城市。
分别用Runnable接口和Thread类实现。
(注:两个类,相同一个测试类)//Runnable接口实现的线程runable类public class runnable implements Runnable {private String city;public runnable() {}public runnable(String city) {this.city = city;}public void run() {for (int i = 0; i < 10; i++) {System.out.println(city);try {//休眠1000毫秒。
Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}// Thread类实现的线程thread类public class runnable extends Thread {private String city;public runnable() {}public runnable(String city) {this.city = city;}public void run() {for (int i = 0; i < 10; i++) {System.out.println(city);try {//休眠1000毫秒。
Java程序设计(华东交通大学)智慧树知到课后章节答案2023年下华东交通大学
Java程序设计(华东交通大学)智慧树知到课后章节答案2023年下华东交通大学华东交通大学第一章测试1.编译和运行以下代码的结果为:public class MyMain{public static void main(String argv){System.out.println("Hello cruel world");}}答案:编译无错,但运行时指示找不到main方法2.以下哪个是Java应用程序入口的main方法头?答案:public static void main(String a[])3.编译Java源程序文件将产生相应的字节码文件,字节码文件的扩展名为?class4.main方法是Java Application程序执行的入口点,关于main方法的方法头合法的有?答案:public static void main(String arg[ ]);public static void main(String[ ] args)5.每个源程序文件中只能定义一个类。
答案:错第二章测试1.在Java中,十进制数16的十六进制表示格式是?答案:0x102.要产生[10,100]之间的随机整数使用哪个表达式?10+(int)(Math.random()*91)3.下列符号中不能作为Java标识符的是?答案:45six4.下面各项中定义变量及赋值不正确的是?答案:float f = 45.0;5.执行以下代码段后, x, a,和 b的值为?int x, a = 6, b = 7;x = a++ + b++;答案:x= 13, a=7, b=86.下列哪个不是Java的保留字?答案:cin7.哪些赋值是合法的?答案:float f = -412;;long test = 012; ;double d = 0x12345678;8.下列代码中,将引入编译错误的行是1 public class Exercise{2 public static void main(String args[]){3 float f = 0.0 ;4 f = f + 1.0 ;5 }6 }答案:第3行;第4行9.下列哪些是合法标识符?答案:$persons ;TwoUsers10.下列哪些是java中有效的整数表示形式?答案:022;22;0x22第三章测试1.如何更改break语句使退出inner和middle循环,继续外循环的下一轮?outer: for (int x = 0; x < 3; x++) {middle: for (int y = 0; y < 3; y++) {inner: for (int z = 0; z < 3; z++) {if (arr(x, y, z) == targetValue)break;}}}答案:break middle;2.以下程序的输出结果为?public class Test {public static void main(String args[]) {for ( int k = 0; k < 3; k++)System.out.print("k");}}答案:kkk3.以下代码的调试结果为?1: public class Q102: {3: public static void main(String[] args) 4: {5: int i = 10;6: int j = 10;7: boolean b = false;8:9: if( b = i == j)10: System.out.println("True");11: else12: System.out.println("False");13: }14: }答案:输出:True4.以下代码的调试结果为?public class test {public static void main(String args[]) {int i = 1;do {i--;} while (i > 2);System.out.println(i);}}答案:5.下面的代码段执行之后count的值是什么?int count = 0;for (int i = 1; i < 4; i++) {count += i;}System.out.println(count);答案:66.以下程序的运行结果为:1. public class Conditional {2. public static void main(String args [] ) {3. int x = 4;4. System.out.println( "value is " +5. ((x > 4) ? 99.99 : 9));6. }7. }答案:输出: value is 9.07.下列程序的运行结果?public class Test {public static void main(String a[]) {int x=3,y=4,z=5;if (x>3) {if (y<2)System.out.println("show one");elseSystem.out.println("show two");}else {if (z>4)System.out.println("show three");elseSystem.out.println("show four");}}}答案:show three8.以下程序调试结果public class test {public static void main(String args[]) {int i=1, j=3;while (j>0) {j--;i++;}System.out.println(i);}}答案:49.在switch(expression)语句中,expression的数据类型不能是?答案:boolean;double10.假设a是int类型变量,并初始化为1,则下列哪个为合法的条件语句?答案:if (a<3) { } ; if (true) { }第四章测试1.以下程序运行时输入:java Cycle hello two me 2public class Cycle{public static void main(String args[]){System.out.println(args[1]);}}则运行结果为?答案:two2.public class test {public static void main(String args[]) {int m=0;for ( int k=0;k<2;k++)method(m++);System.out.println(m);}public static void method(int m) {System.out.print(m);}答案:0123.以下程序运行结果为:public class Q {public static void main(String argv[]) { int anar[]= new int[5];System.out.println(anar[0]);}}答案:4.下列程序的运行结果是:public class Test {public static void main(String args[]) {int m[]={1,2,3,4,5,6,7,8};int sum = 0;for (int i=0;i<8;i++){sum = sum + m[i];if (i==3) break;}System.out.println(sum);}}答案:105.下面定义和给数组初始化正确的是:答案:String temp [] = {''a'', ''b'', ''c''};6.在注释//Start For loop 处要插入哪段代码可以实现根据变量i的值定位访问数组ia[]的所有元素。
java语言程序设计基础篇第八章复习题答案
java语言程序设计基础篇第八章复习题答案1. 简述Java中的封装性。
答案:Java中的封装性是指将对象的数据(属性)和行为(方法)捆绑在一起,并隐藏内部实现细节,只对外提供必要的接口。
封装性通过访问修饰符(如private、public等)来实现,确保对象的属性只能被对象自身或信任的代码访问和修改,从而保护对象的状态不被外部代码随意改变。
2. 描述Java中继承的概念及其特点。
答案:Java中的继承是指一个类(子类)可以继承另一个类(父类)的属性和方法,使得子类可以复用父类的代码。
继承的特点包括代码复用、提高代码的可维护性以及创建层次结构。
子类可以扩展或修改继承自父类的行为,但Java不支持多重继承。
3. 列举Java中多态性的几种表现形式。
答案:Java中的多态性主要表现为三种形式:方法重载(编译时多态)、方法重写(运行时多态)以及接口实现。
方法重载指的是在同一个类中可以有多个同名方法,但参数列表不同。
方法重写是指子类可以提供一个与父类同名同参数的方法实现,从而覆盖父类的行为。
接口实现是指子类实现接口中声明的方法,从而表现出多态性。
4. 解释Java中的接口和抽象类的区别。
答案:Java中的接口是一种完全抽象的类,它只能包含抽象方法和常量,不能包含任何实现细节。
接口的目的是定义一个规范,让不同的类去实现这个规范。
抽象类则是一种不完整的类,它可以包含抽象方法和具体方法,用于提供一个通用的模板供其他类继承。
抽象类不能被实例化,但可以作为基类来使用。
5. 举例说明Java中异常处理的机制。
答案:Java中的异常处理机制主要通过try、catch、finally和throw关键字来实现。
try块用于包围可能抛出异常的代码,catch块用于捕获并处理异常,finally块用于执行清理工作,无论是否发生异常都会执行。
throw关键字用于手动抛出一个异常。
例如:```javatry {// 可能抛出异常的代码} catch (ExceptionType name) {// 处理异常的代码} finally {// 清理资源的代码}```6. 简述Java中垃圾回收的作用及其工作原理。
Java2实用教程(第四版)课后习题1-8章答案最终
Java2实用教程(第四版)课后习题1-8章答案最终习题一(第1章)一、问答题1.James Gosling2.需3个步骤:1)用文本编辑器编写源文件。
2)使用javac编译源文件,得到字节码文件。
3)使用解释器运行程序。
3.由类所构成,应用程序必须有一个类含有public static void main(String args[])方法,含有该方法的类称为应用程序的主类。
不一定,但最多有一个public类。
4.Path设置为:以安装的版本为例。
)ClassPath设置为:set classpath=D:\jdk\jre\lib\;.;5..java和.class6. java Bird7.独行风格(大括号独占行)和行尾风格(左大扩号在上一行行尾,右大括号独占行)二、选择题1.B。
2.D。
三、阅读程序1.(a)。
(b)两个字节码,分别是和。
(c)得到“NoSuchMethodError”,得到“NoClassDefFo undError: Xiti/class”,得到“您好,很高兴认识您nice to meet you”习题二(第2章)一、问答题1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。
标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。
false不是标识符。
2.关键字就是Java语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。
不是关键字。
class implements interface enum extends abstract。
3.boolean,char,byte,short,int,long,float,double。
4.float常量必须用F或f为后缀。
double常量用D或d为后缀,但允许省略后缀。
5.一维数组名.length。
二维数组名.length。
二、选择题1.C。
2.ADF。
3.B。
4.BE。
5.【代码2】【代码3】【代码4】【代码5】。
JavaWeb程序设计教程范立峰第8章习题答案
第8章初识Hibernate框架习题答案1.什么是ORM?答案:ORM就是对象关系映射。
其中的“O”代表的就是对象(object),“R”代表的是关系“relation”,M代表的是映射“mapping”。
其原理就是将对象与表、对象的属性与表的字段分别建立映射关系。
2.Hibernate有那些配置文件?这些配置文件都使用什么语法配置?答案:HIbernate有两个配置文件。
一个配置文件是hibernate.cfg.xml,使用XML语法来配置数据库连接等信息,或者hibernate.properties,使用‘名称’=‘值’的形式配置。
HIbernate的另一个配置文件是映射文件,用来经数据表中的字段信息映射项目中创建的持久化的属性信息。
这样才能使用HIbernate的ORM机制,操作持久化类对象属性的同时就可以对数据中的数据进行更改。
3.简述在Hibernate中使用的映射关系类型。
答案:映射关系类型如下表所示:4.Hibernate中用于开始使用Hibernate的入口配置类是什么?入口类是Configuration,该类用来读取HIbernate的配置文件并实例化SessionFactory 对象等。
该类的实例化代码如下。
使用属性文件配置HIbernate时:Configuration config=new Configuration();使用配置文件配置HIbernate时:Configuration config=new Configuration().configrue(); 5.Hibernate中的关联关系都有哪些?实体之间通过关系来相互关联,关系之间有一对一(1:1)、一对多(1:n)和多对多(n:m)的关系。
12345、删除:delete from xj_student where studentID=?;修改:update xj_student set studentName=?, birthday=? Where studentID=?;添加:insert into xj_student values(?,?,?);6、请在下面写出一个验证表单testForm的userName输入框的输入内容长度不能小于10字78逻辑思维题1、鲁道夫、菲利普、罗伯特三位青年,一个当了歌手,一个考上大学,一个加入美军陆战队,个个未来都大有作为。
java2实用教程(第三版)第八章课后习题答案(耿祥义)
第八章第1题分四个部分分别建四个Java文本(1)public class Application {public static void main(String[] args) {new MyFrame("对话框实践");}}(2)import java.awt.*;import java.awt.event.*;public class ExceptionDialog extends Dialog implements ActionListener {Button btn;public ExceptionDialog(Frame f) {super(f,"Exception!",true);btn = new Button("close");Label label = new Label("输入格式有误!",Label.CENTER);add(label,BorderLayout.CENTER);add(btn,BorderLayout.SOUTH);btn.addActionListener(this);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setVisible(false);}});pack();setLocation(500,330);setResizable(false);}public void actionPerformed(ActionEvent e) {setVisible(false);}}(3)import java.awt.*;import java.awt.event.*;public class MyDialog extends Dialog {Button yes,no;Label label;String mess = null;public MyDialog(Frame f,boolean b) {super(f,"信息提示",b);label = new Label("您输入的数字> 1000!!!是否输入?");label.setAlignment(Label.CENTER);Container con = new Container();con.setLayout(new GridLayout(1,2));yes = new Button("OK");yes.setForeground(Color.red);no = new Button("Cancle");no.setForeground(Color.red);con.add(yes);con.add(no);add(label,BorderLayout.CENTER);add(con,BorderLayout.SOUTH);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setVisible(false);}});pack();setResizable(false);setLocation(510,330);}public void setMess(String mess) {this.mess = mess;bel.setText("您输入的数字" + this.mess + " > 1000!!!是否输入?");}public String getMess() {return this.mess;}public Button getYes() {return this.yes;}public Button getNo() {return this.no;}public void setHide() {yes.setVisible(false);no.setVisible(false);}}(4)import java.awt.*;import java.awt.event.*;public class MyFrame extends Frame implements ActionListener { MyDialog modelDialog;ExceptionDialog exception;TextField num;TextArea dis;public MyFrame(String title) {super(title);modelDialog = new MyDialog(this,true);exception = new ExceptionDialog(this);num = new TextField(20);dis = new TextArea(10,10);dis.setEnabled(false);add(num,BorderLayout.NORTH);add(dis,BorderLayout.CENTER);num.addActionListener(this);modelDialog.getY es().addActionListener(this);modelDialog.getNo().addActionListener(this);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { System.exit(1);}});setVisible(true);setLocation(500,300);setResizable(false);pack();}public void actionPerformed(ActionEvent e) { Object obj = e.getSource();if(obj == this.num) {String str = this.num.getText();try {if(Integer.parseInt(str) > 1000) {modelDialog.setMess(str);modelDialog.setVisible(true);}else {dis.append(str + "\n");}}catch (NumberFormatException e1) {exception.setVisible(true);}}if(obj == this.modelDialog.getY es()) {dis.append(this.modelDialog.getMess() + "\n");modelDialog.setVisible(false);}else if(obj == this.modelDialog.getNo()) {modelDialog.setVisible(false);}num.setText(null);}}第八章第2题分四个部分分别建5个Java文本(1)public class Application {public static void main(String[] args) {new MyFrame("Dialog");}}(2)import java.awt.*;import java.awt.event.*;public class MyFrame extends Frame implements Info ,ActionListener { TextField num;TextArea info;String mess;InfoDialog infoDialog;ExceptionDialog exceptionDialog;public MyFrame(String s) {super(s);infoDialog = new InfoDialog(this);exceptionDialog = new ExceptionDialog(this);num = new TextField(30);info = new TextArea(10,30);info.setEnabled(false);num.addActionListener(this);add(num,BorderLayout.NORTH);add(info,BorderLayout.CENTER);addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(1);}});pack();setLocation(480,300);setVisible(true);setResizable(false);}public void actionPerformed(ActionEvent e) { mess = e.getActionCommand();if(mess == null) {exceptionDialog.setVisible(true);}try {if(Long.parseLong(mess) > 1000) {infoDialog.notifyDialog();}else {.append(this.mess + "\n");}}catch(NumberFormatException e1) {exceptionDialog.setVisible(true);}this.num.setText(null);}public String getMess() {return this.mess;}public void setInfo() {.append(this.mess + "\n");}}(3)public interface DisDialog {public void notifyDialog();}(4)public interface Info {public String getMess();public void setInfo();}(5)import java.awt.*;import java.awt.event.*;public class InfoDialog extends Dialog implements ActionListener { Label label;Button yes,no;Info info;public InfoDialog(Frame f) {super(f,"info",true); = (Info)f;yes = new Button("ok");yes.addActionListener(this);no = new Button("no");no.addActionListener(this);Container con = new Container();con.setLayout(new FlowLayout());con.add(yes);con.add(no);add(con,BorderLayout.SOUTH);label = new Label("",Label.CENTER);add(label,BorderLayout.CENTER);addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { setVisible(false);}});setSize(340,90);setLocation(500,330);setResizable(false);}public void actionPerformed(ActionEvent e) { Object obj = e.getSource();String str = info.getMess();this.validate();add(label,BorderLayout.CENTER);if(obj == yes) {info.setInfo();}setVisible(false);}public void notifyDialog() {bel.setText("您输入的数字" + info.getMess() + " > 1000!!!是否确认输入?");this.setVisible(true);}}。
Java语言程序设计第九版第八章答案讲课教案
Chapter 8 Objects and Classes1. See the section "Defining Classes for Objects."2. The syntax to define a class ispublic class ClassName {}3.The syntax to declare a reference variable for anobject isClassName v;4.The syntax to create an object isnew ClassName();5. Constructors are special kinds of methods that arecalled when creating an object using the new operator.Constructors do not have a return type—not even void.6. A class has a default constructor only if the classdoes not define any constructor.7. The member access operator is used to access a datafield or invoke a method from an object.8.An anonymous object is the one that does not have areference variable referencing it.9.A NullPointerException occurs when a null referencevariable is used to access the members of an object.10.An array is an object. The default value for theelements of an array is 0 for numeric, false for boolean,‘\u0000’ for char, null for object element type.11.(a) There is such constructor ShowErrors(int) in theShowErrors class.The ShowErrors class in the book has a defaultconstructor. It is actually same aspublic class ShowErrors {public static void main(String[] args) {ShowErrors t = new ShowErrors(5);}public ShowErrors () {}}On Line 3, new ShowErrors(5) attempts to create aninstance using a constructor ShowErrors(int), but theShowErrors class does not have such a constructor. That is an error.(b) x() is not a method in the ShowErrors class.The ShowErrors class in the book has a defaultconstructor. It is actually same aspublic class ShowErrors {public static void main(String[] args) {ShowErrors t = new ShowErrors();t.x();}public ShowErrors () {}}On Line 4, t.x() is invoked, but the ShowErrors classdoes not have the method named x(). That is an error.(c) The program compiles fine, but it has a runtimeerror because variable c is null when the printlnstatement is executed.(d) new C(5.0) does not match any constructors in classC. The program has a compilation error because class Cdoes not have a constructor with a double argument. 12.The program does not compile because new A() is used inclass Test, but class A does not have a defaultconstructor. See the second NOTE in the Section,“Constructors.”13.falsee the Date’s no-arg constructor to create a Date forthe current time. Use the Date’s toString() method todisplay a string representation for the Date.e the JFrame’s no-arg constructor to create JFrame.Use the setTitle(String) method a set a title and use thesetVisible(true) method to display the frame.16.Date is in java.util. JFrame and JOptionPane are injavax.swing. System and Math are in ng.17. System.out.println(f.i);Answer: CorrectSystem.out.println(f.s);Answer: Correctf.imethod();Answer: Correctf.smethod();Answer: CorrectSystem.out.println(F.i);Answer: IncorrectSystem.out.println(F.s);Answer: CorrectF.imethod();Answer: IncorrectF.smethod();Answer: Correct18. Add static in the main method and in the factorialmethod because these two methods don’t need referenceany instance objects or invoke any instance methods inthe Test class.19. You cannot invoke an instance method or reference aninstance variable from a static method. You can invoke astatic method or reference a static variable from aninstance method? c is an instance variable, which cannot be accessed from the static context in method2.20. Accessor method is for retrieving private data value and mutator method is for changing private data value. The naming convention for accessor method is getDataFieldName() for non-boolean values and isDataFieldName() for boolean values. The naming convention for mutator method is setDataFieldName(value).21.Two benefits: (1) for protecting data and (2) for easyto maintain the class.22. Not a problem. Though radius is private,myCircle.radius is used inside the Circle class. Thus, it is fine.23. Java uses “pass by value” to pass parameters to amethod. When passing a variable of a primitive type toa method, the variable remains unchanged after themethod finishes. However, when passing a variable of areference type to a method, any changes to the objectreferenced by the variable inside the method arepermanent changes to the object referenced by thevariable outside of the method. Both the actualparameter and the formal parameter variables referenceto the same object.The output of the program is as follows:count 101times 024.Remark: The reference value of circle1 is passed to x andthe reference value of circle2 is passed to y. The contents ofthe objects are not swapped in the swap1 method. circle1 andcircle2 are not swapped. To actually swap the contents of these objects, replace the following three linesCircle temp = x;x =y;y =temp;bydouble temp = x.radius;x.radius = y.radius;y.radius = temp;as in swap2.25. a. a[0] = 1 a[1] = 2b. a[0] = 2 a[1] = 1c. e1 = 2 e2 = 1d. t1’s i = 2 t1’s j = 1t2’s i = 2 t2’s j = 126. (a) null(b) 1234567(c) 7654321(d) 123456727. (Line 4 prints null since dates[0] is null. Line 5 causes a NullPointerException since it invokes toString() method from the null reference.)。
JAVA第八章课后习题解答
sb.append('\n'); }
} catch (Exception e) { e.printStackTrace(); } //显示 System.out.println(sb.toString()); } public void copy(){ try { FileWriter fw=new FileWriter(fileCopy); BufferedWriter bw=new BufferedWriter(fw); //写数据流 bw.write(sb.toString(),0,sb.toString().length()); bw.flush(); } catch (Exception e) { e.printStackTrace(); } } //test public static void main(String[] args){ FileDisplayAndCopy fda=new FileDisplayAndCopy("d:\\a.txt","d:\\b.txt"); fda.display(); fda.copy(); } } 【8】建立一个文本文件,输入一段短文,编写一个程序,统计文件中字符的个数,并将结 果写入另一个文件 [解答]: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; /** * 统计文件中字符的个数,并将结果写入另一个文件 */ public class FileCharCounter {
数据可以是未经加工的原始二进制数据也可以是经一定编码处理后符合某种格式规定的特定数据java据流有字节流和字符流之分
java语言程序设计第八章第十一题参考答案-推荐下载
this.e=e; this.f=f; } int getA(){ return a; } int getB(){ return b; } int getC(){ return c; } int getD(){ return d; } int getE(){ return e; } int getF(){ return f; } boolean isSolvable(){
} }
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a) Input Stream
1) CharArrayReader:与ByteArrayInputStream对应
2) StringReader:与StringBufferInputStream对应
3) FileReader:与FileInputStream对应
【2】描述java.io包中输入/输出流的类层次结构。
[解答]:
以字节为导向的stream
基类是InputStream和OutputSteam
stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Outputstream)都包括两种类型:
public FileCharCounter(String dec, String src) {
this.fileDec = new File(dec);
this.src = src;
}
/**
*统计数目
* @return
*/
public int count() {
try {
sb = new StringBuffer("");
/**
*计算Fibonacii数列的前20项
*/
public class Fibonacii {
//数列的长度
int i = 0;
int[] f = null;
public Fibonacii(int i) {
this.i = i;
}
/**
*得到数列的函数
* @return int[]
*/
public int[] getFibonacii() {
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
/**
*文件的显示和复制
*/
public class FileDisplayAndCopy {
//复制的文件
File fileCopy;
//读取的文件名
String filename="";
}
}
/**
*保存入文件
* @param name
*/
public void saveToFile(String name) {
try {
File file = new File(name);
FileOutputStream fo = new FileOutputStream(file);
//换行
int l = '\n';
FileCharCounter fda=new FileCharCounter("d:\\a.txt","d:\\b.txt");
System.out.println(fda.count());
fda.writeTo();
}
}
【9】建立一个文本文件,输入学生3门课的成绩,编写一个程序,读入这个文件中的数据,输出每门课的成绩的最小值,最大值和平均值。
4) PipedReader:与PipedInputStream对应
b) Out Stream
1) CharArrayWrite:与ByteArrayOutputStream对应
2) StringWrite:无与之对应的以字节为导向的stream
3) FileWrite:与FileOutputStream对应
//写数据流
String c=String.valueOf(count());
bw.write(c);
bw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
//test
public static void main(String[] args){
import java.io.FileReader;
import java.io.FileWriter;
/**
*统计文件中字符的个数,并将结果写入另一个文件
*/
public class FileCharCounter {
//源文件和目的文件
File fileDec;
String src;
StringBuffer sb = new StringBuffer("");
System.out.println(fb20[i]);
}
fb.saveToFile("D:\\a.dat");
}
}
【7】利用文件输入/输出流类编程实现一个信函文件的显示与复制
[解答]:
import java.io.BufferedReader;
import java.io.BufferedWriter;
(3)对文件及目录进行操作
【6】计算Fibonacii数列,a1=1,a2=1...an=an-1+an-2即前两个数是1,从3个数开始,每个数是前两个数的和,计算数列的前20项,并用字节文件流的方式输出到一个文件,要求每5项1行。
[解答]:
import java.io.File;
import java.io.FileOutputStream;
第8章 输入/输出流
【1】简述java流的概念、特点、及表示
[解答]:Java的流是一个比文件所包含范围更广的概念。流是一个可被顺序访问的数据序列,是对计算机输入数据和输出数据的抽象。
Java中的流是用类来表示。#
Java流的特点:数据可以是未经加工的原始二进制数据,也可以是经一定编码处理后
符合某种格式规定的特定数据,java中的数据流有字节流和字符流之分。
if (i < 2) {
return new int[] { 1, 1 };
} else {
f = new int[i];
//给数列赋初值
f[0] = 1;
f[1] = 1;
for (int k = 2; k < i; k++) {
f[k] = f[k - 1] + f[k - 2];
}
return f;
[解答]:
成绩.txt文件
id#000001 e#98 m#76 p#76
id#000002 e#54 m#74 p#76
id#000003 e#98 m#73 p#78
id#000004 e#98 m#77 p#76
id#000005 e#92 m#45 p#76
id#000006 e#94 m#33 p#74
id#000007 e#98 m#88 p#76
id#000008 e#96 m#34 p#76
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString().length();
}
/**
*写文件
*/
public void writeTo(){
try {
FileWriter fw=new FileWriter(fileDec);
BufferedWriter bw=new BufferedWriter(fw);
}
public void copy(){
try {
FileWriter fw=new FileWriter(fileCopy);
BufferedWriter bw=new BufferedWriter(fw);
//写数据流
bw.write(sb.toString(),0,sb.toString().length());
4) PipedWrite:与PipedOutputStream对应
以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同,只是在操作时的导向不同。
【3】说明输入流,输出流的概念及作用。如何实现输入和输出流类的读写方法的传递。
[解答]:就流的运行方向来说,流分为输入流和输出流,输入流将外部数据引入计算机。输出流是交数据引导到外部设备。
4) PipedInputStream:实现了pipe的概念,主要在线程中使用
b) Out stream
1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中
2) FileOutputStream:把信息存入文件中
3) PipedOutputStream:实现了pipe的概念,主要在线程中使用
a) input stream:
1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用
2) StringBufferInputStream:把一个String对象作为InputStream
3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作
bw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
//test
public static void main(String[] args){
FileDisplayAndCopy fda=new FileDisplayAndCopy("d:\\a.txt","d:\\b.txt");
//用来存放数据的StringBuffer;
StringBuffer sb=new StringBuffer("");