Java2实用教程(第四版)
Java+2实用教程(第4版)实验指导与习题解答 - IT168文库
Java+2实用教程(第4版)实验指导与习题解答 - IT168文库上机实践1初识Java实验1 一个简单的应用程序1.相关知识点Java语言的出现是源于对独立于平台语言的需要,即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。
目前,随着网络的迅速发展,Java语言的优势越发明显,Java已经成为网络时代最重要的语言之一。
Sun公司要实现“编写一次,到处运行”(Write once,run anywhere)的目标,就必须提供相应的Java运行平台,目前Java运行平台主要分为下列3个版本。
(1)Java SE:称为Java标准版或Java 标准平台。
Java SE 提供了标准的JDK开发平台。
利用该平台可以开发 Java桌面应用程序和低端的服务器应用程序,也可以开发Java Applet 程序。
当前成熟的新的JDK版本为JDK 1.6。
(2)Java EE:称为Java企业版或Java企业平台。
使用J2EE可以构建企业级的服务应用,Java EE平台包含了Java SE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能。
(3)Java ME:称为Java微型版或Java小型平台。
Java ME是一种很小的Java运行环境,用于嵌入式的消费产品中,如移动电话、掌上电脑或其他无线设备等。
无论上述哪种Java运行平台都包括了相应的Java虚拟机(Java Virtual Machine),虚拟机负责将字节码文件(包括程序使用的类库中的字节码)加载到内存,然后采用解释方式来执行字节码文件,即根据相应硬件的机器指令翻译一句执行一句。
J2SE平台是学习掌握Java语言的最佳平台,而掌握J2SE又是进一步学习J2EE和J2ME所必需的。
2.实验目的本实验的目的是让学生掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。
3.实验要求编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,欢迎学习Java”和“We are students”。
Java2实用教程第4版第3章运算符表达式与语句(2)精品PPT课件
1.“按位与”运算 “按位与”运算符“&”是双目运算符。 2.“按位或”运算 “按位或”运算符:“|”是二目运算符。 3.“按位非”运算 “按位非”运算符:“~”是单目运算符。 4.“按位异或”运算 “按位异或”运算符:“^”是二目运算符。 注意:参与运算的是两个整型数据、结果也是整型数据。
§3.1.1 算术运算符与算术表达式
1.加减运算符: +,加减运算符是二目运算符;加减运算符的结合方向
是从左到右;加减运算符的操作元是整型或浮点型数 据,加减运算符的优先级是4级。 2.乘、除和求余运算符: *,/,% 以上运算符是二目运算符,结合方向是从左到右,乘、 除和求余运算符的操作元是整型或浮点型数据。运算 符的优先级是3级。 3.算术表达式
第 1 页1 页1 页1 页1 页14 页
§3.2 语句概述
Java里的语句可分为以下六类。
1.方法调用语句。如:System.out.println(" Hello"); 2.表达式语句 表示式尾加上分号。比如赋值语句:x=23; 3.复合语句
可以用{ }把一些语句括起来构成复合语句,如:
{ z=123+x; System.out.println("How are you");
第 1 页1 页1 页1 页1 页16 页
§3.3.1 if语句
}
4.空语句。 一个分号也是一条语句,称做空语句。 5.控制语句。控制语句分为条件分支语句、开关语句和循
环语句。
6.package语句和 import语句。它们和类、对象有关,
将在第4章讲解。
第 1 页1 页1 页1 页1 页15 页
Java2实用教程第4版第6章接口与实现精品PPT课件
1.接口声明 接口通过使用关键字interface来声明,格式:
interface 接口的名字
2.接口体
接口体中包含常量定义和方法定义两部分。
第 1 页1 页1 页1 页1 页1 页4
§6.2 实现接口
一个类通过使用关键字implements声明自己实现一个或多个 接口。
class A implements Printable,Addable
第 1 页1 页1 页1 页1 页1 页13
§6.10 应用举例
设计一个广告牌,希望所设计的广告牌可以展示许多公司的 广告词。
1.问题的分析 2.设计接口 3.设计广告牌类
例子6中除了主类(Example6_6) 外,还有Avertisemen接口及实现该 接 口 的 WhiteCloudCorp( 白 云 公 司 ) 和BlackLandCorp(黑土公司),以 及面向接口的AdvertisementBoard类 (广告牌),程序运行效果如图 6.12。
如果一个类实现了某个接口,那么这个类必须重写该接口的
所有方法。
Java提供的接口都在相应的包中,通过import语句不仅可 以引入包中的类,也可以引入包中的接口,例如:
import java.io.*;
不仅引入了java.io包中的类,也同时引入了该包中的接口。
第 1 页1 页1 页1 页1 页1 页5
第 1 页1 页1 页1 页1 页1 页3
§6.1 接口
为了克服Java单继承的缺点,Java使用了接口, 一个类可以实现多个接口。
使用关键字interface来定义一个接口。接口的 定义和类的定义很相似,分为接口的声明和接口体。
interface Printable { final int MAX=100; void add(); float sum(float x ,float y);
《java2实用教程》(第四版)课后答案 第九章-第十三章
Java作业4(第九章---第十三章)第九章3.1.1程序代码import java.awt.*;import javax.swing.event.*;import javax.swing.*;import java.awt.event.*;public class kehou31 {public static void main(String args[]) {Computer fr=new Computer();}}class Computer extends JFrame implements DocumentListener { JTextArea text1,text2;int count=1;double sum=0,aver=0;Computer() {setLayout(new FlowLayout());text1=new JTextArea(6,20);text2=new JTextArea(6,20);add(new JScrollPane(text1));add(new JScrollPane(text2));text2.setEditable(false);(text1.getDocument()).addDocumentListener(this);setSize(300,320);setVisible(true);validate();setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}public void changedUpdate(DocumentEvent e) {String s=text1.getText();String []a =s.split("[^0123456789.]+");sum=0;aver=0;for(int i=0;i<a.length;i++) {try { sum=sum+Double.parseDouble(a[i]);}catch(Exception ee) {}}count=a.length;aver=sum/count;text2.setText(null);text2.append("\n和:"+sum);text2.append("\n平均值:"+aver);}public void removeUpdate(DocumentEvent e){changedUpdate(e); }public void insertUpdate(DocumentEvent e){changedUpdate(e);}}3.1.2 运行界面3.2.1程序代码import java.awt.*;import javax.swing.event.*;import javax.swing.*;import java.awt.event.*;public class kehou932 {public static void main(String args[]) {ComputerFrame fr=new ComputerFrame();fr.setBounds(100,100,650,120);fr.setTitle("多功能计算器");fr.setBackground(Color.blue);}}class ComputerFrame extends JFrame implements ActionListener {JTextField text1,text2,text3;JButton buttonAdd,buttonSub,buttonMul,buttonDiv;JLabel label;public ComputerFrame() {setLayout(new FlowLayout());text1=new JTextField(10);text2=new JTextField(10);text3=new JTextField(10);label=new JLabel(" ",JLabel.CENTER);label.setBackground(Color.green);add(text1);add(label);add(text2);add(text3);buttonAdd=new JButton("加");buttonSub=new JButton("减");buttonMul=new JButton("乘");buttonDiv=new JButton("除");add(buttonAdd);add(buttonSub);add(buttonMul);add(buttonDiv);buttonAdd.addActionListener(this);buttonSub.addActionListener(this);buttonMul.addActionListener(this);buttonDiv.addActionListener(this);setSize(300,320);setVisible(true);validate();setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); }public void actionPerformed(ActionEvent e) {double n;if(e.getSource()==buttonAdd) {double n1,n2;try{ n1=Double.parseDouble(text1.getText()); n2=Double.parseDouble(text2.getText()); n=n1+n2;text3.setText(String.valueOf(n));label.setText("+");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}else if(e.getSource()==buttonSub) {double n1,n2;try{ n1=Double.parseDouble(text1.getText()); n2=Double.parseDouble(text2.getText()); n=n1-n2;text3.setText(String.valueOf(n));label.setText("-");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}else if(e.getSource()==buttonMul){double n1,n2;try{ n1=Double.parseDouble(text1.getText()); n2=Double.parseDouble(text2.getText()); n=n1*n2;text3.setText(String.valueOf(n));label.setText("*");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}else if(e.getSource()==buttonDiv){double n1,n2;try{ n1=Double.parseDouble(text1.getText()); n2=Double.parseDouble(text2.getText()); n=n1/n2;text3.setText(String.valueOf(n));label.setText("/");}catch(NumberFormatException ee){ text3.setText("请输入数字字符");}}validate();}}3.2.2运行界面3.3.1 程序代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class kehou933 {public static void main(String args[]){Window win = new Window();win.setTitle("使用MVC结构");win.setBounds(100,100,420,260);}}class Window extends JFrame implements ActionListener { Lader lader; //模型JTextField textAbove,textBottom,textHeight; //视图 JTextArea showArea; //视图JButton controlButton; //控制器Window() {init();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}void init() {lader = new Lader();textAbove = new JTextField(5);textBottom = new JTextField(5);textHeight = new JTextField(5);showArea = new JTextArea();controlButton=new JButton("计算面积");JPanel pNorth=new JPanel();pNorth.add(new JLabel("上底:"));pNorth.add(textAbove);pNorth.add(new JLabel("下底:"));pNorth.add(textBottom);pNorth.add(new JLabel("高:"));pNorth.add(textHeight);pNorth.add(controlButton);controlButton.addActionListener(this);add(pNorth,BorderLayout.NORTH);add(new JScrollPane(showArea),BorderLayout.CENTER);}public void actionPerformed(ActionEvent e) {try{double above = Double.parseDouble(textAbove.getText().trim());double bottom = Double.parseDouble(textBottom.getText().trim());double height = Double.parseDouble(textHeight.getText().trim());lader.setAbove(above) ;lader.setBottom(bottom);lader.setHeight(height);double area = lader.getArea();showArea.append(" 梯形的面积:"+area+"\n");}catch(Exception ex) {showArea.append("\n"+ex+"\n");}}}class Lader {double above,bottom,height;public double getArea() {double area = (above+bottom)*height/2.0;return area;}public void setAbove(double a) {above = a;}public void setBottom(double b) {bottom = b;}public void setHeight(double c) {height = c; }}3.3.2运行界面第十章4.1.1程序代码import java.io.*;public class E {public static void main(String args[]) {File f=new File("E.java");;try{ RandomAccessFile random=new RandomAccessFile(f,"rw");random.seek(0);long m=random.length();while(m>=0) {m=m-1;random.seek(m);int c=random.readByte();if(c<=255&&c>=0)System.out.print((char)c);else {m=m-1;random.seek(m);byte cc[]=new byte[2];random.readFully(cc);System.out.print(new String(cc));} }}catch(Exception exp){} }}4.1.2运行界面4.2.1程序代码import java.io.*;public class E {public static void main(String args[ ]) {File file=new File("E.java");File tempFile=new File("temp.txt");try{ FileReader inOne=new FileReader(file);BufferedReader inTwo= new BufferedReader(inOne);FileWriter tofile=new FileWriter(tempFile);BufferedWriter out= new BufferedWriter(tofile);String s=null;int i=0;s=inTwo.readLine();while(s!=null) {i++;out.write(i+" "+s);out.newLine();s=inTwo.readLine();}inOne.close();inTwo.close();out.flush();out.close();tofile.close();}catch(IOException e){}}}4.3.1程序代码import java.io.*;import java.util.*;public class kehou1043 {public static void main(String args[]) {File file = new File("a.txt");Scanner sc = null;double sum=0;int count = 0;try { sc = new Scanner(file);eDelimiter("[^0123456789.]+");while(sc.hasNext()){try{ double price = sc.nextDouble(); count++;sum = sum+price;System.out.println(price);}catch(InputMismatchException exp){String t = sc.next();}}System.out.println("平均价格:"+sum/count); }catch(Exception exp){System.out.println(exp);}}}4.3.2运行界面第十一章2.1.1程序代码import java.sql.*;import java.util.*;public class kehou1121 {public static void main(String args[]) {Query query=new Query();String dataSource="myData";String tableName="goods";Scanner read=new Scanner(System.in);System.out.print("输入数据源名:");dataSource = read.nextLine();System.out.print("输入表名:");tableName = read.nextLine();query.setDatasourceName(dataSource);query.setTableName(tableName);query.setSQL("SELECT * FROM "+tableName);query.inputQueryResult();}}class Query {String datasourceName=""; //数据源名String tableName=""; //表名String SQL; //SQL语句public Query() {try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundException e) {System.out.print(e);}}public void setDatasourceName(String s) {datasourceName = s.trim();}public void setTableName(String s) {tableName = s.trim();}public void setSQL(String SQL) {this.SQL = SQL.trim();}public void inputQueryResult() {Connection con;Statement sql;ResultSet rs;try {String uri = "jdbc:odbc:"+datasourceName;String id = "";String password = "";con = DriverManager.getConnection(uri,id,password);DatabaseMetaData metadata = con.getMetaData();ResultSet rs1 = metadata.getColumns(null,null,tableName,null);int字段个数 = 0;while(rs1.next()) {字段个数++;}sql = con.createStatement();//创建SQL语句rs = sql.executeQuery(SQL);//执行SQL语句while(rs.next()) {for(int k=1;k<=字段个数;k++) {System.out.print(" "+rs.getString(k)+" ");}System.out.println("");}con.close();}catch(SQLException e) {System.out.println("请输入正确的表名"+e);}}}2.1.2运行界面2.2.1程序代码import java.sql.*;import java.util.*;public class kehou1122 {public static void main(String args[]) {Q query = new Q();String dataSource = "myData";String tableName = "goods";query.setDatasourceName(dataSource);query.setTableName(tableName);String name = "";Scanner read=new Scanner(System.in);System.out.print("商品名:");name = read.nextLine();String str="'%["+name+"]%'";String SQL = "SELECT * FROM "+tableName+" WHERE name LIKE "+str; query.setSQL(SQL);System.out.println(tableName+"表中商品名是"+name+"的记录");query.inputQueryResult();}}class Q {String datasourceName=""; //数据源名String tableName=""; //表名String SQL; //SQL语句public Q() {try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e) {System.out.print(e);}}public void setDatasourceName(String s) {datasourceName = s.trim();}public void setTableName(String s) {tableName = s.trim();}public void setSQL(String SQL) {this.SQL = SQL.trim();}public void inputQueryResult() {Connection con;Statement sql;ResultSet rs;try {String uri = "jdbc:odbc:"+datasourceName;String id = "";String password = "";con = DriverManager.getConnection(uri,id,password);DatabaseMetaData metadata = con.getMetaData();ResultSet rs1 = metadata.getColumns(null,null,tableName,null);int字段个数 = 0;while(rs1.next()) {字段个数++;}sql = con.createStatement();rs = sql.executeQuery(SQL);while(rs.next()) {for(int k=1;k<=字段个数;k++) {System.out.print(" "+rs.getString(k)+" ");}System.out.println("");}con.close();}catch(SQLException e) {System.out.println("请输入正确的表名"+e);}}}2.2.2运行界面2.3.1程序代码import java.sql.*;import java.util.*;public class kehou1123 {public static void main(String args[]) {Q1 query = new Q1();String dataSource = "myData";String tableName = "goods";query.setDatasourceName(dataSource);query.setTableName(tableName);String SQL = "SELECT * FROM "+tableName+" ORDER BY madeTime";query.setSQL(SQL);System.out.println(tableName+"表记录按商品生产日期前后排序是: "); query.inputQueryResult();}}class Q1 {String datasourceName=""; //数据源名String tableName=""; //表名String SQL; //SQL语句public Q1() {try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException e) {System.out.print(e);}}public void setDatasourceName(String s) {datasourceName = s.trim();}public void setTableName(String s) {tableName = s.trim();}public void setSQL(String SQL) {this.SQL = SQL.trim();}public void inputQueryResult() {Connection con;Statement sql;ResultSet rs;try {String uri = "jdbc:odbc:"+datasourceName;String id = "";String password = "";con = DriverManager.getConnection(uri,id,password);DatabaseMetaData metadata = con.getMetaData();ResultSet rs1 = metadata.getColumns(null,null,tableName,null);int字段个数 = 0;while(rs1.next()) {字段个数++;}sql = con.createStatement();rs = sql.executeQuery(SQL);while(rs.next()) {for(int k=1;k<=字段个数;k++) {System.out.print(" "+rs.getString(k)+" ");}System.out.println("");}con.close();}catch(SQLException e) {System.out.println("请输入正确的表名"+e);}}}2.3.2运行界面第十二章4.1.1程序代码public class kehou1241{public static void main(String args[]) {Cinema a=new Cinema();a.zhang.start();a.sun.start();a.zhao.start();}}class TicketSeller //负责卖票的类。
Java2实用教程第4版第1章Java入门
1.3.2 安装Java SE平台
1.6 编程风格
遵守一门语言的编程风格是非常重要的,否则编 写的代码将难以阅读,给后期的维护带来诸多不 便。
1.6.1 Allmans风格
class Allmans
{
Allmans风格也称“独行” public static void main(String args[])
风格,即左、右大括号
{ int sum=0,i=0,j=0;
例1,下面Java源文件是由两个名字分别为Hello和Student的类组成。
1. public class Hello { 2. public static void main (String args[]) { 3. System.out.println("大家好!"); 4. System.out.println("Nice to meet you"); 5. Student stu = new Student(); 6. stu.speak("We are students"); 7. } 8. } 9. class Student { 10. public void speak(String s) { 11. System.out.println(s); 12. } 13. }
IT行业对Java人才的需求正在不断的增长,掌 握Java语言及其相关技术意味着拥有较好的就业前 景和工作酬金。查看各类语言排行(来自百科)1.2 Java 的特点
Java 2实用教程第4版_第12章_Java多线程机制
2017/4/23
第 16 页
§12.4 线程的常用方法
例 子 6 ( Example12_6.java , ClassRoom.java )中,有两个 线 程 : student 和 teacher, 其 中 student 准备睡一小时后再 开始上课, teacher 在输出 3 句 “上课”后,吵醒休眠的线 程student。运行效果如图12.8。
辽宁省教育软件大赛参赛作品
Java 语言程序设计
第12章 Java多线程机制
配合例子源代码一起使用
大连交通大学 软件学院
导读
主要内容
– – – – – – – – Java中的线程 Thread类与线程的创建 线程的常用方法 线程同步 协调同步的线程 线程联合 GUI线程 计时器线程
重点和难点
– 重点:多线程的概念;如何创建多线程 – 难点:理解多线程机制
2017/4/23
第 3 页
§12.1.2 进程与线程
线程是比进程更小的执行单位,一个进程在其执行过程中,可 以产生多个线程,形成多条执行线索,每条线索,即每个线程 也有它自身的产生、存在和消亡的过程。 线程间可以共享进程中的某些内存单元(包括代码与数据),线 程的中断与恢复可以更加节省系统的开销。
例子8(Example12_8.java, TicketHouse.java )模拟两个人, 张飞和李逵买电影票。售票员只 有两张五元的钱,电影票5元钱一 张。张飞拿二十元一张的人民币 排在李逵的前面买票,李逵拿一 张5元的人民币买票。因此张飞必 须等待(李逵比张飞先买了票)。 程序运行效果如图12.10。
2017/4/23
第 11 页
§12.3.2 使用Thread类例题
Java 2实用教程第4版_第5章_子类与继承
第 13 页
3.重写的注意事项
重写父类的方法时,不允许降低方法的访问权限,但可以提 高访问权限(访问限制修饰符按访问权限从高到低的排列顺序 是:public、protected、友好的、private。)
4.JDK1.5对重写的改进
在JDK1.5版本之后,允许重写方法的类型可以是父类方法 的类型的子类型,即不必完全一致(JDK1.5版本之前要求必须 一致),比如父类的方法的类型是 People ,重写方法的类型可 以是Student(假设Student是People的子类)
2015/12/6
第 28 页
class Rectangle { int length; int width; Rectangle(int len , int wid) { length = len; width = wid; } /* 计算矩形的周长.*/ void getPerimeter() { System.out.println(“矩形的周长为" + (2 * (length + width))); } }
2015/12/6
第 14 页
§5.5 super关键字
5.5.1 用super操作被隐藏的成员变量和方法
子类可以隐藏从父类继承的成员变量和方法, 如果在子类中想使用被子类隐藏的成员变量或 方法就可以使用关键字super。比如super.x、 super.play()就是访问和调用被子类隐藏的成 员变量x和方法play().
201812结合510说明开闭原则如果将510节中的pillar类geometry类以及circle和rectangle类看作是一个小的开发框架将applicationjava看作是使用该框架进行应用开发的用户程序那么框架满足开闭原则该框架相对用户的需求就比较容易维护因为当用户程序需要使用pillar创建出具有三角形底的柱体时系统只需简单的扩展框架即在框架中增加一个geometry的triangle子类而无需修改框架中的其他类如图514所示201812512应用举例用类封装手机的基本属性和功能要求手机即可以使用移动公司的ism卡也可以使用联通公司sim卡可以使用任何公司提供的sim卡mobiletelephonesimsimofchinamobilesimofchinaunicomapplication程序运行效果如图515
Java 2实用教程第4版_第9章_组件及事件处理剖析
Java 语言程序设计
第9章 组件及事件处理
配合例子源代码一起使用
大连交通大学 软件学院
导读
主要内容
−Java Swing概述 −窗口 −常用组件与布局 −处理事件 −使用MVC结构 −对话框 −发布GUI程序 −重点:Swing包中的各种组件,各种布局和事件处理器的 应用 −难点:各种事件处理器的使用
为指定的菜单栏。
12)public void validate() 使用 validate 方法会使容器再次
布置其子组件。在修改此容器的子组件的时候(在容器中 添加或移除组件,或者更改与布局相关的信息),应该调 用上述方法。
例子1用JFrame创建了两个窗口,程 序运行效果如图9.2。
2018/10/14 第 9 页
2018/10/14
第 12 页
§9.3.1 常用组件
4.标签:由JComponent的子类JLabel类用来创建标签。 – 构造函数:JLabel() ; JLabel(String text) ; JLabel(Icon image) ; – 常用方法:public String getText(); – public void setText(String t); 5.选择框:由JComponent的子类JCheckBox类用来创建选择框 – 构造函数: JCheckBox() ;JCheckBox(String text) ; – 常用方法: public void addItemListener(ItemListener l) – public void addActionListener(ActionListener l) ItemListener接口中:Object getItemSelectable()相当于getSource(); – public int getStateChange(); – 若被选中SELECTED/DESEELCTED 6.单选按钮:由JComponent的子类JRadioButton类用来创建单项选择框。 – 构造函数: JRadioButton() ; JRadioButton(String text) ; – 常用方法: public void addItemListener(ItemListener l)
java2实用教程(例子代码)第4版第九章
radio2 = new JRadioButton("女");
group.add(radio1);
group.add(radio1);
add(radio1);
add(radio2);
add(new JLable("下拉列表:"));
comBox = new JComboBox();
java2实用教程例子代码第4版第九章java代码java源代码java计算器源代码java代码生成器java小游戏源代码javamd5加密代码java连接数据库代码java代码规范
java2实用教程(例子代码)第4版第九章
例9_3
Lt4_3.java
public clss Lt4_3
{
public static void main(String args[])
JComboBox comBox;
JTextArea area;
public ComponentInWindow()
{
init();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
void init()
{
setLayout(new FlowLayout());
import javax.swing.*;
public class WindowBoxLayout extends JFrame
{
Box baseBox ,boxV1,boxV2;
public WindowBoxLayout()
Java 2实用教程第4版_第4章_类与对象
§4.2.2 类体
class Lader { float above; //梯形的上底(变量声明) “{”,“}”以及它们之间 float bottom; //梯形的下底(变量声明) 的内容称作类体,大括号之 float height; //梯形的高(变量声明) 间的内容称作类体的内容。 float area; //梯形的面积(变量声明) ◆类体的内容由两部分构: float computerArea() { //计算面积(方法) area = (above+bottom)*height/2.0f; 一部分是变量的声明,用来 return area; 刻画属性;另一部分是方法 } 的定义,用来刻画行为功能。 void setHeight(float h) { //修改高(方法) height = h; } } ◆ 类声明之后的一对大括号
§4.3 构造方法与对象的创建
类是面向对象语言中最重要的一种数据类型,那 么就可以用它来声明变量。在面向对象语言中,用类 声明的变量被称作对象。和基本数据类型不同,在用 类声明对象后,还必须要创建对象,即为声明的对象 分配变量(确定对象所具有的属性),当使用一个类创 建一个对象时,也称给出了这个类的一个实例。通俗 的讲,类是创建对象的“模板”,没有类就没有对象。 构造方法和对象的创建密切相关 。
java2实用教程第4版第4章类与对象类与对象主要内容????对象的组合???????类构造方法与对象的创建类与程序的基本结构参数传值对象的组合实例成员与类成员方法重载this关键字包import语句对象数组导读41编程语言的几个发展阶段4
注意:开始用功了!
《Java2实用教程(第4版)》 第4章
3.编程风格
(1)一行只声明一个变量。 (2)变量的名字符合标识符规定。 (3)变量名字见名知意,避免容易混淆的变量名字。
Java2实用教程第4版第4章类与对象精品PPT课件
} int add(int x,int y,int z) //有参数的方法头 { return x+y+z; } 根据程序的需要,方法返回的数据的类型可以是Java中的任何数据类型之一,当 一个方法不需要返回数据时,返回类型必须是void。参数是用逗号隔开的一些变量声明。 方法的参数可以是任意的Java数据类型。方法的名字必须符合标识符规定,在给方法命 名的习惯和给变量命名的习惯相同。
void f() { int m = 10,sum = 0; //成员变量,在整个类中有效 if(m>9) {
方法的参数在整个方法内有效,
int z = 10的局部变量从声明它的位置 之后开始有效。如果局部变量的声
z = 2*m+z; } for(int i=0;i<m;i++) {
基于对象的编程更加符合人的思维模式,使得编程人员更容易编写出易 维护、易扩展和易复用的程序代码,更重要的是,面向对象编程鼓励创造性 的程序设计。
面向对象编程主要体现下列三个特性 ◇封装性 ◇继承 ◇多态
第 1 页1 页1 页1 页1 页4 页
§4.2 类
类是Java语言中最重要的“数据类型”,类声明的变量被称 作对象(见后面的4.3节),即类是用来创建对象的模板。
以下是两个类声明的例子。 class People { … } class 植物 { … }
如:class People”和“class 植物”称作类声明;“People”和“动物”分别是 类名。
◆ 给类命名时,遵守下列编程风格(这不是语法要求的,但应当遵守): 1.如果类名使用拉丁字母,那么名字的首字母使用大写字母,如。 2.类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每
3《JAVA2实用教程》(第四版)课后答案 第七章 第八章
第 7 章习题 4.1 程序代码 import java.util.*; public class SUMANDAVERAGE {
public static void main(String[] args) { Scanner reader=new Scanner(System.in); double sum=0; int m=0; while(reader.hasNextDouble()){ double x=reader.nextDouble(); assert x>=0&&x<=100:"该数是非法的成绩数据!"; m=m+1; sum=sum+x; } System.out.printf("%d个数的和为%f\n", m,sum); System.out.printf("%d个数的平均值为%f\n",m,sum/m);
Scanner hit=new Scanner(System.in); int x=reader.nextInt(); switch(x) { case 0: break; case 1: System.out.print("请输入一个字符串:");
String s=hit.nextLine();String s2=s.toUpperCase();System.out.println("小写 字母转换成大写字母后:"+s.toUpperCase());
try{ double price=scanner.nextDouble();
sum=sum+price; System.out.println(price); } catch(InputMismatchException exp) {
Java 2实用教程第4版_第15章_泛型与集合框架
2017/4/23
第 17 页
§15.5 树集
§15.5.1 TreeSet<E>泛型类 TreeSet<E>类创建的对象称作树集。 例如 TreeSet<String> mytree=new TreeSe<String>(); 然后使用add方法为树集添加节点,例如 mytree.add("boy");
使用接口回调技术即将该对象的引用赋给collection接口变量该接口变量可以回调iterator方法获取一个iterator对象这个iterator对象存放着散列映射中所有键值对中的20176261544基于散列映射的查询对于经常需要进行查找的数据可以采用散列映射来存储这样的数据即为数据指定一个查找它的关键字然后按着健值对将关键字和数据一并存入散列映射中
2017/4/23
第 7 页
§15.2.1 LinkedList<E>泛型类
LinkedList<E>泛型类创建的对象以链表结构存储数据,习惯 上称LinkedList类创建的对象为链表对象。例如, – LinkedList<String> mylist=new LinkedList<String>(); 创建一个空双链表。 – add(E obj) 向链表依次增加节点
辽宁省教育软件大赛参赛作品
Java 语言程序设计
第15章 泛型与 集合框架
配合例子源代码一起使用
大连交通大学 软件学院
导读
主要内容
– – – – – – 泛型 链表 堆栈 散列映射 树集 树映射
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请称呼我为雷锋
12.代表调用当前方法的对象。不可以。 二、选择题 1.B。2.D。3.D。4.D。5.CD。6. 【代码 1】 【代码 4】 。7. 【代码 4】 。 三、阅读程序 1. 【代码 1】 :1, 【代码 2】 :121, 【代码 3】 :121。 2.sum=-100。 3. 27。 4. 【代码 1】:100, 【代码 2】 :20.0。 5. 上机实习题目,解答略。 6. 上机实习题目,解答略。 四、编程题 CPU.java
习题五(第 5 章)
一、问答题 1.不可以。 2.是。 3.不继承。 4.声明与父类同名的成员变量。 5.子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的子类型,重写
请称呼我为雷锋
的方法的名字、参数个数、参数的类型和父类的方法完全相同。重写方法的目的是隐藏继承 的方法,子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。 6.不可以。 7.Abstract 类。 8.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。上转型对象可以 访问子类继承或隐藏的成员变量,可以调用子类继承的方法或子类重写的实例方法。 9.通过重写方法。 10. 面向抽象编程目的是为了应对用户需求的变化, 核心是让类中每种可能的变化对应地交 给抽象类的一个子类类去负责,从而让该类的设计者不去关心具体实现。 二、选择题 1.C。2.D。3.CD。4.D。5.B。6.B。7.D。8.B。9.A。 三、阅读程序 1. 【代码 1】 :15.0。 【代码 2】 :8.0。 2. 【代码 1】 :11。 【代码 2】 :110。 3. 【代码 1】 :98.0。 【代码 2】 :12。 【代码 3】 :98.0。 【代码 4】 : 9。 4. 【代码 1】 :120。 【代码 2】 :120。 【代码 3】 :-100。 四、编程题 Animal.java
习题三(第 3 章)
一、问答题 1.boolean 2.不可以 3.boolean 4. 不是必须的 5.结束 while 语句的执行 6.可以 二、选择题
请称呼我为雷锋
1.A。 2.C。 3.C。 三、阅读程序 1.你,苹,甜 2.Jeep 好好 3.x=-5,y=-1 四、编程序题 1.public class jiecheng {
public abstract class Animal { public abstract void cry(); public abstract String getAnimalName(); }
Simulator.java
public class Simulator { public void playSound(Animal animal) { System.out.print("现在播放"+animal.getAnimalName()+"类的声音:"); animal.cry(); } }
public class CPU { int speed; int getSpeed() { return speed; } public void setSpeed(int speed) { this.speed = speed; } }
HardDisk.java
public class HardDisk { int amount; int getAmount() { return amount; } public void setAmount(int amount) { this.amount = amount; } }
习题四(第 4 章)
一、问答题 1. 封装、继承和多态。 2.当类名由几个单词复合而成时,每个单词的首字母使用大写。 3.名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第 2 个单词开始 的其它单词的首字母使用大写。 4.属性 5.行为 6.用类创建对象时。没有类型 7.用类创建对象时。 8.一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数 的个数不同,或者是参数的类型不同。可以。 9.可以。不可以。 10.不可以。 11.一个类通过使用 new 运算符可以创建多个不同的对象,不同的对象的实例变量将被分 配不同的内存空间。所有对象的类变量都分配给相同的一处内存,对象共享类变量。
请称呼我为雷锋
} System.out.println(sum); } }
6. public class Xiti6 {
public static void main(String args[]) { int n=1; long sum=0; while(true) { sum=sum+n; n++; if(sum>=8888) break; } System.out.println("满足条件的最大整数:"+(n-1)); } }
4.public class wanshu {
public static void main(String args[]) { int sum=0,i,j; for(i=1;i<=1000;i++) { for(j=1,sum=0;j<i;j++) { if(i%j==0) sum=sum+j; } if(sum==i) System.out.println("完数:"+i); } } }
PC.java
public class PC {
请称呼我为雷锋
CPU cpu; HardDisk HD; void setCPU(CPU cpu) { this.cpu = cpu; } void setHardDisk(HardDisk HD) { this.HD = HD; } void show(){ System.out.println("CPU 速度:"+cpu.getSpeed()); System.out.println("硬盘容量:"+HD.getAmount()); } }
Test.java
public class Test { public static void main(String args[]) { CPU cpu = new CPU(); HardDisk HD=new HardDisk(); cpu.setSpeed(2200); HD.setAmount(200); PC pc =new PC(); pc.setCPU(cpu); pc.setHardDisk(HD); pc.show(); } }
5.public class Xiti5 {
public static void main(String args[]) { int m=8,item=m,i=1; long sum=0; for(i=1,sum=0,item=m;i<=10;i++) { sum=sum+item; item=item*10+m;
请称呼我为雷锋
1.低住佐佑佒体佔何佖佗佘余佚佛作佝佞佟你佡 2.答案是: 234<468 我输出结果后不回车我输出结果后自动回车到下一行 x+y= 666 234432=234432 3.属于操作题,解答略。 4. 【代码 1】 :4。 【代码 2】 :b[0]=1。 5. 【代码 1】 :40。 【代码 2】 :7 四、编写程序 1. public class E {
public static void main(String args[]) { double sum=0,a=1; int i=1; while(i<=20) { sum=sum+a; i++; a=a*i; } System.out.println("sum="+sum); } }
2.public class sushu {
习题二(第 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】 。6.B。 【代码 3】 【代码 4】 【代码 5】 三、阅读或调试程序
Dog.java
public class Dog extends Animal {
请称呼我为雷锋
public void cry() { System.out.println("汪汪...汪汪"); } public String getAnimalName() { return "狗"; } }
public static void main(String args[]) { in;+) { for(i=2;i<=j/2;i++) { if(j%i==0) break; } if(i>j/2) { System.out.print(" "+j); } } } }
public static void main(String args[]) { System.out.println((int)'你'); System.out.println((int)'我'); System.out.println((int)'他'); } }