《Java编程基础知识点汇总及习题集》--答案 下载本文

目 录

第一章 Java入门 ............................................. 2 第二章 Java基础 ............................................. 5 第三章 第四章 第五章 第六章 第七章 第八章

条件转移 ............................................. 16 循环语句 ............................................. 22 方法 ................................................ 28 数组 ................................................ 34 面向对象 ............................................. 43 异常 ................................................ 65

第一章 Java入门

知识点汇总

1、 JAVA 三大体系

? Java SE:(J2SE,Java2 Platform Standard

课堂笔记

Edition,标准版),三个平台中最核心的部分,包含Java最核心的类库。 ? JavaEE:(J2EE,Java 2 Platform,

Enterprise Edition,企业版),开发、装配、部署企业级应用,包含Servlet、JSP、JavaBean、JDBC、EJB、Web Service等。 ? Java ME:(J2ME,Java 2 Platform Micro

Edition,微型版),用于小型电子设备上的软件开发。

2、 JDK,JRE,JVM的作用及关系

作用

★ JVM:保证Java语言跨平台 ★ JRE:Java程序的运行环境 ★ JDK:Java程序的开发环境 关系

★ JDK:JRE+工具 ★ JRE:JVM+类库

3、 JDK环境变量配置

? path环境变量:存放可执行文件的存

放路径,路径之间用逗号隔开

? classpath环境变量:类的运行路径,

JVM在运行时通过classpath加载需要的类

4、 重点掌握两个程序

? javac.exe:Java编译器工具,可以将编

写好的Java文件(.java)编译成Java字节码文件(.class);

? java.exe:Java运行工具,启动Java虚

拟机进程,运行编译器生成的字节码文件(.class)

5、 一切程序运行的入口

public static void main(String args []){ System.out.println(“Hello World!”); }

练习题

一、 填空题

1、 Java的三个技术平台分别是( J2SE )、( J2EE )、(J2ME )。 2、 Sun公司针对领域不同,提供了三个Java版本,其中对于个人计算机程序开发的是( J2SE ),

对于企业开发应用的是( J2EE ),对于嵌入式设备应用开发的是( J2ME )。 3、 建立Java开发环境,安装JDK,一般需要设置环境变量( path )、( classpath )。 4、 编写一个Java源程序,其文件名为Test.java,则编译该源程序的命令为(javac ),运行该

程序的命令为( java ),生成文档注释的命令为( javadoc )。 5、 Java程序的运行环境简称之为( JRE )。 6、 编译Java程序需要使用(javac )命令。

7、 javac.exe和java.exe两个可执行程序放在JDK安装目录的( bin )目录下。

8、 ( path )环境变量用来存储Java的编译和运行工具所在的路径,而( classpath )环境变

量则用来保存Java虚拟机要运行的“.class”文件路径。 9、 Java的源代码文件的扩展名是( .java)。 10、Java编译器的输入文件的类型是( .java )。 11、Java编译器的输出文件的类型是( .class )。 12、运行Java应用程序的命令是( java )。 二、选择题

1、 以下选项中,哪些属于JDK工具?(多选) (ABCD )

A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具 2、 Java属于以下哪种语言?( C )

A、机器语言 B、汇编语言 C、高级语言 D、以上都不对 3、 下面哪种类型的文件可以在Java虚拟机中运行?( D )

A、.Java B、.jre C、.exe D、.class

4、 安装好JDK后,在其bin目录下有许多exe可执行文件,其中“java.exe”命令的作用是以下

哪一种?( D )

A、Java文档制作工具 B、Java解释器 C、Java编译器 D、Java启动器 5、 如果jdk的安装路径为“d:\\jdk”,若想在命令窗口中任何当前路径下,都可以直接使用javac

和java命令,需要将环境变量path设置为以下哪个选项?(B )

A、d:\\jdk; B、d:\\jdk\\bin; C、d:\\jre\\bin; D、d:\\jre;

6、 编译一个定义了两个类和三个方法的Java源程序文件,总共将产生( D )个字节码文件。

A、5个字节码文件,以“.java”为扩展名 B、2个字节码文件,以“.java”为扩展名 C、5个字节码文件,以“.class”为扩展名 D、2个字节码文件,以“.class”为扩展名 7、 做为Java应用程序入口的main()方法,其声明格式可以是( A )

A、public static void main(String[] args); B、public static int main(String[] args); C、public void main(String[] args); D、public int main(String[] args); 8、 下面选项中,( D )是Java关键字。

A、then B、PUBLIC C、java D、public 9、 ( D )不是Java的开发工具

A、Eclipse B、NetBeans C、JBuilder D、VC++ 6.0 10、程序语句“System.out.println(“one”+1+“,Two”+2);”运行后的结果为( D )

A、one,1,Two,2 B、One1Two2 C、One,Two D、One1,Two2 11、下列哪项不是JDK所包含的内容?( C )

A.Java编程语言 B.工具及工具的API C.Java EE扩展API D.Java平台虚拟机 12、下列关于JDK、JRE和JVM的描述。哪项正确?( D )

A.JDK中包含了JRE,JVM中包含了JRE B.JRE中包含了JDK,JDK中包含了JVM C.JRE中包含了JDK,JVM中包含了JRE D.JDK中包含了JRE,JRE中包含了JVM 13、下列哪个工具可以编译java源文件?( A )

A.javac B.jdb C.javadoc D.junit 14、JDK工具javadoc的作用是哪项?( A )

A.生成Java文档 B.编译Java源文件 C.执行Java类文件 D.测试Java代码 15、以下哪些包是Java标准库中常用的包?(多选)( ACD )

A.java.lang B.javax.servlet .http C.j ava.io D.java.sql 16、使用JDK工具生成的Java文档的文件格式是?( D )

A.XML格式 B.自定义格式 c.二进制格式 D.HTML格式 17、以下关于JVM的叙述,哪项正确?(多选)( BC )

A.JVM运行于操作系统之上,它依赖于操作系统 B.JVM运行于操作系统之上,它与操作系统无关

C.JVM支持Java程序运行,它能够直接运行Java字节码文件 D.JVM支持Java程序运行,它能够直接运行Java源代码文件 18、以下关于支持Java运行平台的叙述,哪项错误?( C )

A.Java可在Solaris平台上运行 B.Java可在Windows平台上运行 C.Java语言与平台无关。Java程序的运行结果依赖于操作系统 D.Java语言与平台无关。Java程序的运行结果与操作系统无关

19、以下关于Applet和Java程序之间关系的叙述,哪项错误?( B )

A. -个Applet就是一段Java程序

B.Applet是一种特殊的Java程序,它需要运行在Web服务器上 C.Applet是一种特殊的Java程序,它需要运行在Web浏览器上 D.Applet是一种Java SE平台的应用程序

20、以下关于Java HotSpot的描述,哪两项错误?(多选)( AD )

A.JavaHotSpot是一种热编译技术,在编译Java源程序时会被使用 B.Java HotSpot是一种热编译技术,在运行Java代码时会被使用

C.Java HotSpot是一种热编译技术,它只对程序的部分字节码进行优化 D.Java HotSpot是一种热编译技术,它会对程序的全部字节码进行优化

21、环境变量PATH中含有多个路径时,路径和路径之间可以用哪项来隔开?( A )

A.; B. , C.* D:| 22、CLASSPATH中的“.”的含义是哪项?( B )

A.省略号 B.当前目录 C.所有目录 D.上级目录 23、JVM在执行一个Java类时,大致采用以下过程?( D )

A.执行类中的代码一>装载类一>校验类 B.校验类一>装载类一>执行类中的代码 C.装载类一>执行类中的代码一>校验类 D.装载类一>校验类一>执行类中的代码 24、当运行—个Java程序时,传递参数的格式是哪项?( C )

A. java类名参数1,参数2 B. javac类名参数1参数2 C. java类名参数1参数2 D. java类名参数1+参数2 25、以下关于Java文件名的叙述,正确的有?(多选)( AB )

A.Java源文件的扩展名应为.java B.Java源文件的文件名应与文件中的类名一致 C. Java字节码文件的扩展名应为.Java D. 一个Java源文件中只能包含一个Java类

