版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.1 指出JAVA语言的主要特点和JAVA程序的执行过程。答:(1)强类型;(2)编译和解释;(3)自动无用内存回收功能;(4)面向对象;(5)与平台无关;(6)安全性;(7)分布式计算;(8)多线程;程序执行过程如图所示:编写源文件,编译器编译源文件转换成字节码,解释器执行字节码。1.2 说出开发与运行JAVA程序的重要步骤。答:(1)编写源文件:使用一个文本编译器,如Edit或记事本,不可以使用Word.将编好的源文件保存起来,源文件的扩展名必须是.java; (2)编译Java源文件:使用Java编译器(javac.exe)编译源文件得到字节码文件; (3)运行Java程序:Java程
2、序分为两类Java应用程序必须通过Java解释器(java.exe)来解释执行其字节码文件;Java小应用程序必须通过支持Java标准的浏览器来解释执行。1.3 如何区分应用程序和小应用程序? 答:应用程序在与源文件名字相同的类中,有main()方法,该方法代表应用程序的入口; 小应用程序必须有一个Applet类的子类,该类称作主类,必须用public修饰。1.4 说出JAVA源文件的命名规则。答:源文件命名规则和类命名规则一样,所有的单词首字母都用大写字母,且必须和源文件的public类同名。1.6 JAVA语言使用什么字符集?共有多少个不同的字符? 答:Java语言使用Unicode字符集
3、,共有65535个字符。 1.7 JAVA语言标识符的命名规则是什么?(1)由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字字符组成(2)限定标识符的第一个字符不能是数字字符(3)不能和关键字重名(4)长度不能超过255个字符1.8 JAVA有那些基本数据类型,它们的常量又是如何书写的?数据类型关键字字节数默认值常量举例范围逻辑类型布尔型boolean1falsefalse,truefalse,true 字符型char20a,我,0 65535 整数类型字节性byte1012,13,45-128 127 短整型short2012,13,45-32768 32767整型in
4、t8012,13,45-2E31 2E31-1长整型long80L12L,13L,45L-2E63 2E63-1浮点类型单精度浮点float40F12.345F,6.7891F-10E38 -10E-3810E-38 10E38双精度浮点double80D12.345D,6.7891D-10E308 -10E-30810E-308 10E3081.9 指出下列内容哪些是JAVA语言的整型常量,哪些是浮点数类型常量,哪些两者都不是。整型常量: 4)0xABCL,8)003,10)077,12)056L浮点数类型常量:3)-1E-31,5).32E31 13)0.,14).0两者都不是: 1),2
5、),6),7),9),11)第二章 运算和语句2.1 Java的字符能参加算术运算吗?可以。(1)字符与整型数据运算,结果为整型数据,只能赋给整型变量,如果附给字符型变量会损失精度,需要强制类型装换; (2)字符与字符运算,结果为字符型数据,可以直接赋给字符型或整型变量。2.2 占字节多的变量能直接赋值给占字节少的变量么? 答:不能直接赋值,需要强制类型转换。2.3 试用Java语言表达式描述以下数学计算式或逻辑条件:1)解:V = (4.0/3)*Math.PI*Math.pow(r,3);2)解:R = 1.0 / (1.0/R1+1.0/R2);3)解:y = Math.pow(x,5)
6、 + Math.pow(x,3) + 6;4)解:F = 1.0 * M1 * M2 / (R * R);5)解:Math.sin(x) / a * x + Math.abs( Math.cos( * x / 2) );6)0 < a <10解:a > 0 && a < 10 7) 条件 x=1 与 y=2 有且只有一个成立. 解:( x = 1 && y != 2) | (x != 1 && y = 2) 2.4 设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,变量a、b和c的值。1) 解:a=5
7、; b=16;2);解:a=5 ; c=102.6 若一个数恰好等于它的因子之和,则这个数称为“完全数”。编写程序求1000之内的所有完全数。分析:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。例如6=1+23;28=124714程序运行结果:/* author 段智敏 */public class Work2_6 public static void main(String args) String resultString = "1000以内,完全数有:" /最后结果字符串for (int i = 1; i <= 100
8、0; i+)if (isPerfectNumber(i)resultString += i + ","System.out.println(resultString);private static boolean isPerfectNumber(int number)int sum = 0;/ 因子的和String str = new String("");for (int i = 1; i < number; i+)if (number % i = 0)sum += i;str += i + "+"if (sum = numb
9、er)/ 如果因子之和,等于本身,则是完数str = str.substring(0, str.length() - 1); / 去掉字符串最后一个多余的“+”;System.out.println(number + "的因子有:" + str);return true;return false;2.7 编写输入正实数x,求平方不超过x的最大整数n,并输出。程序运行结果:第一种命令行方式输入import java.util.Scanner;/* * 编写输入正实数x,求平方不超过x的最大整数n,并输出。<BR> * 命令行方式,输入正实数,输出结果<BR&
10、gt; * author 段智敏 */ public class Work2_7_1public static void main(String args)Scanner consoleScanner = new Scanner(System.in);System.out.print("请输入正实数X:");String str = consoleScanner.next();int number = -1; trynumber = Integer.parseInt(str);catch( NumberFormatException e ) System.out.print
11、ln("输入非法字符,程序结束!");return;if (number < 1)System.out.println("输入的数不是正实数,程序结束!");elseint n = (int) (Math.sqrt(number);System.out.println("平方不超过"+number+"的最大整数,n="+n+";");第二种窗口方式输入运行结果如下图:/* * 编写输入正实数x,求平方不超过x的最大整数n,并输出。 * 弹出窗口方式 * author 段智敏 */ impo
12、rt javax.swing.JOptionPane;public class Work2_7_2private int number;public Work2_7_2()number = this.getIntegerNumber("请输入一个正实数", 1);if (number < 1)return; / 非法,程序结束int n = (int) (Math.sqrt(number);showResult("平方不超过" + number + "的最大整数nn = " + n + ";");/* * 通
13、过图形界面,得到符合规则的正整数的方法 * param message - 在弹出的对话框中,显示提示信息message * param min - 要求此数必须大于等于min */public int getIntegerNumber(String message, int min)String str = JOptionPane.showInputDialog(null, "请输入一个正整数", "提示信息",JOptionPane.INFORMATION_MESSAGE);int number = -1;trynumber = Integer.pa
14、rseInt(str); / 得到输入的正整数catch( Exception e )JOptionPane.showMessageDialog(null, "输入非数字字符n程序结束", "错误警告",JOptionPane.ERROR_MESSAGE);return -1; / 输入的不是数字字符,程序结束if (number < min)JOptionPane.showMessageDialog(null, "输入的数不符合规则,不是正整数n程序结束","错误警告", JOptionPane.ERROR
15、_MESSAGE);return -1; / 输入的数不是大于2的正整数时候,程序结束elsereturn number;/* * 弹出对话框,显示结果 * param str - 需要显示的字符串 */public void showResult(String str)JOptionPane.showMessageDialog(null, str, "输出结果",JOptionPane.INFORMATION_MESSAGE);public static void main(String args)new Work2_7_2();2.8 输入正整数n,输出由n行n列星号字
16、符组成的三角形图案。程序运行结果:源代码文件:Work2_8.java import java.util.*;/* * 输入正整数n,输出由n行n列星号字符组成的三角形图案。 * author 段智敏 */ public class Work2_8public static void main(String args)Scanner consoleScanner = new Scanner(System.in);System.out.print("请输入正整数n:");String str = consoleScanner.next();int n = -1;tryn =
17、Integer.parseInt(str);catch( NumberFormatException e )System.out.println("输入非法字符,程序结束!");return;if (n < 1)System.out.println("输入的数不是正实数,程序结束!");elsefor(int i=0;i<n;i+)for(int j=0;j<n-i-1;j+)System.out.print(" ");for(int k=0;k<i+1;k+)System.out.print("*&
18、quot;);System.out.println();2.9 设有整型变量x和y的值分别为5和110。试指出执行了以下循环语句后,变量x和y的值分别多少?1)while(x<=y) x*=2;解:x=160 ;y=110;2)dox=y/x; y=y-x;while(y>=1);解:x=18; y=0; 2.10求小于999的所有水仙花数。程序运行结果:源代码文件:Work2_10.java/* * 求小于999的所有水仙花数 * author 段智敏 */ public class Work2_10public static void main(String args) Str
19、ing resultString = new String("1000之前的所有水仙花数有:");/ 用来存结果的字符串for (int i = 100; i < 999; i+)if (isNarcissusNumber(i)resultString += " " + i;System.out.println(resultString.substring(0, resultString.length() - 1);public static boolean isNarcissusNumber(int m)/ 判断是否是水仙花数的方法int num
20、ber = m;/ 把m存起来int a = new int100;/ 用来存n每个位上的数int amount = 0;/ 表示n的位数while (m > 0)/ 通过循环得到m每个位上的数,存到数组中aamount = m % 10;m = m / 10;amount+;int sum = 0;for (int j = 0; j < amount; j+)/ 累加每位上的数的位数次方sum += Math.pow(aj, amount);if (number = sum)/ 如果累加的和等于这个数本身,则他是水仙花数,返回真return true;return false;2
21、.11 编程序解百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡。求鸡翁、鸡母和鸡雏各几何?程序运行结果:源代码文件:Work2_11.java/* * 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。<BR> * 百钱买百鸡。求鸡翁、鸡母和鸡雏各几何。<BR>* author 段智敏 */public class Work2_11public static void main(String args)for (int i = 0; i <= 100; i+)for (int j = 0; j <= 100; j+) for (int k
22、 = 0; k <= 100; k += 3) /鸡雏的个数必须使3的倍数if (5*i + 3 * j + k / 3) = 100) && (i + j + k = 100)System.out.println("鸡翁:" + i + " 鸡母:" + j + " 鸡雏:"+ k);2.12 编写程序,按下面的公式计算自然对数底e的值:e=1+1/1!+1/2!+1/3!+1/4!+./* * 按公式计算:e=1+1/1!+1/2!+1/3!+1/4!+. * author 段智敏 */public clas
23、s Work2_12public static void main(String args)int n = 1000; / 计算精度double e = 1.0;for (int i = 1; i <= n; i+)e = e + 1.0 / Work2_12.factorial(i);System.out.println("e = " + e);/* * 计算阶乘的静态方法 * param - 需要计算阶乘的数 * return - 最后结果 */static double factorial(int a)double f = 1.0;for (int j = 1;
24、 j <= a; j+)f = f * j;return f;2.13 编写程序,用如下公式计算圆周率PI的近似值:PI4-4/3+4/5-4/7+4/9-4/11.程序运行结果:源代码文件:Work2_13.java/* * 圆周率计算 * author 段智敏 */public class Work2_13public static void main(String args)int num = 1000000; / 控制计算的项数,越高,越准确System.out.println("用公式计算圆周率,n计算" + num + "项后圆周率的近似值为&q
25、uot;+ Work2_13.getPai(num);System.out.println("3.14是第" + Work2_13.getIndex(3.14) + "项,tt值为:"+ Work2_13.getPai(Work2_13.getIndex(3.14);System.out.println("3.141是第" + Work2_13.getIndex(3.141) + "项,t值为:"+ Work2_13.getPai(Work2_13.getIndex(3.141);System.out.printl
26、n("3.1415是第" + Work2_13.getIndex(3.1415) + "项,t值为:"+ Work2_13.getPai(Work2_13.getIndex(3.1415);System.out.println("3.14159是第" + Work2_13.getIndex(3.14159) + "项,t值为:"+ Work2_13.getPai(Work2_13.getIndex(3.14159);/* * 根据给出的数值,得到需要计算多少项才能得到这个数值 * * param p - 数值 *
27、return - 项数 */public static double getIndex(double p)int r = 1, num = 1000000; / 控制计算的项数,越高,越准确double i = 1.0, pai = 0.0, t = 1.0;while (r < num)pai = pai + (4.0 / i) * t;t = -t;i = i + 2;r+;if (pai >= p && pai <= (p + 0.000001)break;return r;/* * 根据给出的数,按公式进行计算圆周率 * param num - 公式项
28、数 * return 返回按公式计算出的圆周率 */public static double getPai(double num)int r = 1;double i = 1.0, pai = 0.0, t = 1.0;while (r < num)pai = pai + (4.0 / i) * t;t = -t;i = i + 2;r+; return pai; 2.14 回文整数是指正读法和反读相同的整数,编写一个程序,输入一个整数,判断他是否为回文整数。程序运行结果:import javax.swing.JOptionPane;/* * 输入整数,判断是否是回文整数 * autho
29、r 段智敏 */ public class Work2_14private int number;public Work2_14()number = getIntegerNumber("输入一个正整数n", 1);/ 要求是>=1的整数if (number < 0)return;if (isPalindrome(number)showResult("输入的正整数 “" + number + "”是回文数");elseshowResult("输入的正整数 “" + number + "”不是回文
30、数");/* * 判断是否是回文数 * param number - 需要判断的正整数 * return 是回文数返回真,否则返回假 */public boolean isPalindrome(int number)int a = new int100;int i = 0;int test = number;while (test > 0) / 把整数的各个位上的数存到数组里ai = test % 10;test = test / 10;i+;/ 累计整数位数for (int j = 0; j < i; j+)if (aj != ai - j - 1)/ 有对应不相等的,
31、肯定不是,直接跳出并附给b为falsereturn false;return true;/ 如果一直相等,则if里边的语句不能被执行b的值是true/* * 通过图形界面,得到符合规则的正整数的方法 * param message - 在弹出的对话框中,显示提示信息message * param min - 要求此数必须大于等于min * return 返回符合规则的整数 */public int getIntegerNumber(String message, int min)String str = JOptionPane.showInputDialog(null, message, &q
32、uot;提示信息",JOptionPane.INFORMATION_MESSAGE);int number = -1;trynumber = Integer.parseInt(str); / 得到输入的正整数catch( Exception e )JOptionPane.showMessageDialog(null, "输入非数字字符n程序结束", "错误警告",JOptionPane.ERROR_MESSAGE);return -1; / 输入的不是数字字符,程序结束if (number < min)JOptionPane.showMe
33、ssageDialog(null, "输入的数不符合规则,不是正整数n程序结束","错误警告", JOptionPane.ERROR_MESSAGE);return -1; / 输入的数不是大于2的正整数时候,程序结束elsereturn number;/* * 弹出对话框,显示结果 * param str - 需要显示的字符串 */public void showResult(String str)JOptionPane.showMessageDialog(null, str, "输出结果",JOptionPane.INFORMAT
34、ION_MESSAGE);public static void main(String args)new Work2_14();2.15 草地上有一堆野果,有一只猴子每天吃掉这堆野果的一半又一个,5天后刚好吃完这堆野果,求这堆野果原来共有多少个?猴子每天吃多少个野果?程序运行结果:源代码文件:Work2_15.java/* * 猴子吃苹果问题 * author 段智敏 */public class Work2_15 public static void main(String args)int i, j, test = 1;for (i = 1; i < 100000; i+)test
35、= i;for (j = 0; j < 5; j+) / 5天test = test / 2 - 1;if (test = 0) / 5天后野果子数量为0,则满足要求System.out.println("这堆野果原来共有" + i + "个");break;/ 打印出猴子每天吃野果子的个数int eat;test = i;for (j = 1; j <= 5; j+)eat = test / 2 + 1;test = test / 2 - 1;System.out.println("第" + j + "天吃&q
36、uot; + eat + "个"); 第三章 面向对象编程基础3.1 什么是面向对象技术?它有什么优点?答:面向对象技术强调在软件开发过程中面向客观世界或问题域中的事物,采用人类在认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物。面向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。3.2 面向对象程序设计与面向过程程序设计有什么区别?答:面向过程程序设计关注的是函数功能的实现;面向对象程序设计关注将函数和数据如何绑定到一个对象,通过对象的描述、对象间的关系、类的管理实现程序的功能。3.3 程序中类和对象有什么区别?答:类是一组对象共性的集
37、合。类具有行为,它描述一个对象能够做什么以及做的方法,它们是可以对这个对象进行操作的程序和过程。对象是类的一个实例,它代表一个现实物理“事件”。3.4 类变量和实例变量,以及类方法和实例方法的区别。 加载类之前创建对象之后调用方法访问权限成员变量实例变量不分配内存各个对象之间各自分配独立的内存空间 对象名.实例变量名被实例方法,构造方法访问类变量直接分配内存各个对象之间共享这段已经分配完的内存对象名.类变量名;类名.类变量名被实例方法,类方法,构造方法访问成员方法实例方法不分配入口地址共享一个入口地址对象名.实例方法名实例变量、类变量,实例方法、类方法类方法直接分配入口地
38、址共享这个入口地址对象名.类方法名;类名.类方法名类变量、类方法3.5 子类能继承超类的哪些成员变量和方法? 同包继承不同包继承(import进来的)私有(private)不继承不继承友好(缺省默认)继承不继承受保护(protected)继承继承共有(public)继承继承3.6 子类在什么情况下能隐藏超类的成员变量和方法?解:子类重载父类的成员变量、方法时候。 3.7 在子类中是否允许有一个方法和超类的方法名字相同,而类型不同?解:不允许。方法重写是指:子类中定义一个方法,并且这个方法的名字、返回类型、参数个数、和类型与从父类继承的方法完全相同。3.12 以下程序有什么错误?解:类
39、方法main()调用了类的实例变量,main方法是类方法,不能调用类的实例变量a,导致错误!3.13 声明一个复数类Complex。实现其基本功能。复数类:Complex.java/* * 复数类 * author 段智敏 */public class Complexprivate double real;/ real为实部private double image;/ image为虚部public Complex()real = Double.NaN;image = Double.NaN;/* * 构造方法 * param real - 实部 * param image - 虚部 */publ
40、ic Complex(double real, double image)this.real = real;this.image = image;/* * 取复数实部 * return - 返回复数的实部 */public double getReal()return real;/* * 设置复数的实部 * param real - 实部 */public void setReal(double real)this.real = real;/* * 取复数的虚部 * return - 返回复数的虚部 */public double getImage()return this.image;/*
41、* 设置复数的虚部 * param image - 虚部 */public void setImage(double image)this.image = image;/* * 设置实虚部 * param real - 实部 * param image - 虚部 */public void setComplex(double real, double image)this.real = real;this.image = image;/* * 返回该复数的字符串表示。 * return - 该复数的字符串表示形式。 */public String toString()if (real = Do
42、uble.NaN && image = Double.NaN)return ""elseString result = new String(this.real + (image > 0) ? "+" : "")+ (image != 0) ? this.image + "i" : "");return result;/* * 复数加法, * param val - 另一个复数 * return - 当前复数对象与参数指定的复数对象的和 */public Complex a
43、dd(Complex val)Complex result = new Complex (this.real + val.getReal(), this.image + val.getImage();return result;/* * 复数减法,当前对象减去参数对象 * param val - 另一个复数 * return - 当前复数对象与参数指定的复数对象的差 */public Complex subtract(Complex val) / ,返回,Complex result = new Complex (this.real - val.getReal(), this.image -
44、val.getImage();return result;/* * 复数乘法 * param val - 另一个复数 * return - 当前复数对象与参数指定的复数对象的积 */public Complex multiply(Complex val)Complex result = new Complex ();result.setReal(this.real * val.getReal() - this.image * val.getImage();result.setImage(this.real * val.getImage() + this.image * val.getReal(
45、);return result;/* * 复数除法 * param val - 另一个复数 * return - 当前复数对象与参数指定的复数对象的商 */public Complex divide(Complex val)Complex result = new Complex ();result.setReal(this.real * val.getReal() + this.image * val.getImage()/ (val.getReal() * val.getReal() + val.getImage() * val.getImage();result.setImage(thi
46、s.image * val.getReal() - this.real * val.getImage()/ (val.getReal() * val.getReal() + val.getImage() * val.getImage();return result;复数测试类:TestComplex.java程序运行结果:/* * 复数测试类 * author 段智敏 * */public class TestComplexpublic static void main(String args)Complex complex1 = new Complex(2, 4);Complex compl
47、ex2 = new Complex(3, -1);Complex result = new Complex();System.out.println("复数1:" + complex1.toString() + ";实部" + complex1.getReal() + ";虚部"+ complex1.getImage();System.out.println("复数2:" + complex2.toString() + ";实部" + complex2.getReal() + ";虚部
48、"+ complex2.getImage();result = complex1.add(complex2);/ 两个复数之和System.out.println("复数:" + complex1.toString() + " 与" + "复数:" + complex2.toString()+ " 之和为:" + result.toString();result = complex1.subtract(complex2);/ 两个复数之差System.out.println("复数:"
49、 + complex1.toString() + " 与" + "复数:" + complex2.toString()+ " 之差为:" + result.toString();result = complex1.multiply(complex2);/ 两个复数乘积System.out.println("复数:" + complex1.toString() + " 与" + "复数:" + complex2.toString()+ " 的乘积为:" +
50、result.toString();result = complex1.divide(complex2);/ 两个复数的商System.out.println("复数:" + complex1.toString() + " 与" + "复数:" + complex2.toString()+ " 的商为:" + result.toString();3.14 声明一个有理数类RationalNum。要求提供有理数的四则运算,以分数形式输出有理数和以浮点数形式输出有理数等方法。有理数类:RationalNumber.ja
51、va/* * 有理数类。 * author 段智敏 */class RationalNumber/* numerator分子 */int numerator;/* denominator分母 */int denominator;public RationalNumber()numerator = Integer.MIN_VALUE;denominator = Integer.MIN_VALUE;/* * 构造方法。 * param a - 分子。 * param b - 分母。 * throws Exception 分母为0异常。 */public RationalNumber(int a, int b) throws Exceptionif (b = 0)throw new Exception("发生分母为0的异常,分母不能为0");elsethis.numerator = a;this.denominator = b;/* * 得到分子部分。 * return - 返回分子部分。 */public int getNumerator()return numerator;/* * 得到分母部分。 * return - 返回分母部分。 */public int getDenominator()return denominator;/* * 设置有理数的分子,分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理标准化推进
- 外阴脓肿的护理查房
- 研究生个人实习总结报告5篇
- 客服规范管理
- 员工个人辞职申请书例文8篇
- 初中个人职业规划
- 幼儿园家长感谢信模板合集十篇
- 采购员年度工作总结范文
- 消防安全知识宣传演讲稿【10篇】
- 雪景作文课件
- 煤矿安全责任清单
- 新高处安装维护拆除作业专题培训课件
- 精神分裂症诊断与治疗课件整理
- 2023年二十中创建现代化学校自查自评报告
- JIS-G4305-2005-中文版-冷轧不锈钢板材、薄板和带材
- 中药学电子版教材
- 北师大四年级数学上册总复习课件
- 厨房清洁记录表范本模板
- 水泥稳定碎石基层施工方案完整版
- 气体灭火系统培训2
- GB/T 38228-2019呼吸防护自给闭路式氧气逃生呼吸器
评论
0/150
提交评论