1、11.1 指出 JAVA 语言的主要特点和 JAVA 程序的执行过程。答:(1)强类型;(2)编译和解释;(3)自动无用内存回收功能;(4)面向对象;(5)与平台无关;(6)安全性;(7)分布式计算;(8)多线程;程序执行过程如图所示:编写源文件,编译器编译源文件转换成字节码,解释器执行字节码。1.2 说出开发与运行 JAVA 程序的重要步骤。答:(1)编写源文件:使用一个文本编译器,如 Edit 或记事本,不可以使用 Word.将编好的源文件保存起来,源文件的扩展名必须是.java; (2)编译 Java 源文件:使用 Java 编译器(javac.exe)编译源文件得到字节码文件; (3)
2、运行 Java 程序:Java 程序分为两类Java 应用程序必须通过 Java 解释器(java.exe)来解释执行其字节码文件;Java 小应用程序必须通过支持 Java 标准的浏览器来解释执行。1.3 如何区分应用程序和小应用程序? 答:应用程序在与源文件名字相同的类中,有 main()方法,该方法代表应用程序的入口; 小应用程序必须有一个 Applet 类的子类,该类称作主类,必须用 public 修饰。1.4 说出 JAVA 源文件的命名规则。答:源文件命名规则和类命名规则一样,所有的单词首字母都用大写字母,且必须和源文件的 public 类同名。1.6 JAVA 语言使用什么字符集
3、?共有多少个不同的字符? 答:Java 语言使用 Unicode 字符集,共有 65535 个字符。 1.7 JAVA 语言标识符的命名规则是什么?(1)由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字字符组成(2)限定标识符的第一个字符不能是数字字符(3)不能和关键字重名(4)长度不能超过 255 个字符1.8 JAVA 有那些基本数据类型,它们的常量又是如何书写的?数据类型 关键字 字节数 默认值 常量举例 范围逻辑类型 布尔型 boolean 1 false false,true false,true2字符型 char 2 0 a,我, 0 65535 字节性 byte 1
4、0 12,13,45 -128 127 短整型 short 2 0 12,13,45 -32768 32767整型 int 8 0 12,13,45 -2E31 2E31-1整数类型长整型 long 8 0L 12L,13L,45L -2E63 2E63-1单精度浮点 float 4 0F 12.345F,6.7891F -10E38 -10E-3810E-38 10E38浮点类型 双精度浮点 double 8 0D 12.345D,6.7891D -10E308 -10E-30810E-308 10E3081.9 指出下列内容哪些是 JAVA 语言的整型常量,哪些是浮点数类型常量,哪些两者都
5、不是。整型常量: 4)0xABCL,8)003,10)077,12)056L浮点数类型常量:3)-1E-31,5).32E31 13)0.,14).0两者都不是: 1),2),6),7),9),11)3第二章 运算和语句2.1 Java 的字符能参加算术运算吗?可以。(1)字符与整型数据运算,结果为整型数据,只能赋给整型变量,如果附给字符型变量会损失精度,需要强制类型装换; (2)字符与字符运算,结果为字符型数据,可以直接赋给字符型或整型变量。2.2 占字节多的变量能直接赋值给占字节少的变量么? 答:不能直接赋值,需要强制类型转换。2.3 试用 Java 语言表达式描述以下数学计算式或逻辑条件
6、:1) 3)4(rV解:V = (4.0/3)*Math.PI*Math.pow(r,3);2) )12R解:R = 1.0 / (1.0/R1+1.0/R2);3) 635xy解:y = Math.pow(x,5) + Math.pow(x,3) + 6;4) 21MF解:F = 1.0 * M1 * M2 / (R * R);5) |cos|/sinxax解:Math.sin(x) / a * x + Math.abs( Math.cos( * x / 2) );6)0 0 System.out.print(“请输入正实数 X:“);String str = consoleScanner.
7、next();int number = -1; trynumber = Integer.parseInt(str);catch( NumberFormatException e ) System.out.println(“输入非法字符,程序结束! “);return;if (number =1);解:x=18; y=0; 2.10 求小于 999 的所有水仙花数。程序运行结果:源代码文件:Work2_10.java/* 求小于 999 的所有水仙花数* author 段智敏*/ public class Work2_10public static void main(String args)
8、String resultString = new String(“1000之前的所有水仙花数有:“); / 用来存结果的字符串for (int i = 100; i 0)/ 通过循环得到m每个位上的数,存到数组中aamount = m % 10;m = m / 10;amount+;int sum = 0;for (int j = 0; j * 百钱买百鸡。求鸡翁、鸡母和鸡雏各几何。* author 段智敏*/public class Work2_11public static void main(String args)for (int i = 0; i = p test = test /
9、 10;i+;/ 累计整数位数for (int j = 0; j 0) ? “+“ : “)+ (image != 0) ? this.image + “i“ : “);return result;/* 复数加法,* param val - 另一个复数* return - 当前复数对象与参数指定的复数对象的和*/public Complex add(Complex val)Complex result = new Complex (this.real + val.getReal(), this.image + val.getImage();return result;/* 复数减法,当前对象减
10、去参数对象* param val - 另一个复数* return - 当前复数对象与参数指定的复数对象的差18*/public Complex subtract(Complex val) / ,返回,Complex result = new Complex (this.real - val.getReal(), this.image - val.getImage();return result;/* 复数乘法* param val - 另一个复数* return - 当前复数对象与参数指定的复数对象的积*/public Complex multiply(Complex val)Complex
11、result = new Complex ();result.setReal(this.real * val.getReal() - this.image * val.getImage();result.setImage(this.real * val.getImage() + this.image * val.getReal();return result;/* 复数除法* param val - 另一个复数* return - 当前复数对象与参数指定的复数对象的商*/public Complex divide(Complex val)Complex result = new Complex
12、 ();result.setReal(this.real * val.getReal() + this.image * val.getImage()/ (val.getReal() * val.getReal() + val.getImage() * val.getImage();result.setImage(this.image * val.getReal() - this.real * val.getImage()/ (val.getReal() * val.getReal() + val.getImage() * val.getImage();return result;复数测试类:T
13、estComplex.java程序运行结果:/* 复数测试类* author 段智敏*/public class TestComplexpublic static void main(String args)19Complex complex1 = new Complex(2, 4);Complex complex2 = new Complex(3, -1);Complex result = new Complex();System.out.println(“复数 1:“ + complex1.toString() + “;实部“ + complex1.getReal() + “;虚部“+ c
14、omplex1.getImage();System.out.println(“复数 2:“ + complex2.toString() + “;实部“ + complex2.getReal() + “;虚部“+ complex2.getImage();result = complex1.add(complex2);/ 两个复数之和System.out.println(“复数:“ + complex1.toString() + “ 与“ + “复数:“ + complex2.toString()+ “ 之和为: “ + result.toString();result = complex1.su
15、btract(complex2);/ 两个复数之差System.out.println(“复数:“ + complex1.toString() + “ 与“ + “复数:“ + complex2.toString()+ “ 之差为: “ + result.toString();result = complex1.multiply(complex2);/ 两个复数乘积System.out.println(“复数:“ + complex1.toString() + “ 与“ + “复数:“ + complex2.toString()+ “ 的乘积为: “ + result.toString();r
16、esult = complex1.divide(complex2);/ 两个复数的商System.out.println(“复数:“ + complex1.toString() + “ 与“ + “复数:“ + complex2.toString()+ “ 的商为: “ + result.toString();3.14 声明一个有理数类 RationalNum。要求提供有理数的四则运算,以分数形式输出有理数和以浮点数形式输出有理数等方法。有理数类:RationalNumber.java/* 有理数类。* author 段智敏*/class RationalNumber/* numerator
17、分子 */int numerator;/* denominator 分母 */int denominator;public RationalNumber()numerator = Integer.MIN_VALUE;denominator = Integer.MIN_VALUE;/*20* 构造方法。* param a - 分子。* param b - 分母。* throws Exception 分母为 0 异常。*/public RationalNumber(int a, int b) throws Exceptionif (b = 0)throw new Exception(“发生分母为
18、0 的异常,分母不能为 0“);elsethis.numerator = a;this.denominator = b;/* 得到分子部分。* return - 返回分子部分。*/public int getNumerator()return numerator;/* 得到分母部分。* return - 返回分母部分。*/public int getDenominator()return denominator;/* 设置有理数的分子,分母。* param fenzi - 分子。* param fenmu - 分母。*/public void setRational(int fenzi, in
19、t fenmu)this.numerator = fenzi;this.denominator = fenmu;/* 有理数加法。* param r - 另一个有理数。* return - 返回当前与参数有理数的和。*/public RationalNumber add(RationalNumber r)int a = this.numerator * r.getDenominator() + this.denominator * r.getNumerator();int b = this.denominator * r.getDenominator();RationalNumber resu
20、lt = new RationalNumber();result.setRational(a, b);21result.yuefen();return result;/* 有理数减法。* param r - 另一个有理数。* return - 返回当前有理数减去参数中的有理数的差。*/public RationalNumber subtract(RationalNumber r)int a = this.numerator * r.getDenominator() - this.denominator * r.getNumerator();int b = this.denominator *
21、r.getDenominator();RationalNumber result = new RationalNumber();result.setRational(a, b);result.yuefen();return result;/* 有理数乘法。* param r - 另一个有理数。* return - 返回当前与参数有理数的乘机。*/public RationalNumber multiply(RationalNumber r)int a = this.numerator * r.getNumerator();int b = this.denominator * r.getDeno
22、minator();RationalNumber result = new RationalNumber();result.setRational(a, b);result.yuefen();return result;/* 有理数除法。* param r - 另一个有理数。* return - 返回当前与参数有理数的商。*/public RationalNumber divide(RationalNumber r)r.setRational(r.getDenominator(), r.getNumerator();RationalNumber result = this.multiply(r
23、);result.yuefen();return result;/* 约分,化简成分数的最简形式。*/public void yuefen()int a = Math.abs(this.numerator);/ 分子int b = Math.abs(this.denominator);/ 分母int small = a (2 * n - 2) / 2) achange-zero = value+; else if (j (2 * n - 2) / 2) a-zerochange = value+;n+;change+;zero = 0;26String out = “;for (int i =
24、 0; i 0?true:false;long year = msel/MyDate.YEAR_MSEL;long date = msel%MyDate.YEAR_MSEL/MyDate.DATE_MSEL;long hour = msel%MyDate.DATE_MSEL/MyDate.HOUR_MSEL;long minute = msel%MyDate.HOUR_MSEL/MyDate.MINUTE_MSEL;long second = msel%MyDate.MINUTE_MSEL/1000;String result = “;if( boo )result = “已过去 “;else
25、result = “还有 “;result += (year + “年“ + date+“天“ + hour + “小时“ + minute + “分钟“ + second + “秒“);return result;/* 返回此日历的字符串表示形式。30* return - 此日历的字符串表示形式。*/public String toString()return year + “年“ + month + “月“ + date + “日,“ + hour + “:“ + minute + “:“ + second;测试类源文件:TestMyDate.java/* MyDate 的测试类* aut
26、hor 段智敏*/public class TestMyDatepublic static void main(String args)MyDate md1 = new MyDate();MyDate md2 = new MyDate(2014,1,30);System.out.println(“当前时间:“ + md1.toString();System.out.println(“2014 年除夕:“ + md2.toString();md2.addOneDay();System.out.println(“增加一天后,大年初一: “ + md2.toString();4.10 求前 n 个质
27、数。要求确定 m 是否是质数,用早先求出的质数对 m 的整除性来确定。/* 求前 n 个质数。* 确定 m 是否是质数,用早先求出的质数对 m 的整除性来确定。* author 段智敏*/public class Work4_10/* 用来存质数的数组 */private int arrayInt;public Work4_10(int n)arrayInt = new intn;arrayInt0 = 2;int index = 1;/保存数组的有效长度boolean boo = true;for (int i = 2; i arrayInt.length; i+)boo = true;for (int j = 0; j index; j+)if (i % arrayIntj = 0)/用已存入数组中的质数判断boo = false;if (boo)/如果是 true 则是指数,存入数组,数组有效长度加 1.