三、编程题

1、编写程序,在控制台上显示短句:“知识就是力量”。要求: (1)一行显示整个语句。

(2)分三行显示,每行显示两个汉字。

class HelloWord{

public static void main(String args[]){ } }

System.out.println(\知识就是力量\); System.out.println(\知识\\n就是\\n力量\);

第二章 Java基础

知识点汇总

1、 Java代码的基本格式 修饰符 class 类名{ 程序代码; }

? 修饰符:public、private、default、

abstract、fanal、static

? 类名必须与文件名相同(public类) ? 每条语句的最后都必须用分号(;)结束 ? 严格区分大小写

? 代码整齐、美观、层次清晰 ? 字符串用“+”连接 2、 Java中的注释:注释是对程序某个功能或某行

代码的说明

? 单行注释 “//”

? 多行注释 “/* */”

? 文档注释 “/** */”,可以使用

javadoc命令生成帮助文档

3、 Java中的标识符

? 大小写字母、数字、下划线( _ )和美元

号($)

? 标识符不能以数字开头 ? 不能是Java中的关键字 4、 标识符命名规则(驼峰命名法)

? 包的名字一律小写

? 类名和接口名每个单子的首字母大写 ? 常量名所有字母都大写,单词之间用下划

线连接

? 变量名和方法名第一字单词首字母

小写,从第二个单词开始每个单词的首字母大写

? 尽量使用有意义的英文单词定义标

识符

课堂笔记

5、 变量的类型

9、 变量的作用域

? 6、 Java中的变量

? 变量的声明方法 变量的赋值

? 变量的声明+赋值赋值

7、 Unicode字符集

? Unicode为每种语言的每个字符设定了统一并且

唯一的二进制码;

? Java使用Unicode字符集编码 ? 每个字符占2个字节

? 存字符的字符集编码与取字符的字符集编码不一

致,就会出现乱码现象

8、 变量的类型转换

? 自动类型转换(隐式类型转换):取值范围小的类

型 赋值给 取值范围大的类型

? 如 :double a=1.2;int b=3; a=b; ? 强制类型转换(显式类型转换):取值范围大的类

型 赋值给 取值范围小的类型,强制类型转换格 式:目标类型 变量 = (目标类型)值

? 如 :double a=1.2;int b=3; b=(int)a;

在程序中,变量一定会被定

义在某个大括号中,该大括号所包含的代码区域便是这个变量的作用域

10、

运算符 赋值运算符 = += -= *= /= %= 运算 赋值 加等于 减等于 乘等于 除等于 模等于 比较运算符 == != < > <= >= 范例 a=3;b=2; a=3;b=2;a+=b a=3;b=2;a-=b a=3;b=2;a*=b a=3;b=2;a/=b a=3;b=2;a%=b 逻辑运算符 & | ^ ! && || 结果 a=3;b=2; a=5;b=2; a=1;b=2; a=6;b=2; a=1;b=2; a=1;b=2; + - + - * / % ++ ++ -- -- 算术运算符 11、 赋值运算符 运算符 = += -= *= /= %= 12、

? ? ? ? ? ? 13、 逻辑运算符

&与&&都表示与操作,当且仅当两边的操作数都为true时,结果才为真; &:无论左边为true还是false,右边都要进行运算 &&:如果左边为false,右边不再运算

|与||都表示或操作,当两边操作数有一边为true,结果就为真; |:无论左边为true还是false,右边都要进行运算 ||:如果左边为true,右边不再运算 运算符的优先级 运算符 . 、[]、 () ++ 、--、 ! * 、/、 % +、- < 、>、 <=、 >= == 、!= & 1 2 3 4 5 6 7 优先级 8 9 10 11 12 13 ^ | && || ?: =、 *=、 /= 、%= 、+=、 -= 、 &=、 ^=、 |= 14、 获取输入信息

? System.out:表示输出流,print()是输出到控制台,println输出到控制台,并且将光标

移到下一行

? System.in:表示输入流,输入流来自键盘,需要使用Scanner类创建对象读取来自

System.in的输入

? Import java.uitil.Scanner;

? Scanner scanner=new Scanner(System.in) ? int a=scanner.nextInt() 方法 .next() .nextByte() .nextShort() .nextInt() .nextLong() .nextFloat() .nextDouble() 功能 读取一个字符串,字符串遇到空格就终止 读取byte类型的整数 读取short类型的整数 读取int类型的整数 读取long类型的整数 读取float类型的整数 读取double类型的整数 15、 常量

? final 类型 常量名 = 具体的值 16、 转义字符:\'(单引号)、\"(双引号)、\\(反斜杠)、\r(回车)、\n(换行)、

\t(Tab键)、\b(退格)

练习题

一、 填空题

