admin 管理员组文章数量: 887021
2023年12月18日发(作者:weigh的过去式是什么)
目 录
第一章 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、 重点掌握两个程序
:Java编译器工具,可以将编写好的Java文件(.java)编译成Java字节码文件(.class);
:Java运行工具,启动Java虚拟机进程,运行编译器生成的字节码文件(.class)
5、 一切程序运行的入口
public static void main(String args []){
n(“Hello World!”);
}
练习题
一、 填空题
1、 Java的三个技术平台分别是( J2SE )、( J2EE )、(J2ME )。
2、 Sun公司针对领域不同,提供了三个Java版本,其中对于个人计算机程序开发的是( J2SE ),对于企业开发应用的是( J2EE ),对于嵌入式设备应用开发的是( J2ME )。
3、 建立Java开发环境,安装JDK,一般需要设置环境变量( path )、( classpath )。
4、 编写一个Java源程序,其文件名为,则编译该源程序的命令为(javac ),运行该程序的命令为( java ),生成文档注释的命令为( javadoc )。
5、 Java程序的运行环境简称之为( JRE )。
6、 编译Java程序需要使用(javac )命令。
7、 和两个可执行程序放在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可执行文件,其中“”命令的作用是以下哪一种?( D )
A、Java文档制作工具 B、Java解释器 C、Java编译器 D、Java启动器
5、 如果jdk的安装路径为“d:jdk”,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?(B )
A、d:jdk; B、d:jdkbin; C、d:jrebin; 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、程序语句“n(“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 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[]){
}
}
n("知识就是力量");
n("知识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、 获取输入信息
:表示输出流,print()是输出到控制台,println输出到控制台,并且将光标移到下一行
:表示输入流,输入流来自键盘,需要使用Scanner类创建对象读取来自的输入
Import r;
Scanner scanner=new Scanner()
int a=t()
方法
.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 )。
n(“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.” )。
n(“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 me123
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; n(“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 -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、”u123f”
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.u03A6 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("7”);
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. (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. =II;
6. Wrench2 w2=go(w, );
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="123";
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. n(¨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;
n(“b=”+b);
}
} //b=7
2. public class Test{
public void main(String args[]){
int x=12;
{
int y=96;
n(“x is”+x);
n(“y is”+y);
}
y=x;
n(“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;
("现在kilometer的值是"+kilometer);
2、 按照以下要求,编写Java代码:
(1) 先定义3个变量,分别为圆柱体底面半径、高和体积;
(2) 输入半径和高;
(3) 计算圆柱体体积;
(4) 输出计算结果。
import r;
class HelloWord{
public static void main(String args[]){
}
}
double v,r,h;
final double PI=3.14;
Scanner scan=new Scanner();
n("请输入半径:");
r=uble();
n("请输入高:");
h=uble();
v=PI*r*r*h;
n("体积为:"+v);
3、 编写程序将磅转换为千克。程序提示用户输入磅数,转换为千克并显示结果。一磅约等于0.454千克。
import r;
class HelloWord{
}
public static void main(String args[]){
}
double x,y;
Scanner scan=new Scanner();
n("请输入磅数:");
x=uble();
y=0.454*x;
n(x+"磅="+y+"千克");
4、 编写一个程序,读入费用与提成率,计算提成与总费用。例如,如果输入10作为费用,12%作为提成率,则显示提成费为1.2,总费用为11.2。
import r;
class HelloWord{
public static void main(String args[]){
}
}
double x,y,s;
Scanner scan=new Scanner();
n("请输入费用:");
x=uble();
y=x*0.12;
s=x+y;
n("总费用="+s);
5、 编写程序读入0到1000之间的一个整数,并将其各个位上的数字加起来。例如,整数832,各位数字之和为13。
import r;
class HelloWord{
public static void main(String args[]){
int x,y;
Scanner scan=new Scanner();
n("请输入一个整数:");
x=t();
y=x%10+x/10%10+x/100%10;
n(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) n(x-y) ( -2 )
(2) n(x>y) ( false )
(3) n(x (4) n(x++ == y) ( false ) 二、 选择题 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--; } n(“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的哪些值将引起"default"的输出?( CD ) switch(m){ case 0: n("case 0"); case 1: n("case 1"); break; case 2: default: n("default"); } 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("x>l"); else if (x>5) System. out .println("x>5"); else if (x<10) System. out. println("x else if (x<29) System. out .println( "x<29"); 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++; .println (i); } } A. 6 B. 5 C. 4 D.编译失败 19、下列程序结果为( C )。 class Output ( public static void main (String[] args) { int i=5: ( "4"+i+""); (i+5+"7"); n (i+"8"); } } 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( "z="+z); } } A.z=21 B. z=22 C. z=23 D. z= 24 三、 修改程序错误 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; } n(j) } } 2. switch (n) { 45 9722 case 1: n(""The name is 1"); //break; case 2: n(""The name is 2"); break; } 四、 分析程序,写出运行结果 1、 对下列代码,当x=2,y=3时,若有输出,指出输出的结果。当x=3,y=2时,其输出是什么?当x=3,y=3时呢? if(x>2){ if(y>2){ int z=x+y; n(“z is ”+z); } } else n(“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) n(count+”n”); else n(count+” ”); (count+(count%10==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 { n(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) n(" The value of j is " + j); 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 if(i==3) break; System. out .print (i); } } } A.0123 B.012456789 C. D. 012 15、下列程序结果是什么? ( ) class WhileTests { public static void main (String [] args) { int x=5; while (++x<4) { --x; } n( "x="+x); } } 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){ n(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) ((double) i); for (j = 2; j <= m; j++) if ((i % j) == 0) break; if (j >= m + 1) { (i + " "); if (n % 5 == 0) ("n"); n++; } } } } 运行结果是:( ) 2、下列循环重复多少次,循环的输出是什么? int i=1; while(i>10) if((i++)%2==0) n(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; } } n(“balance is”+balance); n(“balance is”+balance); 7、 public class Test04{ public static void main(String args[]){ int n=9; while(n>6){ n(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、n(fun(‘A’+‘B’)); B、int a=fun(2.3) ; C、fun(2 , 3); D、if(fun(4)) n(“正确”); 16、以下程序运行结果是( )。 public class Test { public static void main(String[] args) { int a=1,b[]={2}; add(a); add(b); n(a+","+b[0]); } 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) (n%10); else (-n%10); i=1; n = n%10; } } } 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=n%100; //i=n/100 j=n%10-i*10; //j=n/10-i*10 k = n/10; //k = n %10; 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 (x)/((x-y)*(x-z)) } public static void main(String args[]){ double x=20,y=30,z=40; n(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; } n("输入的三个数按升序排列为" +num1+"<"+num2+"<"+num3); } 五、 编程题 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[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} 在语句”opy(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. 为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[]) { n(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]; (a[1]); n(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[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)的值是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. (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< ; i++){ 。 。 ) 5. a[i] += i ; 6. } (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. (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; n(a[i]); } } } A. for (int i=0; i < () -1; i++) B. for (int i=0; i< (); i++) C. for (int i=1; i < 4; i++) D. for (int i=0; i< ;i++) 30、以下代码的调试结果? ( ) public class Q { public static void main(String argv[]) { int anar[]= new int[5]; n(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[]) { n(arr[1]); } } 以下那个说法正确? ( ) A)编译时将产生错误; B)编译时正确,运行时将产生错误; C)输出0; D)输出null。 33、设有如下说明: char[] c = new char[100]; 则,c[50]的值为? A) 50 B) 'u0000' C) " " D) 不定 E) 为null,直到被赋值。 34、设有如下程序,其运行结果为( )。 class Q2 { public static void main(String[] args) { int[] seeds = {1,2,3,4,6,8}; int n= ; for (int i = 0; i < 3; i++) for (int k = 0; k< n-1; k++) seeds[k]= seeds[k+1]; for (int i = 0; i ("t"+seeds[i]); } } A)输出: 1 2 3 4 6 B)输出: 2 3 4 6 8 C)输出: 3 4 6 8 8 D)输出: 4 6 8 8 8 35、如下程序,其运行结果为( )。 )( class Q2 { public static void main(String[] args) { int[][] a = new int[4][]; for (int i = 0,k=0; i < 4; i++){ a[i] = new int[i+1]; for (int j = 0; j <= i; j++){ a[i][j] = ++k; } } (a[3][3]); } } A)0 B)4 C)9 D)10 三、 改错 1、public int m1 (int number[20]){ number = new int[20]; for(int i=0;i<;i++) number[i] = number[i-1] + number[i+1]; return number; } 2、以下语句段试图使用数组求1到10之和,语句段在编译运行中是否会出错,若出错是第几句,出错原因是什么?不出错则运行结果是什么? (1) 1) int a[] , sum=0; 2) a = {1,2,3,4,5,6,7,8,9,10}; 3) for(int i=1;i<10;i++){ 4) sum+=a[i]; 5) } 6) n("sum="+sum) ; (2) 1) int sum=0; 2) int[ ] a = {1,2,3,4,5,6,7,8,9,10}; 3) for(int i=1;i<=10;i++){ 4) sum+=a[i]; 5) } 6) n("sum="+sum) ; (3) 1) int sum=0; 2) int[ ] a = new int[10]; 3) for(int i=0 ; i < 10;i++){ 4) sum+=a[i];//未赋值 5) } 6) n("sum="+sum) ; (4) 1) int[ ] a = new int[10], sum = 0 ; 2) a [ 0 ] = 1; 3) for(int i=0 ; i< ; i++ ){ 4) sum += a[i]; //未赋值 5) } 6) n("sum="+sum) ; (5) 1) int a[ ] = new int[10], sum = 0 ;; 2) for(int i=0 ; i< ; i++ ){ 3) a[i] = i; //逻辑错误,未实现题意要求 4) sum += a[i]; 5) } 6) n("sum="+sum) ; (6) 1) int a[ ] = new int[10], sum = 0 ; 2) for(int i=0 ; i< ; ){ 3) a[i] = ++i; 4) sum += a[i]; 5) } 6) n("sum="+sum) ; 四、 阅读程序 1、 以下代码的输出结果是什么? int x=40; int numbers[]=new int[x]; x=80; n(“x=”+x); n(“数组numbers的长度=”+); 2、 指出并改正下面代码中的错误? public static void main(String args[]){ double ra[10]; for(int i=0;i<();i++){ ra(i) =*100; } } 3、 以下代码的功能是查找最小数组元素的首个下标值。指出其中的错误并加以改正。 double min=myArray[0]; int indexOfMin=0; for(int i=1;i<=();i++){ if(myArray(i) min = myArray(i); indexOfMin=I; } } 4、 写出下面程序的输出 public class Test{ public static void main(String args[]){ int num =0; int nums[]=new int[1]; m(num,nums); n(“num=”+num+”,nums[0]=”+nums[0]); } public static void m(int x,int y[]){ x=5; 5、 写出下面程序的输出 public class Test{ public static void main(String args[]){ int array[][]=new int[5][6]; int x[]={1,2}; array[0]=x; n(“array[0][1]=”+array[0][1]); } } 五、 编程题 1、 生成0-9之间的100个随机数,并且显示每一个数出现的次数。 提示:用(int)(()*10)产生0-9之间的随机整数,用一个含有10个整数的数组存放0,1,2,„9出现的次数,数组名为counts。 2、 读入一个整数n,输出杨辉三角形的前n行,杨辉三角形如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 „ „ 杨辉三角形的特点:(1)第i行有i个元素;(2)每一行的第一个元素和最后一个元素都为1;(3)除了1之外,每个元素的值,都等于上一行同位置的元素以及前一个元素的和。 3、 编写一个程序,读入一个英文句子,分别统计出其中的大写和小写字母个数。 4、 编写两个重载方法,返回一个数组的平均数,它们具有如下的方法声明: public static int getAverage(int array[]); public static double getAverage(double array[]); 5、 输入一个整数n,求小于这个整数的所有质数。 算法:定义一个长度为n的boolean数组,true表示是质数,false表示不是质数。初始均为ture。开始循环执行:(1)找到第一个值为true的下标i;(2)把所有下标为i的倍数的数组元素值置为false。直到扫描完数组中所有的数值,最后遍历数组,如果下标为i的数组元素值为true,则说明i为质数。 第七章 面向对象 知识点汇总 1、类与对象 类是对某一事物的抽象描述,用于描述多个对象的共同特征, 它是对象的模型。 对象用于表示现实中该类事物的个体,它是类的实例。 2、定义类 面向对象最核心的是对象,为了在程序中创建对象,首先需要定义一个类。 类是对象的抽象,它用于描述一组对象的共同特征和行为 类中可以定义成员变量和成员方法。 成员变量用于描述对象的特征,也称为属性。 成员方法用于描述对象的行为,也称为方法。 修饰符 class 类名{ 成员变量; // 修饰符 数据类型 成员变量名 [=初始值]; 成员方法(); // 修饰符 返回类型 方法名( [参数列表]){ // 方法体; // } } 修饰符:public、private、default、abstract、fanal、static 3、对象的创建与使用 类名 对象名称= new 类名();//Person p = new Person(); 对象引用.成员变量 对象引用.成员方法() 可以不定义对象的引用名称,而直接调用这个对象的方法,这样的对象叫做匿名对象,如:new Dog().jump(); 调用一次之后就再也找不到了,成为垃圾对象。 4、类封装的方法 将属性设置为private(私有属性) 设置public(公共方法),通过公共方法设置或获取属性的值 通常的写法为setXxx,getXxx 5、构造方法 构造方法是类的一个特殊成员,它会在类的实例化对象时被自动调用。 构造方法的名字必须与类名相同。 构造方法名的前面没有任何返回类型的声明。 在构造方法中不能使用return语句。 如果类中没有构造方法,编译器会自动加一个方法体为空,方法名与类名相同的构造方法。 每个类至少有一个构造方法,如果没有定义构造方法,系统会自动创建一个默认的构造方法,这个构造方法没有参数,方法体内也没有任何代码。如果类中已经声 明构造方法,实例化时系统不会在自动创建没有参数没有方法体的构造方法。 在实例化对象的同时,可以通过构造方法这个对象的属性进行赋值。 构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。 6、this 通过this关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突问题 通过this关键字可以调用成员方法 构造方法是在实例化对象时被Java虚拟机自动调用的,在程序中不能像调用其他方法一样去调用其他的构造方法,但可以在一个构造方法中使用“this(参数1,参数2.。。。)”的形式来调用其他的构造方法 只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用。 在构造方法中,使用this调用构造方法的语句必须放在第一行,且只能出现一次 不能在一个类的两个构造方法中使用this互相调用 7、垃圾回收 Java引入了垃圾回收机制,当垃圾堆积到一定程度,虚拟机会启动垃圾回收器,回收垃圾对象占用的内存 也可以调用()方法通知虚拟机立刻进行垃圾回收 当一个对象在内存中被释放时,它的finalize方法会被自动调用 8、 Static关键字 静态变量:静态变量被所有的实例共享,使用“类名.变量名”的方式调用。Static只能修饰成员变量不能修饰局部变量。 静态方法:在不创建对象的的情况下就可以调用某个方法,只需在类中定义的方法前加static关键字,使用“类名.方法名”的方式调用,不和对象绑在一起。在静态方法中只能访问用static修饰的成员,没有被static修饰的成员需要先创建对象才能访问 静态代码块:使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块就是静态代码块。类加载时,静态代码块会被执行。由于类只加载一次,所有静态代码也只执行一次。 9、类的继承 在程序中,继承描述的是事物之间的所属关系 子类会自动拥有父类所有的属性和方法 继承语法格式 修饰符 class 子类名 extends 父类名{ 成员变量; 成员方法; } 继承注意事项 一个类只能有一个直接父类 多个类可以继承一个父类 多层继承是可以的 一个类是某个类的子类,同时又是另一个的父类 10、重写父类方法 子类继承了父类的方法,但有时又需要对继承的方法做一定的修改,即对父类方法进行重写。 被重写的方法必须与父类的方法具有相同的方法名、参数列表和返回类型。 11、super关键字 当子类重写父类的方法后,子类对象将无法访问父类被重写的方法。 Java提供了super关键字来访问父类的成员变量、成员方法和构造方法。 1. 使用super关键字调用父类成员变量和成员方法,格式为: super.成员变量; super.成员方法([参数1,参数2… …]) 2. 使用super关键字调用父类的构造方法,格式为: super([参数1,参数2… …]) 通过super调用父类构造方法的代码必须放在子类构造器的第一行,而且只能出现一次 子类构造方法中一定会调用父类的某个构造方法,可以通过super指定调用父类的哪个构造方法,如果没有指定,在实例化子类时,会自动调用父类无参的构造方法 可以在子类中显示地调用父类中已有的构造方法,也可以选择在父类中定义无参的构造方法 12、final关键字 final关键字可用来修饰类、变量和方法 final修饰的类不能被继承 final修饰的方法不能被子类重写 final修饰的变量(成员变量和局部变量)是常量,只能赋值一次 13、抽象类 Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract关键字来修饰。 当一个类中包含了抽象方法,该类必须使用abstract关键字来修饰,使用abstract关键字修饰的类为抽象类 抽象类的格式 abstract class 类名{ 成员变量; 成员方法(); abstract 返回类型 方法名(参数类型列表); } 抽象类—注意事项 包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需要用abstract关键字修饰即可。 抽象类不能被实例化,因为抽象类中可能含有抽象方法,而抽象方法是没有方法体的,不可以被调用的。 如果想调用抽象类中定义的方法,则需要创建一个子类,在子类中将抽象类中的抽象方法进行实现。 14、接口 如果一个抽象类中的所有方法都是抽象的,则可以使用另外一种方式来定义,即接口,在定义接口时,需要使用interface关键字来声明。 接口的格式 interface 接口名{ 类型 变量名 = 初始值; //定义全局常量 返回类型 方法名(参数列表); //定义的抽象方法 } 接口定义的方法默认为用public abstract来修饰,即抽象方法; 接口中定义的变量默认使用public static final 来修饰,即全局常量 由于接口中的方法都是抽象的,所有不能实例化,需要定义一个类,并使用implements关键字实现接口中的所以方法。 接口的实现 class 类名 implements 接口名{ 成员变量; 成员方法(); 抽象方法的实现; } 一个接口可以使用extends关键字去继承另一个接口 接口—注意事项 接口的方法都是抽象的,不能实例化对象 当一个类实现接口时,如果这个类是抽象的,则实现接口中的部分方法即可,否则需要实现接口中的所有方法。 一个类通过implements关键字实现接口时,可 实现 以 多个接口,被实现的多个接口之间要用逗号隔开。 一个接口可以通过extends关键字继承多个接口,接口之间用逗号隔开 一个类继承另一个类的同时还可以实现接口,此时extends关键字必须位于implements关键字之前。 15、接口与抽象类的比较 抽象类 成员变量 构造方法 可以写构造方法,可以在子类构造方法中使用super调用父类的构造方法,但是抽象类不能使用new创建对象 没有构造方法,不能用new实例化接口 方法 没有限制 没有限制 接口 所以变量均默认为public static final 所有方法均被默认为public 和abstract 16、对象的转型 向上转型----将子类的对象赋值给父类的引用 Dog dog1 = new Dog(); Animal animal1 = dog1; 一个引用能够调用哪些成员(变量和方法),取决于这个引用的类型 一个引用调用的是哪个方法,取决于这个引用所指向的对象 向下转型----将子类的对象赋值给父类的引用 Dog dog1 = new Dog(); Animal animal1 = dog1; Dog dog2 = (Dog) animal1; 先把一个对象向上转型,再把它向下转型转回来,不能直接向下转型 17、多态 面向对象的三个特点是封装、继承和多态。 在设计一个方法时,通常希望该方法具备一定的通用性。 可以在方法中接收一个动物类型的参数,当传入的是猫类对象时就发出猫类的叫声,传入的犬类对象时就发出犬类的叫声。在同一个方法中,这种由于参数类型不同而导致执行效果各异的现象就是多态。 Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果 instanceof关键字可以判断一个对象是否为某个类(或 接口)的实例或子类实例,语法为: 对象(或对象引用变量) instanceof 类(接口) 18、Object类 Object是所有类的父类,即每个类都直接或间接地继承自该类 在实际开发中希望toString()方法返回更有价值的信息,可以重写Object的toString()方法便可以实现。 练习题 一、 填空题 1、面向对象的三大特征是( )、( )、( ) 2、在Java中,可以使用关键字( )来创建类的实例对象 3、定义在类中的变量被称为( )定义在方法中的变量被称为( ) 4、面向对象程序设计的重点是( )、的设计,( )是用来创建对象的模板。 5、在非静态成员方法中,可以使用关键字( )访问类的其他非静态成员。 6、当一个对象被当成垃圾从内存中释放时,它的( ) 方法会被自动调用。 7、被static关键字修饰的成员变量被称为( ),它可以被该类所有的实例对象共享。 8、在一个类中,除了可以定义属性、方法,还可以定义类,这样的类被称为( )。 9、在Java中,提供了一个( )命令,用于将程序中的文档注释提取出来,生成HTML格式的帮助文档。 10、所谓类的封装是指在定义一个类时,将类中的属性私有化,即使用( )关键字来修饰。 11、在Java语言中,允许使用己存在的类作为基础创建新的类,这种技术称为( ) 12、一个类如果实现一个接口,那么它就需要实现接口中定义的全部( ),否则该类就必须定义成( ) 13、在程序开发中,要想将一个包中的类导人到当前程序中,可以使用( )关键字。 14.一个类可以从其他的类派生出来,派生出来的类称为( ),用于派生的类称为( )或者( ) 15、定义一个Java类时,如果前面使用( )关键字修饰,那么该类不可以被继承。 16、如果子类想使用父类的成员,可以通过关键字( )引用父类的成员。 17、在Java语言中,所有的类都直接或间接继承自( )类。 18、构造方法是一种特殊的成员方法,构造方法名与( )相同。 19、实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。 20、如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。 21.Java不直接支持类的多继承,但可以通过(接口)实现多继承。 22.一个接口可以通过关键字extends来继承(多个)其他接口。 23、接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。 二、 选择题 1.类的定义必须包含在以下哪种符号之间?( ) A.方括号[] B,花括号{} C、双引号“”D.圆括号( ) 2.下面哪一个是正确的类的声明?( ) A. public void HH{„} B. public class Mave(){„}
版权声明:本文标题:《Java编程基础知识点汇总及习题集》--答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702858691h433537.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论