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)运行Java程序:Java程序分为两类——Java应用程序必须通过Java解释器(java.exe)来解释执行其字节码文件;Java小应用程序必须通过支持Java标准的浏览器来解释执行。1.3如何区分应用程序和小应用程序?答:应用程序在与源文件名字相同的类中,有main()方法,该方法代表应用程序的入口;小应用程序必须有一个Applet类的子类,该类称作主类,必须用public修饰。1.4说出JAVA源文件的命名规则。答:源文件命名规则和类命名规则一样,所有的单词首字母都用大写字母,且必须和源文件的public类同名。1.6JAVA语言使用什么字符集?共有多少个不同的字符?答:Java语言使用Unicode字符集,共有65535个字符。1.7JAVA语言标识符的命名规则是什么?(1)由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字字符组成(2)限定标识符的第一个字符不能是数字字符(3)不能和关键字重名(4)长度不能超过255个字符1.8JAVA有那些基本数据类型,它们的常量又是如何书写的?数据类型关键字字节数默认值常量举例范围逻辑类型布尔型boolean1falsefalse,truefalse,true2字符型char20a,我,ぽ0~65535整数类型字节性byte1012,13,45-128~127短整型short2012,13,45-32768~32767整型int8012,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).32E3113)0.,14).0两者都不是:1),2),6),7),9),11)3第二章运算和语句2.1Java的字符能参加算术运算吗?可以。(1)字符与整型数据运算,结果为整型数据,只能赋给整型变量,如果附给字符型变量会损失精度,需要强制类型装换;(2)字符与字符运算,结果为字符型数据,可以直接赋给字符型或整型变量。2.2占字节多的变量能直接赋值给占字节少的变量么?答:不能直接赋值,需要强制类型转换。2.3试用Java语言表达式描述以下数学计算式或逻辑条件:1)3)34(rV解:V=(4.0/3)*Math.PI*Math.pow(r,3);2))11(121RRR解:R=1.0/(1.0/R1+1.0/R2);3)635xxy解:y=Math.pow(x,5)+Math.pow(x,3)+6;4)221RMMF解:F=1.0*M1*M2/(R*R);5)|2/cos|/sinxaxx解:Math.sin(x)/a*x+Math.abs(Math.cos(π*x/2));6)0a10解:a0&&a107)条件x=1与y=2有且只有一个成立.解:(x==1&&y!=2)||(x!=1&&y==2)2.4设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,变量a、b和c的值。1);aab解:a=5;b=16;2);aac;解:a=5;c=102.6若一个数恰好等于它的因子之和,则这个数称为“完全数”。编写程序求1000之内的所有完全数。分析:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。例如6=1+2+3;28=1+2+4+7+14程序运行结果:4/***@author段智敏*/publicclassWork2_6{publicstaticvoidmain(String[]args){StringresultString=1000以内,完全数有:;//最后结果字符串for(inti=1;i=1000;i++){if(isPerfectNumber(i)){resultString+=i+,;}}System.out.println(resultString);}privatestaticbooleanisPerfectNumber(intnumber){intsum=0;//因子的和Stringstr=newString();for(inti=1;inumber;i++){if(number%i==0){sum+=i;str+=i++;}}if(sum==number){//如果因子之和,等于本身,则是完数str=str.substring(0,str.length()-1);//去掉字符串最后一个多余的“+”;System.out.println(number+的因子有:+str);returntrue;}returnfalse;}}2.7编写输入正实数x,求平方不超过x的最大整数n,并输出。程序运行结果:5第一种命令行方式输入importjava.util.Scanner;/***编写输入正实数x,求平方不超过x的最大整数n,并输出。BR*命令行方式,输入正实数,输出结果BR*@author段智敏*/publicclassWork2_7_1{publicstaticvoidmain(String[]args){ScannerconsoleScanner=newScanner(System.in);System.out.print(请输入正实数X:);Stringstr=consoleScanner.next();intnumber=-1;try{number=Integer.parseInt(str);}catch(NumberFormatExceptione){System.out.println(输入非法字符,程序结束!!!);return;}if(number1)System.out.println(输入的数不是正实数,程序结束!!!);else{intn=(int)(Math.sqrt(number));System.out.println(平方不超过+number+的最大整数,n=+n+;);}}}第二种窗口方式输入运行结果如下图:/***编写输入正实数x,求平方不超过x的最大整数n,并输出。*弹出窗口方式*@author段智敏*/importjavax.swing.JOptionPane;publicclassWork2_7_2{privateintnumber;publicWork2_7_2(){number=this.getIntegerNumber(请输入一个正实数,1);if(number1)6return;//非法,程序结束intn=(int)(Math.sqrt(number));showResult(平方不超过+number+的最大整数\nn=+n+;);}/***通过图形界面,得到符合规则的正整数的方法*@parammessage-在弹出的对话框中,显示提示信息message*@parammin-要求此数必须大于等于min*/publicintgetIntegerNumber(Stringmessage,intmin){Stringstr=JOptionPane.showInputDialog(null,请输入一个正整数,提示信息,JOptionPane.INFORMATION_MESSAGE);intnumber=-1;try{number=Integer.parseInt(str);//得到输入的正整数}catch(Exceptione){JOptionPane.showMessageDialog(null,输入非数字字符\n程序结束,错误警告,JOptionPane.ERROR_MESSAGE);return-1;//输入的不是数字字符,程序结束}if(numbermin){JOptionPane.showMessageDialog(null,输入的数不符合规则,不是正整数\n程序结束,错误警告,JOptionPane.ERROR_MESSAGE);return-1;//输入的数不是大于2的正整数时候,程序结束}elsereturnnumber;}/***弹出对话框,显示结果*@paramstr-需要显示的字符串*/publicvoidshowResult(Stringstr){JOptionPane.showMessageDialog(null,str,输出结果,JOptionPane.INFORMATION_MESSAGE);}publicstaticvoidmain(String[]args){newWork2_7_2();}}72.8输入正整数n,输出由n行n列星号字符组成的三角形图案。程序运行结果:源代码文件:Work2_8.javaimportjava.util.*;/***输入正整数n,输出由n行n列星号字符组成的三角形图案。*@author段智敏*/publicclassWork2_8{publicstaticvoidmain(Stringargs[]){ScannerconsoleScanner=newScanner(System.in);System.out.print(请输入正整数n:);Stringstr=consoleScanner.next();intn=-1;try{n=Integer.parseInt(str);}catch(NumberFormatExceptione){System.out.println(输入非法字符,程序结束!!!);return;}if(n1)System.out.println(输入的数不是正实数,程序结束!!!);else{for(inti=0;in;i++){for(intj=0;jn-i-1;j++){System.out.print();}for(intk=0;ki+1;k++){System.out.print(*);}System.out.println();}}}}82.9设有整型变量x和y的值分别为5和110。试指出执行了以下循环语句后,变量x和y的值分别多少?1)while(x=y)x*=2;解:x=160;y=110;2)do{x=y/x;y=y-x;}while(y=1);解:x=18;y=0;2.10求小于999的所有水仙花数。程序运行结果:源代码文件:Work2_10.java/***求小于999的所有水仙花数*@author段智敏*/publicclassWork2_10{publicstaticvoidmain(String[]args){StringresultString=newString(1000之前的所有水仙花数有:);//用来存结果的字符串for(inti=100;i999;i++){if(isNarcissusNumber(i))resultString+=+i;}System.out.println(resultString.substring(0,resu