1. Java中程序代码必须在一个类中定义,类使用( class )关键字来定义。 2. 布尔常量即布尔类型两个值,分别是( true )和( false )。 3. Java中的注释可以分为三种类型( 单行注释 )(多行注释 )和(文档注释)。 4. 单行注释( // ),多行注释以(/* )开头,( */ )结尾,多行文档注释以(/**)开头,

( */ )结尾。

5. Java中的变量可分为两种数据类型,分别是(基本数据类型 )和(引用数据类型 )。

6. 在Java中,byte类型数据占(1)个字节,short类型数据占( 2 )个字节,int类型数据占

( 4 )个字节,long类型占( 8 )字节。

7. 在逻辑运算符中,运算符( & )和( && )用于表示逻辑与,( | )和( ||)表示逻辑或。 8. 若x=2,则表达式(x++)/3的值是( 0 )。 9. 若int a=2;a+=3;执行后,变量a的值为(5 )。 10. 表达式6/3.0的结果是( 2.0 )。

11. 如果要得到表达式25/4的浮点数结果,表达式应改为( 25/4.0 )。

12. 表达式1%5的结果是( 1 )。

13. 设有“int a = 2; double d=2.0;”,下列每个表达式都是独立的,填写表达式的执行结果。

(1) a=46/9; ( 5 ) (2) a=46%9+4*4-2;( 15 )

(3) a=45+43%5*23*3%2;( 46 ) (4) a%=3/a+3; ( 2 ) (5) d=4+d*d+4; ( 12.0 )

(6) d+=1.5*3+(++a); ( 9.5 ) (7) d-=1.5*3+(++a); ( -5.5 )

14. 下列语句输出的结果是( 30+20=3020 )。

System.out.println(“30+20=”+30+20);

15. 执行以下三条语句后,a=( 3 ),b=( 1 ),c=( 3 )。

int a =1; int b =a++ ; int c=++a;

16. 以下语句输出( He said ”Java is fun.” )。

System.out.println(“He said\\”Java is fun.\\””); 17. 已知:int a =8,b=6; 则:表达式++a-b++的值为( 3 )。

18. 已知:boolean b1=true,b2; 则:表达式! b1 && b2 ||b2的值为( false )。 19. 已知:double x=8.5,y=5.8; 则:表达式x++>y--值为( true )。 20. 执行int x, a = 2, b = 3, c = 4; x = ++a + b++ + c++; 结果是(x=10,a=3,b=4,c=5)。 21. Java中的显式类型转换是(从低类型向高类型转换),从高类型向低类型转换是(隐式类型转

换 )。

22. 执行下列程序代码的输出结果是(i=11 j=11 a=10)。

int a = 10; int i, j; i = ++a; j = a--;

23. 执行完boolean x=false; boolean y=true; boolean z=(x&&y)&&(!y) ; int f=z==false?1:2;

这段代码后,z与f的值分别是( false )和( 1 )。

24. 对于在程序运行过程中一直不变的值,可以声明成( 常量 )确保它的值不会被修改,在声明

时使用( final ),还必须( 赋初值 )。

25. 在声明类中,方法之内的变量就叫做(局部 )变量。

26. 数据类型转换时,两种数据类型( 兼容 )并且( 目标 )类型大于( 源)类型,则可以

自动类型转换。

27. 字面量都有默认类型,整型字面量的默认类型为(int ),浮点型字面量的默认类型是( double)。 28. long类型字面量末尾字母是( L ),float类型字面量末尾字母是( F ),double的是( D )。

二、 选择题

1. 以下选项中,哪些属于合法的标识符?(多选)(AD )

A、Hello_World B. class C.123username D.username123 2. 下列哪些是合法的标识符(多选)( ABCD )

A、applet B、Applet C、$4 D、$$44 3. 下列哪个不是Java的关键字( D )

A、else B、public C、int D、radius 4. byte类型数据中最大的数据为( A )

A、127 B、128 C、255 D、256 5. short类型数据中最大数据为( C )

A、65535 B、65536 C、32767 D、32768

6. 表达式25/4的结果是( B )

A、6.25 B、6 C、6.0 D、以上都不对 7. 以下关于变量的说法错误的是?( C )

A、变量名必须是一个有效的标识符 B、变量在定义时可以没有初始值 C、变量一旦被定义,在程序中的任何位置都可以被访问

D、在程序中,可以将一个byte类型赋值给一个int类型的变量,不需要特殊声明 8. 下面的运算符中,用于执行除法运算的是哪个?( A )

A、/ B、\\ C、% D、*

9. double类型的数据占用( B )字节。

A、4 B、8 C、1 D、2 10. ”float f=15.6F; int i=(int)f; System.out.println(“f=”+f);”执行后的结果是( A )。

A、f=15.6 B、f=15 C、f=15.0 D、以上都不对 11. 下列语句正确的是( A )。

A、boolean b=true; B、double x=2.5f; C、char c=A D、float y=0.8d 12. Java程序中,计算表达式”-1-3*10/5-1”后的结果是( A )。

A、-8 B、-6 C、7 D、8

13. 下面( D )赋值语句不会出现编译警告或错误。

A、float f=1.3 B、char c=a C、byte b=257 D、int i=10 14. 下列标识符(名字)命名原则中,正确的是( C )。

A.类名的首字母小写 B.接口名的首字母小写

C.常量全部大写 D.变量名和方法名的首字母大写 15. 下面哪种注释方法能够支持javadoc命令?( C )

A.// B./*...*/ C./**...*/ D./**...**/ 16. 下面哪些标识符在Java语言中是合法的?( AB )

A.persons$ B.TwoUsers C.*point D.instanceof F.end-line 17. 下列( D )是合法标识符。

A.2end B.-hello C.=AB D.整型变量

18. 若定义有变量float f1,f2 = 8.0F,则下列说法正确的是( B )。

A.变量f1,f2均被初始化为8.0 B.变量f1没有被初始化,f2被初始化为8.0 C.变量f1,f2均未被初始化 D.变量f2没有被初始化,f1被初始化为8.0 19. 基本数据类型short的取值范围是( B )。

A.(-256)~ 255 B.(-32 768)~ 32 767 C.(-128)~ 127 D.0~65 535 20. 下列( B )是不能通过编译的语句。

A.double d = 545.0; B.char a1 = “c”; C.int i = 321; D.float f1 =45.0f; 21. 若定义有short s; byte b; char c; 则表达式s * b + c的类型为( C )。

A.char B.short C.int D.byte 22. 下列代表十六进制整数的是( C )。

A.012345 B.2008 C.0xfa08 D.fb05 23. 哪些是合法的标识符(多选)( AEFHIJ )。

A、Name B、2hello C、class D、a-public E、Sex

F、MIN_VALUE G、age# H、_id I、getName j、$main 24. 下列选项中为byte类型的取值范围的是( C )。

A、1~255 B、0~65535 C、-128~127 D、-32768~32767 25. 下列选项中,Java语句错误的是( C )。

A、double a=3.5 B、char a=322 C、flat a=1.0 D、double a=1 26. 下列选项中,合法的字符类型是( B )。

A、’ab’ B、’b’ C、”123” D、”\?” 27. String c=1+2+”6”+5;如果输出c,那么c的值是( C )。 A、1265 B、14 C、365 D、语法错误

28. 下列选项中,赋值语句不会出现编译错误的是( C )。

A、float a=2.0 B、char c=”a” C、byte b=25 D、boolean d=1 29. 下列选项中,赋值语句产生编译错误的是( AB )。

A、char a=’abc’ B、byte b=1234 C、long c=0x123 D、double d=1e-3f 30. 下列哪项不属于Java语言的基本数据类型?( B )

A.int B.String C.double D.boolean 31. 下列哪项不是int类型的字面量?( A )

A.\Φ B.077 C.OxABBC D.20 32. 下列哪项不是有效的标识符?( B )

A.userName B.2test C.$change D._password 33. 下列哪项是Java语言中所规定的注释样式?(多选)( ACD )

A.//单行注释 B.--单行注释 C. /* D. /**

*单行或多行注释 *文档注释 */ */ 34. 下列哪项不是Java语言的关键字?( B )

A.goto B.sizeof C.instanceof D.volatile35. 现有如下五个声明:

Linel: int a_really_really_really_long_variable_name=5 ; Line2: int _hi=6;

Line3: int big=Integer. getlnteger(\ Line4:int $dollars=8; line5: int %opercent=9; 哪行无法通过编译?( D )

A.Line1 B.Line3 C. Line4 D. Line5 36. 现有:

1. class Top {

2. static int x=l;

3. public Top (int y) { x*=3; } 4. }

5. class Middle extends Top { 6. public Middle() {x+=1; }

7. public static void main (String [] args) { 8. Middle m = new Middle(); 9. System. out .println (x); 1O. } 11. }

结果为( D )

A.1 B. 2 C.3 D.编译失败 37. 现有:

1. class Passer {

2. static final int X=5;

3. public static void main (String [] args) { 4. new Passer().go (x); 5. System. out .print (x); 6, }

7. void go (int x) {

8. System. out .print(x++); 9. } 10. }

结果是什么?( A )

A.55 B.56 C.65 D.66

38. 现有:

1. class Wrench {

2. public static void main(String [] args) {

3. Wrench w=new Wrench(); Wrench w2=new Wrench(); 4. w2=go (w, w2);

5. System.out.print (w2==w); 6. }

7. static Wrench go (Wrench wrl, Wrench wr2) { 8. Wrench wr3=wrl; wrl=wr2; wr2=wr3; 9. return wr3; 10. } 11. }

结果是什么?( B )

A. false B.true C.编译失败 D.运行的时候有异常抛出 39. 现有:

1. class Wrench2 { 2. int size;

3. public static void main(String [] args) { 4. Wrench2 w=new Wrench2(); 5. w.size=II;

6. Wrench2 w2=go(w, w.size);

7. System. out .print (w2. size); 8. }

9. static Wrench2 go(Wrench2 wr. int s) { 10. S=12;

11. return wr; 12. } 13. }

结果为( A )

A. 11 B. 12 c.编译失败。 D.运行时异常被抛出 40. 现有:

class Test2 f

public static void main (String [] args) { short a,b,C; a=l; b=2; C=a+b; a+=2: } }

以上代码中,哪一句是错误的?( B )

A.a=1: B.C=a+b; C. a+=2; D. short a,b,C; 41. 表达式:1-2/5+2*5的结果是哪项?( D )

A. 10.6 B. 9.8 C. 9 D.11

42. 现有代码片段:

String s=\; String sl=S+456;

请问sl的结果是哪项?( A )

A. 123456 B. 579 C.编译错误 D.运行时抛出异常 43. 基本数据类型float的包裹类是哪项?( C )

A. Integer B. Double C. Float D. Character 44. 现有:

1. class Test4 {

2. public static void main (String [] args) { 3. boolean X=true; 4. boolean y=false; 5. short Z=42;

6. if((z++==42) && (y=true))z++; 7. if((x=false) || (++z==45)) z++; 8. System. out.println(¨z=”+z); 9. } 10. }

结果为( D )

A. Z=42 B. z=44 C. Z= 45 D. z= 46 三、 修改程序错误

1. public class Test{

public static void main(String args[]){ int i;

int k=100.0; // k=100; int j =i+1; } }

2. public class Test{

public void main(String args[]){

float f=12.5; //double f=12.5; int k=f; //double k=f; int j =f+1; //double j =f+1; } }

3. public class Test{

public void main(String args[]){ byte i=128; //int i=128; long k=i*3+4; double d =k*3.1; } }

4. public class Test{

public void main(String args[]){ double d=1234.5;

long k=long(d); // long k=(long)d; long i =k+3.5; //double i =k+3.5; } }

5. public class Test{

public void main(String args[]){

char c=”a”; // String c=”a”; String s=”1234”; c=a; //c=s;

}

}

四、 分析程序,写出运行结果

1. public class Test{

public void main(String args[]){ byte b=3; b=b+4;

System.out.println(“b=”+b); }

} //b=7 2. public class Test{

public void main(String args[]){ int x=12; {

int y=96;

System.out.println(“x is”+x);

System.out.println(“y is”+y);

} y=x;

System.out.println(“x is”+x); }

} //编译出错 五、 编程题

1、 按照以下要求,编写Java代码:

(1) 声明一个名为milles的double型变量,初值为100;

(2) 声明一个名为MILE_TO_KILOMETER的double型常量,其值为1.609 (3) 声明一个名为kilometer的double型变量,并赋值为11.5,将miles和MILE_TO_KILOMETER

相乘,并将结果赋值给kilometer;

(4) 在控制台上显示kilometer,现在kilometer的值是多少?

class HelloWord{ }

public static void main(String args[]){ }

double milles=100;

final double MILE_TO_KILOMETER=1.609; double kilometer=11.5;

kilometer=milles*MILE_TO_KILOMETER;

System.out.print(\现在kilometer的值是\+kilometer);

2、 按照以下要求,编写Java代码:

(1) 先定义3个变量,分别为圆柱体底面半径、高和体积; (2) 输入半径和高; (3) 计算圆柱体体积; (4) 输出计算结果。

import java.util.Scanner;

class HelloWord{

public static void main(String args[]){

} }

double v,r,h;

final double PI=3.14;

Scanner scan=new Scanner(System.in); System.out.println(\请输入半径:\); r=scan.nextDouble();

System.out.println(\请输入高:\); h=scan.nextDouble(); v=PI*r*r*h;

System.out.println(\体积为:\+v);

3、 编写程序将磅转换为千克。程序提示用户输入磅数,转换为千克并显示结果。一磅约等于0.454

千克。

import java.util.Scanner; class HelloWord{ }

public static void main(String args[]){ }

double x,y;

Scanner scan=new Scanner(System.in); System.out.println(\请输入磅数:\); x=scan.nextDouble(); y=0.454*x;

System.out.println(x+\磅=\+y+\千克\);

4、 编写一个程序,读入费用与提成率,计算提成与总费用。例如,如果输入10作为费用,12%作

为提成率,则显示提成费为1.2,总费用为11.2。

import java.util.Scanner; class HelloWord{

public static void main(String args[]){ } }

double x,y,s;

Scanner scan=new Scanner(System.in); System.out.println(\请输入费用:\); x=scan.nextDouble(); y=x*0.12; s=x+y;

System.out.println(\总费用=\+s);

5、 编写程序读入0到1000之间的一个整数,并将其各个位上的数字加起来。例如,整数832,各

位数字之和为13。

import java.util.Scanner; class HelloWord{

public static void main(String args[]){ int x,y;

Scanner scan=new Scanner(System.in); System.out.println(\请输入一个整数:\); x=scan.nextInt(); y=x+x/10+x/100;

System.out.println(x+\各个数位的和=\+y);

}

}

第三章知识点汇总

1、 简单if结构

if(布尔类型表达式){ 语句一; 语句二; ?. ?. }

课堂笔记

2、 一般if结构

if(布尔类型表达式){ 语句一; 语句二; ?. ?. } else {

语句三; 语句四; ?. ?. }

3、 复杂的if结构

if(布尔类型表达式1){ 语句一;

条件转移

语句二; ?. ?.

} else if(布尔类型表达式2){ 语句三; 语句四; ?. ?.

} else if(布尔类型表达式n){ 语句五; 语句六; ?. ?. } else{

语句七; ?. ?. }

4、 Switch条件语句

Switch(表达式){ //”表达式”的结果只允许char/byte/int/short四种类型 case 值1:

语句序列1; break; case 值2:

语句序列2; break; ?. ?.. case 值n:

语句序列n; break; [default:

默认语句序列; break;] }

5、 三元运算符

判断条件?表达式1:表达式2

练习题

一、 填空题

1、 假设x为1,给出下列布尔表达式的结果

(1) (x > 0) || (x < 0) ( true ) (2) (x!= 0) ||(x ==0) ( true ) (3) (x >=0)||(x < 0) (true ) (4) (x!=1)==!(x==1) ( true )

2、 写出一个布尔表达式,使得变量a中储存的数据在10到100之间时,表达值为true。

(a>=10 && a<=100 )

3、已知char x=’a’; char y =’c’; 依次给出下列语句的输出结果。

(1) System.out.println(x-y) ( -2 ) (2) System.out.println(x>y) ( false ) (3) System.out.println(x

二、 选择题

1、以下选项中,switch语句判断条件可以接收的数据类型有哪些?(多选)( ABCD )

A、 int B、byte C、char D、short

2、假设int x=2,三元表达式x>0?x+1:5的运算结果是哪一个?( C )

A、0 B、2 C、3 D、5

3、下面一段程序运行结束时,变量y的值为下列哪一项?( A )

int x=1; int y =2; if (x%2==0){ y++; }else{ y--; }

System.out.println(“y=”+y);

A、1 B、2 C、3 D、4

4、在switch(expression)语句中,expression的数据型不能是( C )。

A.char B.short C.double D.byte

5、下列程序m的哪些值将引起\的输出?( CD ) switch(m){

case 0: System.out.println(\

case 1: System.out.println(\ case 2:

default: System.out.println(\ } A.0 B.1 C.2 D.3

6、变量num中储存的数据在10到100之间或值为负数时,表达式值为true。这样的一个布尔表达式是( B )

A、(num>10 || num<100) && (num < 0) B、(num>10 && num<100) || (num < 0) C、(num>10 ) && (num<100) &&(num < 0) D、(num>100 && num<10) || (num < 0) 7、当 x为1时,布尔表达式“(x!=1)&&(x==1)”的结果是( C )。

A、true B、1 C、false D、0

8、当 x为1时,布尔表达式“(true)&&(3>4)”的结果是( C )。

A、true B、1 C、false D、以上都不对

9、当 x为1时,布尔表达式“!(x>0)&&(x>0)”的结果是( B )。

A、true B、false C、0 D、以上都不对

10、假设x与y都为int类型,下列java表达式正确的是( D )

A、x>y>0 B、(x!=0)||(x=0) C、x or y D、以上都不对 11、考虑以下嵌套的if语句,说法正确的是( D )。

if(conditioon1){ if(condituion2){ statement1;

}

else statement2; }

A、 只有当condition1 =false及condition2=false时,statement2才能执行 B、 无论condition2是什么,只要condition1=false,statement2就能执行 C、 statement2无论在什么情况下,都不能执行

D、 只有当condition1=true及condition2=false时,statement2才能执行 12、以下一段代码执行完毕后y的值是( B )。

int x=11; if (x>5){ int y=x+5; } else{

int y =x-5; }

A、16 B、6 C、11 D、0

13、已知x=7,y=11,表达式“(x>6||y<=10)”的值为( C )。

A、0 B、false C、true D、1 14、以下说法哪个正确( A )。

A、break语句在switch-case语句中不是必需的,但在case语句李没有break语句,执行结果可能会不同

B、switch-case语句中没必要使用break语句

C、switch-case语句中必须使用break语句,否则会引起语法错误 D、以上都不正确

15、表达式“z=(6>5)”?11:10的值是( B )。

A、10 B、11 C、6 D、5 16、下述程序运行后的结果是哪项?( B )

class TestApp{

public static void main (String[] args){ int x=6; if (x>l)

System. out. println(\ else if (x>5)

System. out .println(\ else if (x<10)

System. out. println(\ else if (x<29)

System. out .println( \ else

System. out.println(“以上都不是”); } }

A.x>5 B.x>l C. x<10 D.x<29 17、下列程序运行后的结果是哪项?( B )

class TestApp{

public static void main (String[] args){ int X=5: switch (x){ case l: case 2: case 3:

System. out.println(“一季度”); break; case 4: case 5: case 6:

System. out.println(“二季度”); break; default:

System. out.println(“三季度以上”); break; } } }

A. 一季度 B.二季度 C.三季度以上 D.无输出 18、下列程序的结果为 ( A )。

class Ifs {

public static void main (String [] args) { boolean state=false;

int i=2;

if( (++i>2) && (state=true)) i++;

if( (++i>4) l l (state=false)) i++; System.out .println (i); } }

A. 6 B. 5 C. 4 D.编译失败 19、下列程序结果为( C )。

class Output (

public static void main (String[] args) { int i=5:

System.out.print( \ System.out.print (i+5+\ System.out.println (i+\ } }

A. 9 9722 B. 9 55758 C. 45 10758 D.20、下列程序的结果是 ( B )。

class Test2 f

public static void main (String [] args) { boolean x= true; boolean y=false; short z=20;

if((x==true) && (y=true)) z++;

if((y==true) || (++z==22)) z++;

System. out .println( \; } }

A.z=21 B. z=22 C. z=23 D. z= 24

三、 修改程序错误 1.public class Test{

public void main(String args[]){ int x=4,j=0; switch(x){ case 1:

j++; //break; case 2:

j++; //break; case 3:

j++; //break; case 4:

j++; //break; case 5:

j++; //break; default:

j++; //break; }

System.out.println(j) } }

2. switch (n) {

45 9722 case 1: system.out.println(\ //break; case 2: system.out.println(\ break; }

四、 分析程序,写出运行结果

1、 对下列代码,当x=2,y=3时,若有输出,指出输出的结果。当x=3,y=2时,其输出是什么?

当x=3,y=3时呢? if(x>2){

if(y>2){

int z=x+y;

System.out.println(“z is ”+z); } } else

System.out.println(“x is ”+x);

x=2 y=3 z is 2 x=3 y=2 无输出 x=3 y=3 z is 6

2、 执行下列switch-case语句后y是多少?

x = 3; y = 3;

switch(x+3){

case 6: y=1; default: y+=1

} y=2

3、 用switch-case语句重写下列if语句? if(a ==1){ x+=5; }

else if(a==2){ x+=10; }

else if(a==3){ x+=16; }

switch(a){

case 1: x+=5; break;

case 2: x+=10; break; case 3: x+=16; break; }

4、 使用条件运算符重写下列if语句

if(count % 10 ==0)

System.out.println(count+”\\n”); else

System.out.println(count+” ”);

System.out.print(count+(count==0?”\\n”:” ”)); 5、 用if-else语句重写以下语句

z=(x>y)?x-2:x; if(x>y){ z=x-2; }else{ Z=x; }

五、 编程题

1、 用户输入一个成绩(整数,小于100),根据分数给出该成绩是优秀(大于等于90)、良好(大

于等于75小于90)、合格(大于等于60小于75)还是不及格(小于60)。(使用if 和 switch两种方式编写程序)。

2、 读入一个整数并检查它是不是偶数,例如,如果输入15,输出应该是:“15是偶数吗?false”。

如果输入是1000,输出应该是:“1000是偶数吗?true”。

3、 读入三角形的三条边,如果输入有效,计算它的周长;否则,显示输入无效。如果任意两边的

和大于第三边输入有效。 4、 产生两个10以下的随机整数,并提示用户输入这两个整数的和,然后,程序检查结果是否正确,

正确的话,显示true;否则,显示false。 5、 “员工信息系统”:要求输入一个企业员工的姓名、性别、工号、月基本工资、奖金、补贴后,

计算个人所得税。系统输出员工姓名、性别、工号和月应发薪水和实发薪水(月应发薪水-个人所得税)。

个人所得税计算方法:当收入<=3500时,免交个人所得税;当3500<收入<=5000时,个人所得税=(工资-3500)*0.05;当5000<收入<=7500时,个人所得税=1500*0.05+(工资-5000)*0.075;当7500<收入<=10000时,个人所得税=1500*0.05+2500*0.075+(工资-7500)*0.12;当10000<收入<=13000时,个人所得税=1500*0.05+2500*0.075+2500*0.12+(工资-10000)*0.18;当收入>13000时,个人所得税=工资*0.2。

第四章 循环语句

知识点汇总 课堂笔记

1、 While循环语句 初始化;

while(循环条件){ 执行语句; ? ?

循环变量改变; }

2、 do-while循环语句 do{

执行语句;

? ?

} while(循环条件) do?while至少执行循环

体一次,while有可能一次也不执行

3、 For循环语句

for(初始化表达式;循环条件;操作表达式) {

循环体; }

4、 循环嵌套

? 循环嵌套是指在一个循环语句的循环体中再定义一个循环语

句的语法结构。

? While、do?while、for循环语句都可以进行嵌套,也可以

相互嵌套。

for(初始化表达式;循环条件;操作表达式) { ?. ?.

for(初始化表达式;循环条件;操作表达式){ 执行语句; ?. ?. } }

5、 跳转语句

? 程序设计时,有时需要中断正在执行的程序段,转而执行另外的

程序段,这时就需要使用跳转语句。

? Java语言支持break、continue两种跳转语句。 ? break:在switch-case语句中控制程序跳出switch-case语句,

在循环语句中break的作用是立即终止包含它的最内层的循环。 ? continue:只用于循环结构中,只终止本次循环,进入下一次循

环。

? break语句出现在嵌套循环中的内循环时,只能跳出内层循环,

如果想使用break语句跳出外循环则需要对外层循环添加标记。

标记名: for(初始化表达式;循环条件;操作表达式) { …. …. for(初始化表达式;循环条件;操作表达式){ 执行语句; break 标记名; …. …. } } 练习题

一、 填空题

1、for循环控制的三部分是( )、( )、( )

2、写一个for循环,输出整数1 到10( ) 3、break语句和continue语句的区别是( ) 4、while循环与do-while循环的区别是( )

5、如果一个变量是在for循环中说明的,退出循环后还可以使用该变量吗?( ) 二、 选择题

1、下列语句哪些属于循环语句?(多选)( )

A、for语句 B、if语句 C、while语句 D、switch语句 2、下列循环语句的循环次数是( )。

int i=5; do {

System.out.println(i--); i--;

}while(i!=0);

A.5 B.无限 C.0 D.1 3、下列代码哪几行会出错?( )

1) public void modify() { 2) int I, j, k; 3) I = 100;

4) while (I > 0) { 5) j = I * 2;

6) System.out.println(\7) k = k + 1; 8) I--; 9) } 10 }

A.line 4 B.line 6 C.line 7 D.line 8 4、下列代码执行完后,x的值为( )。 int x=1; while(x<73){x*=2;}

A、100 B、2 C、64 D、128 5、下列代码执行完后,x的值为( )。 int x=18; while(x>1){x/=2;}

A、1 B、0 C、9 D、以上都不对 6、下列代码执行完后,s的值为( )。 int s=0; for(int i=1;i<5;i++){s+=i;} A、10 B、15 C、5 D、以上都不对 7、下列代码执行完后,s的值为( )。 int s=0; for(int i=1;i<5;i+=2){s+=i;}

A、10 B、15 C、4 D、以上都不对 8、下列代码执行完后,s的值为( )。

int s=0;

for(int i=1;i<7;i++){ if(i%2==0) continue; s+=i; }

A、16 B、9 C、6 D、以上都不对

9、给定下列代码,如果x=0,当以下for循环语句执行完后,x是( )。 for(int i=0;i<5;i++) x=x+i;

A、10 B、15 C、5 D、4

10、下段代码执行完毕后,结果为( )。 int s=0;

for(int i=1;i<10;i++){ if(i>=5) break; s +=I; }

A、10 B、15 C、5 D、以上都不对 11、下列语句会执行( )次循环。

for(int i=1;i<10;i+=3){ ?..//do something }

A、3 B、4 C、2 D、以上都不对 12、关于下列循环语句段,正确的说法是( )。

for(;;){

?//do something }

A、不做循环 B、无限循环下去 C、循环1次 D、以上都不对 13、执行下列代码,正确的说法是( )。 int x=1;int s=0;while(x<5){s+=x;}

A、结果是x=1,s=10 B、程序陷入死循环 C、结果是x=5,s=10 D、以上都不对 14、程序运行后的输出是哪项?( )

class TestApp{

public static void main (String[] args){ for (int i=0; i

System. out .print (i); } } }

A.0123 B.012456789 C. 0123456789 D. 012 15、下列程序结果是什么? ( )

class WhileTests {

public static void main (String [] args) { int x=5;

while (++x<4) { --x; }

System.out.println( \ } }

A.X=6 B. X=5 C.X=2 D.编译失败 16、下列程序结果是什么?( )

class Foo {

public static void main (String [] args) { int x=O; int y=4;

for (int z=0; z<3; Z++; X++) { if(x>1&++y<10) y++; }

System. out .println (y); } }

A.7 B.8 C.10 D.12

三、 修改程序错误

1. public class Test{

public void main(String args[]){ int n=9; while(n>6){

System.out.println(n); n--; } } }

2.找出下面代码的错误部分,说明错误类型及原因,并更正。

四、 分析程序,写出运行结果 1、public class Exercises5_2 { public static void main(String[] args) { int n = 1, m, j, i; for (i = 3; i <= 30; i += 2) { m = (int) Math.sqrt((double) i); for (j = 2; j <= m; j++) if ((i % j) == 0) break; if (j >= m + 1) { System.out.print(i + \ if (n % 5 == 0) System.out.print(\ n++; } } } }

运行结果是:( )

2、下列循环重复多少次,循环的输出是什么?

int i=1; while(i>10)

if((i++)%2==0)

System.out.println(i);

3、下列两个循环后,sum是否有相同的值? for(int i=0;i<10;i++){ for(int i=0;i<10;++i){ sum+=i; sum+=i; } } int x = 1;

while (x <= 10); { i++; }

4、将下列for循环语句分别转换为while循环和do-while循环。

long sum=0;

for(int i=0;i<=1000;i++){

sum=sum+i;

}

6、 下列两段程序能够正常结束吗?如果能,输出结果。

int balance = 1000; int balance = 1000; while(true){ while(true){ if(balance < 9) if(balance < 9) continue; break; balance =balance-9; balance =balance-9; } } System.out.println(“balance is”+balance); System.out.println(“balance is”+balance); 7、 public class Test04{

public static void main(String args[]){ int n=9; while(n>6){

System.out.println(n); n--;

} } }

五、 编程题

1、 对1到100的奇数进行求和(for+continue);

2、 编写程序,采用适当的循环和控制语句实现下述功能:打印输出0~200能被7整除但不能被4

整除的所有;要求每行显示6个数据。

3、 编写一个显示(英里转换成千米)表格的程序(注意:1英里为1.609千米),格式如下:

英里 千米 1 1.609 2 3.218 ??. ??? 9 14.481 10 16.09

4、 提示用户输入学生的数量及每个学生的名字和得分,而后显示得分最高的学生。 5、 显示从100到1000之间所有能被5和6整除的数,每行显示10个。

6、 显示从100到200之间所有能被5或6整除,但不能同时被两者整除的数,每行显示10个数。 7、 计算0~10之间各个整数的平方值和立方值,以如下格式显示:

整数 平方 立方 0 0 0 1 1 1 2 4 8

?. ? ? 10 100 1000 8、 采用循环语句显示以下图案:

* * * * * * * * * * * * * * *

9、 计算公式的值:1/1+2/(1+2)+3/(1+2+3)+?..+10/(1+2+3+??+10)。

10、 在上一章“员工信息系统”程序基础上,输入多个员工信息,进行个人所得税计算,显示每

个员工信息,并计算所有员工实际收入的最大值、最小值和平均值。

第五章 方法

知识点汇总

1、方法的语法格式

修饰符 返回类型 方法名(参数类型 参数名1,参数类型 参数名2,… …) {

执行语句; … …

return 返回值; } ? 修饰符:public、private、abstract、fanal、static

? 返回类型:byte/int/short/long/float/double/char/String/类名等等 ? 方法名:第一个单词小写,其他的单词首字母大写 ? 参数类型:用于限定调用方法时传入参数的数据类型 ? 参数名:是一个变量,用于接收调用时传入的数据 ? return:用于结束方法以及返回方法指定的类型的值

? 返回值:返回值与返回类型一致,如果是void类型则没有返回值 2、方法的调用

? 没有返回类型:方法名(参数值1,参数值2,? ?)

? 有 返回类 型:返回类型 变量名 = 方法名(参数值1,参数值2,? ?) 3、方法的重载

? Java中允许在一个程序中定义多个名称相同的方法 ? 但参数的类型或个数必须不同

? 在方法调用过程中,通过传入的参数便可以确定调用哪个重载的方法了 4、递归方法

? 一个方法可以调用自己,这种调用成为递归调用 ? 一般来说,递归方法需要有退出条件

? 当满足条件时,递归方法终止并且返回

课堂笔记

练习题

一、 填空题

1、Java语言规定,应用程序开始执行点是( )。

2、在Java语言中,一个方法一般由两个部分组成,它们是( )和( )。 3、在一个被调用方法中,一个return语句可返回(一个值 )给调用的方法。

4、在调用方法时,如果实参是数组名,它与对应形参之间的数据传递方式是( ) 5、Java语言中规定方法的返回值的类型是由( )决定的。

二、 选择题

1、关于方法重载的描述,以下选项中哪些是正确的?多选( ) A、方法名必须一致 B、返回值类型必须不同 C、参数个数必须一致 D、参数的个数或类型不一致 2、下列是方法定义的形参表,定义形式正确的是( )。 A、int num1,num2 B、num1,num2

C、int num1,int num2 D、int num1;int num2 3、Java中主方法头部定义的正确格式是( )。

A、public static void main(); B、public static void main(String args[ ]) C、public static void main(int args[]) D、static public int main(String args[]) 4、一个方法的头部是“public static int min(int num1,int num2)”,下列调用格式错误的是( )。

A、min(5.0,10) B、min(5+2,10) C、min(‘5’,10) D、min(‘5’,min(‘6’,10)) 5、若有以下调用语句,则正确的fun()方法头部是( )。

public static void main(String args[]) { float x; int a; …….

fun(x,a); } A、void fun(int m,float x) B、void fun(float a, int x) C、void fun(int m,float x[]) D、void fun(int x,float a) 6、有如下函数调用语句“func(rec1,rec2+rec3,(rec4,rec5));”,该语句中,含有的实参个数是( )。

A、3 B、4 C、5 D、有语法错误 7、Java中,在调用重载方法时,原则是( )。

A、只要方法名一致,就可以调用

B、必须方法名一致,参数的个数、类型、顺序一致 C、只要方法名一致,与参数的个数、类型、顺序一致 D、与方法的返回值有关

8、Java参数的传递方式有( )。

A、按值传递 B、按地址传递 C、按值或地址传递 D、以上都不对 9、下列方法重载,正确的是( )。

A、int fun(int a,float b) B、float fun(int a,float b){} float fun(int a,float b){} float fun(int x,float y){}

C、float fun(float a) D、float fun1(int a,float b){} float fun(float a,float b){} float fun2(int a,float b){} 10、关于方法的说法,下面错误的是( )。

A、Java中的方法,参数传递时是值传递调用,而不是地址传递 B、方法体是对方法的实现,包括变量声明和Java的合法语句

C、如果程序定义了一个或多个构造方法,在创建对象时,也可以用系统自动生成空的构造方

法。

D、类的私有方法不能被其子类直接访问

11、如果一个方法没有return语句,那么( )。

A、编译时会产生语法错误 B、它一定是void方法

C、 它一定是int、double、float方法 D、类的私有方法不能被其子类直接访问 12、关于方法以下说法正确的是( )。

A、Java中每个方法是一个独立的程序;

B、Java类中一个方法一旦被定义,程序运行时其代码一定被执行; C、某个方法若未被任何其它方法调用,则其中的代码一定不会被执行;

D、 Java程序中main方法一定不会被其它方法调用,所以main方法一定不会被执行。 13、关于方法的返回值和return语句,以下说法正确的是( )。

A、Java中每个方法都必须有返回值; B、一个方法可以返回多个返回值;

C、有返回值的方法中必须有return语句。

D、返回值类型为void的方法不能有return语句 14、关于方法的参数以下说法正确的是( )。

A、Java中每个方法都必须有参数;

B、一个方法可以有多个形参变量也可以没有; C、有返回值的方法必须有参数。

D、型参变量是int型方法,调用语句中所给的实参数据也必是int型的。

15、若有方法定义:staitc int fun(int num){return 2*num;} 以下调用语句正确的是( )。

A、System.out.println(fun(‘A’+‘B’)); B、int a=fun(2.3) ; C、fun(2 , 3);

D、if(fun(4)) System.out.println(“正确”); 16、以下程序运行结果是( )。

public class Test {

public static void main(String[] args) { int a=1,b[]={2}; add(a); add(b);

System.out.println(a+\ }

static int add(int x){ x++;

return x; }

static void add(int[] x){ x[0]++; }

}

A、 1,2 B、 2,2 C、 1,3 D、2,3 17、关于重载,以下说法正确的是( )。

A、重载方法的返回值类型必须相同; B、重载方法的方法名必须不同; C、重载方法的参数个数必须不同。 D、重载方法的形参表必须不同。

18、以下方法用以返回传入的两个正整数的最大公约数,该代码段编译运行会出错吗?出现的错误是什么?( )

1. static int add(int x,int y){

2. if(x>y){

3. int z = x; x=y; y=z; 4. }

5. int i;

6. for(i=x-1;i>0;i--){

7. if(x%i==0&&y%i==0)return i; 8. } 9.}

A、第1行出错,两个同为int的形参变量定义应该是:int x,y; B、第1行出错,方法没有返回int值; C、第2行出错,x和y未赋值; D、方法不出错

19、下列方法定义中,正确的是( )。

A、int x( int a,b ) { int w; w=a-b; }

B、double x( int a,int b) { return (a-b); }

C、double x( a,b ) { return a-b; }

D、int x( double a , double b) { return b; } 20、以下max()方法要从传入的两个数据中找出较大的数据返回,则正确定义该方法的代码是( )。

A、 int max(int a,int b){ B、 int max(int a,int b){

if(a>b) if(a>b) ; return a ; return a ;

else if(b>a) else return b ; return b ; } } C、 int max(int a, b){ D、 int max(int a,int b){

if(a>b) if(a>b) return a ; return a ; else return b ; return b ; } }

三、 修改程序中的错误

1、 以下方法是将输入的一个整数反序打印出来,例如,输入”1234”,则输出“4321”;输入“-1234”,

则输出“-4321”,修改下面方法中的错误。 static void printopp(long n){ int i=0; if(n==0) return 0; else while(n!=0){ if(n>0 || i==0) System.out.print(n); else

System.out.print(-n); i=1; n = n;

}

} }

2、 以下程序的功能是使用递归方法求斐波那契数列前20项。修改下面程序中的错误。

public class Fibonacci{ //使用递归方法 private static int getFibo(int i){ if(i==1 || i==2) Return 1; else Return getFibo(i+1) + getFibo(i+2); } Public static void main(String args[]){

3、下面方法是求100~1000的水仙花数,改正方法中的错误。

static int fun(int n){ int i,j,k; i=n0; //i=n/100

j=n-i*10; //j=n/10-i*10

k = n/10; //k = n ; if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) return n; else

return 0;

}

3、 以下程序的功能是计算下面函数的值,改正方法中的错误。

public class Fun{ static double fun(double x,double y,double z){ return Math.sin(x)/(Math.sin(x-y)*Math.sin(x-z)) } public static void main(String args[]){ double x=20,y=30,z=40; System.out.println(fun(x,y,z)+fun(x,y,z)-fun(z,x,y)); } }

四、 阅读程序

1、 阅读下列程序,说明程序的功能 public static int sumDigits(long n){ int sum = 0; while(n / 10 != 0){ sum += n % 10; n = n / 10; } sum = sum + n;

2、 阅读下列程序,说明程序的功能

public static void sort(int num1, int num2, int num3){ int temp; if(num1 > num2) { temp = num1; num1 = num2; num2 = temp; } if(num2 > num3) { temp = num2; num2 = num3; num3 = temp; } if(num1 > num2) { temp = num1; num1 = num2; num2 = temp; } System.out.println(\输入的三个数按升序排列为\ }

五、 编程题

1、 使用下述方法头,计算一个整数各位数字之和。

public static int sumDigits(long n) 2、 编写以下方法,按升序排列三个数并输出。

public static void sort(int num1, int num2, int nums)

3、 编写一个求“s=a+aa+aaa+?+aaa?a”的值的方法,其中a是一个1到9之间的数字。例如

“2+22+222+2222+22222”(此时共有5个数相加),由用户输入确定相加项数。

4、 一个数如果恰好等于它的因子之和,这个数就称为完数,例如6=1+2+3。编程找出1000以

内的所有完数。

5、 编写一个方法,计算下列级数。

m(i)=1/2+2/3+?+i/(i+1)

第六章 数组

1、一维数组声明与创建

? 声明: 数据类型[ ] 数组名;

或者

数据类型 数组名

[ ];

? 创建:

数组名 = new 数据类型[数组长度];

? 声明 And 创建:

数据类型[] 数组名 = new 数据类型[数组长度] 或

数据类型 数组名[] = new 数据类型[数组长度]

2、一维数组—初始化

? 动态初始化:数组名[下标] = 值; ? 静态初始化: 数据类型 数组名[] = {元素1,元素2,元素3,元素4? ?}; 或

数据类型 数组名[] =

new 数组类型[]{元素1,元素2,元素3,? ?};

3、一维数组—引用

? 引用格式:数组名[下标];

? 下标取值范围为0—(数组长度-1)

? 数组的长度用length取得,调用格式为 :数组名.length 4、数组常见的操作—数组遍历

? 数组的遍历:依次访问数组中的每个元素 ? for 循环的语法为:

for (int i=0;i< 数组名.length;i++) { ?//处理元素的相关代码 }

? foreach循环的语法为:

for (数据类型 变量:数组名) { ?//处理元素的相关代码 }

5、二维数组---声明与创建

? 声明 数据类型 数组名[ ][ ];

或者 数据类型[ ][ ] 数组名;

? 创建 数组名 = new 数据类型[cel][ce2]; ? 声明 And 创建

数据类型[][] 数组名 = new 数据类型[ce1] [ce2]

数据类型 数组名[][] = new 数据类型[ce1] [ce2]

6、二维数组不规则创建

? 数组名 = new 数据类型[ce][]; ? 数组名[0] = new 数据类型[ce0]; ? 数组名[1] = new 数据类型[ce1]; ? ??

课堂记录

? 数组名[N] =

new 数据类型[ceN];

7、二维数组—初始化和引用

? 静态初始化:

int arr[][]={{2,3},{1,5,6,8},{3,4,9}}。

? 动态初始化: float numthree= new int[10][10]; numthree[0][0]=1.5f; numthree[0][1]=1.3f; ?. ?.

? 引用:数组名[下标1] [下标2];

练习题

一、 填空题

1、若int[]a={12,45,34,46,23},则a[2]= ( )

2、若inta[3][2]={{123,345},{34,56},{34,56}},则a[2][1]=( )

3、已知:int a[ ]={2,4,6,8}; 则:表达式(a[0]+=a[1])+ ++a[2]值为( )。 4、在Java中,字符串和数组是作为(对象)出现的。 5、数组对象的长度在数组对象创建之后,( )改变。数组元素的下标总是从( )开始。 6、对于数组int[][] ={{1,2,3},{4,5,6}}来说,t.length等于( ),t[0].length等于( )。 7、已知数组a的定义为”int a[]={1,2,3,4,5};”,则a[2]=( ),数组b的定义为“int b[]=new int[5];”,则b[2]=( ),数组c的定义为“Object c[]=new Object[5];”,则c[2]=( ); 8、调用数组元素时,用( )和( )来唯一确定数组中的元素。 9、数组的初始化是( )

10、数组元素通过( )来访问,数组Array的长度为( ) 11、数组复制时,“=”将一个数组的( )传递给另一个数组。 12、JVM将数组存储在( )中。

13、数组二分法查找运用的前提条件是数组已经( )。 14、数组最小下标是( )。

15、Java中数组下标的数据类型是( )。 16、语句“int a[]=new int[100]”的含义是( )。

17、主方法main(String args[])的参数“String args[]”是一个( )数组。 18、已知数组a1与a2定义如下:

int a1[] = {2,3,5,7,11,13}

int a2[] ={1001,1002,1003,1004,1005,1006,1007}

在语句”System.arraycopy(a1,2,a2,3,4);”执行后,数组a2的值是( )

二、 选择题

1、下面哪种写法可以实现访问数组arr的第1个元素?( ) A、arr[0] B、arr(0) C、arr[1] D、arr(1) 2、以下哪个选项可以正确创建一个长度为3的二维数组?( )

A、new int[2][3] B、new int[3][] C、new int[][3] D、以上答案皆不对 3、下列关于数组的定义形式,哪些是错误的?( )

A.int[ ]c=new char[10]; B.int[ ][3]=new int[2][ ]; C.int[ ]a; a=new int; D.char b[ ]; b=new char[80]; 4、执行String[] s=new String[10];语句后,哪些结论是正确的?( )

A.s[0] 为 未定义 B.s.length 为10

C.s[9] 为 null D.s[10] 为 \5、下列关于Java语言的数组描述中,错误的是( )。

A.数组的长度通常用length表示 B.数组下标从0开始

C.数组元素是按顺序存放在内存的 D.数组在赋初值和赋值时都不判界 6、public class T18 {

static int arr[] = new int[10];

public static void main(String a[]) { System.out.println(arr[1]); } }

哪个语句是正确的?( )

A.编译时将产生错误 B.编译时正确,运行时将产生错误 C.输出零 D.输出空 7、下列选项中,语句有错误的是( )

A、int a[] B、int b[]=new int[10] C、int c[] = new int[] D、int d[]=null 8、下列选项中,语句有错误的是( )

A、int a[][]=new int[5][5] B、int [][]b =new int[5][5] C、int []c[] = new int[5][5] D、int [][]d=new int[5,5] 9、关于下面的程序,正确的结论是( ) public class ex4_7{ public static void main(String args[]){ int a[] =new int[5]; Boolean b[]=new boolean[5]; System.out.print(a[1]); System.out.println(b[2]); } }

A、运行结果为0false B、运行结果为1true

C、程序无法通过编译 D、可以通过编译但结果不正确 10、下列关于数组的叙述错误的是( )。

A、数组是将一组相同类型的数据顺序存储,组成一种复合数据类型

B、在Java语言中,数组是一种引用类型,数组名如同对象名一样,是一种引用 C、对于多维数组,从最高维开始,可以对每一维分配不等的空间

D、在Java、语言中,数组元素可以互相赋值,而数组名不能直接赋值 11、在Java程序中声明一个数组,错误的是( )。

A、int a[] B、int a[][] C、float a[10] D、float []a[] 12、下列语句不能通过编译的是 ( )。

A、int a[]={1,2,3,4} B、int b[] C、int c[] = new int[3] D、int d = new int[] 13、在下述Java语言中,错误的创建数组的方法是( )。

A、int intArray[]; intArray = new int[5]; B、int intArray[] = new int[5] C、int intArray[]={1,2,3,4,5} D、int intArray[5] = {1,2,3,4,5} 14、若数组a定义为“int a[][]=new int[3][4]”,则a是( )。

A、一维数组 B、二维数组 C、三维数组 D、四维数组 16、设定义了数组“int age[]=new int[10];”,则数组的第一个元素的正确引用方法为( )。

A、age[1] B、Age[0] C、age[] D、age[0]

17、设定义语句 “int a[]={66,88,99};”,则以下对此语句的错误叙述是( )。

A、定义了一个名为a的一维数组 B、a数组有3个元素 C、a数组的下标为1~3 D、数组中的每个元素是整型 18、在Java程序中有定义“int x[][]=new int[4][5];”,则x.length和x[3].length的值分别是( )。

A、4和5 B、5和4 C、4和3 D、5和3 19、已知“int a[] ={5,6,7,8,4,3,2,1};”,则“a[1]+a[2]-a[3]”等于( )。 A、4 B、3 C、5 D、以上都不对 20、已知“int a[] ={1,2,3,4,3,2,1};”,则a[a[1]] =( )。 A、2 B、3 C、4 D、以上都不对

21、为了定义三个整型数组a1、a2、a3,下面声明正确的语句是( )。

A)intArray [] a1,a2; int a3[]={1,2,3,4,5}; B)int [] a1,a2; int a3[]={1,2,3,4,5}; C)int a1,a2[]; int a3={1,2,3,4,5}; D)int [] a1,a2; int a3=(1,2,3,4,5); 22、以下定义数组的语句正确的是( )。

A) int[] a ; B) int a[10] ;

C) int a = new a[10] ; C) int a[10] = {1,2,3} ;

23、设有double型数组定义:double d1[]={1.2,2.3,3.4,4.5,5.6}; 则d1[2]的值是( A)1.2 B)2.3 C)3.4 D)4.5 24、有数组定义语句:int a[ ][ ] = {{1,2,3},{4,5},{6,7},{8}}; 则( )。 A)a.length的值是8 B)a[0].length的值是3 C)a[1][2]的值是2 C) 该语句不合法

25、若有定义:byte[] x={11,22,33,-66};其中0≤k≤3,则对x数组元素错误的引用是( )A)x[5-3] B)x[k] C)x[k+5 ] D)x[0] 26、以下语句编译运行可能出现的错误是( )。 1. int a[ ];

2. a = new int[3]

3. System.out.print(a[0]); 4. for(int i=1;i<=3;i++){ 5. a[i] = i ;

6. }

A)语句1编译出错:方括号须标明元素个数; B)语句2编译出错:数组名a后须跟方括号; C)语句3编译出错:a[0]未经赋值; D)语句5运行出错:下标越界异常; 27、以下语句执行结果是( )。 1. int[ ] a = {1,2,3};

2. int[ ] b = new int [ 4 ] ; 3. a = b;

4. for(int i=0 ; i

) 5. a[i] += i ; 6. } System.out.print(b[3]); A)编译运行正常输出0; B)编译运行正常输出3;

C)语句5编译出错:a[0]未经赋值; D)语句6运行出错:下标越界异常;

28、以下语句执行结果是( )。

1. int[ ] a = {1,2,3,4,5,6,7,8}; 2. a = new int [ 6 ] ;

3. for(int i=1 ; i<5 ; i++){ 4. a[i] += 2*i ;

5. }

6. System.out.print(a[ 5 ]); A)编译运行正常输出5; B)编译运行正常输出10; C)编译运行正常输出0;

D)语句6运行出错:下标越界异常;

29、在注释//Start For loop 处要插入哪段代码可实现数组a全部元素的操作?(public class Lin{

public void amethod(){ int a[] = new int[4]; //Start For loop {

a[i]=i;

System.out.println(a[i]); } } }

A. for (int i=0; i < a.length() -1; i++) B. for (int i=0; i< a.length(); i++) C. for (int i=1; i < 4; i++) D. for (int i=0; i< a.length;i++) 30、以下代码的调试结果? ( )

public class Q {

public static void main(String argv[]) { int anar[]= new int[5];

System.out.println(anar[0]); }

}

A)编译错误:anar[0] 在使用前未赋值。 B)null C)0

D)5

31、下列创建二维整型数组正确语句是( )。

A)int a[][] = new int [10,10]; B)int a[10][10] = new int [][]; C)int a[][] = new int [10][10]; D)int []a[] = new int [10][10]; 32、给出下面代码:

public class Person{

static String arr[] = new String[10]; public static void main(String a[]) { System.out.println(arr[1]); }

}

以下那个说法正确? ( ) A)编译时将产生错误;

B)编译时正确,运行时将产生错误; C)输出0; D)输出null。

33、设有如下说明:

char[] c = new char[100]; 则,c[50]的值为? A) 50

B) '\