java复习.docx
- 文档编号:7875721
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:44
- 大小:149.26KB
java复习.docx
《java复习.docx》由会员分享,可在线阅读,更多相关《java复习.docx(44页珍藏版)》请在冰豆网上搜索。
java复习
第1章计算机系统概述
Java平台
最新的Java技术通常称为Java2平台,分为三个类型:
•J2SE(Java2StandardEdition)
•J2EE(Java2EnterpriseEdition)
•J2ME(Java2MicroEdition)
Java程序:
AppletandApplication
•JavaApplet(Java小应用程序):
不是一个完整的应用程序,而是框架程序中的一个模块,所以只能在WWW浏览器环境下运行
•JavaApplet嵌入HTML(超文本标记性语言)网页文件中,通过浏览器执行。
•JavaApplication(Java应用程序):
是一个完整的应用程序,可以独立地运行。
Java应用程序的结构
•在Java编程语言中:
▪一个程序由一个或者多个类组成(不是所有java文件都必须有类,例如接口),即类是java程序的基本单位
•一个Javaapplication总是包含一个main方法:
publicstaticvoidmain(String[]args)
Java程序的注释、标记符
注释
•Java注释通常采用如下三种方式:
标识符
•Java中的标识符由字母、数字、下划线(_)以及美元符号($)组成
•注意:
不能以数字开头
•Java是大小写敏感的语言:
Total,total,TOTAL是不同的标识符
1.4Java语言的解释执行
Java编译、解释执行过程
•Java编译器把Java源代码翻译成java字节码。
Java字节码不是机器语言,它是一种类似机器语言代码的低级程序格式。
•java解释器把java字节码翻译成机器语言然后执行。
•因此,java编译器不与任何特定的机器相关,解释器与机器相关,Java因此是中立结构的
1.5Java开发环境
Java语言的开发工具
•编写并运行Java程序,需要Java开发工具包JDK(JavaDeveloper’sKit),JDK包含撰写Java程式的所有工具,包括:
▪编译器(compiler),javac
▪解释器(interpreter),java
第2章数据与表达式
变量与赋值,赋值语句给变量赋初始值
常量
•如果在程序中改变常量的值,那么编译器会报错
•Java中,使用final修饰符声明一个常量:
finalintMIN_HEIGHT=69;
2.3基本数据类型
Java中有8种基本数据类型:
•4种整数类型:
byte(8位),short(16位),int(32位),long(64位)
•2种浮点类型:
float(32位),double(64位)
•1种字符类型:
char
•1种布尔类型:
boolean
1、整数类型
•所有Java编程语言中的整数类型都是带符号的数字,不存在无符号整数。
整数类型可使用十进制、八进制和十六进制表示。
首位为“0”表示八进制的数值;首位为“0x”表示16进制的数值。
整数类型缺省为int类型,如在其后有一个字母“L”表示一个long值(也可以用小写“l”)。
2、浮点类型double,float
如果一个数包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数为浮点数。
如果不明确指明浮点数的类型,浮点数缺省为double。
3、字符型数据char
•使用char类型可表示单个字符。
•单个字符使用单引号括起来的一个字符:
'a''X''7''$'',''\n'
字符集
•字符集是字符的有序列表,字符集中的每个字符对应于一个唯一的数字。
•在Java中,使用Unicode字符集,非ASCII
4、boolean类型
•boolean类型通常表示条件的真或假,有效取值只能是保留字:
true或者false(注意大小写)
2.4表达式
除法与求余
•除法(/)运算符两边操作数均为整数,则结果为整数(舍去小数部分
•求余运算(%)返回第一个操作数除以第二个操作数后的余数。
结果的符号与被除数相同。
自增、自减运算符
•自增运算符(++)让操作数增加1
•自减运算符(--)让操作数减1
复合赋值运算符
2.5数据转换
数据类型转换
•扩大转换试图将一个小的数据类型转换成一个大的数据类型,因此扩大转换是安全的(例如:
将short型转换为int型)
•反之,缩小转换试图将一个大的数据类型转换成一个小的数据类型,因此可能丢失信息(例如:
将int型转换为short型)
•Java中,数据类型转换通常有三种方式:
•赋值转换:
intdollars;doublemoney;moner=dollars.赋值转换时只能执行扩大类型转换,否则将产生错误
•自动类型转换:
例如,如果sum是一个浮点值并且count是一个整型值,那么执行下列运算前,变量dollars将被自动转换为浮点值:
result=sum/count;
•强制类型转换:
扩大转换与缩小转换都可以通过强制类型转换实现,例如,如果变量total与变量count是整型,但是他们相除后,希望结果是浮点类型,可以对变量total进行强制类型转换:
result=(float)total/count;
2.6交互式程序设计
读取键盘输入
•下面的语句创建了一个从键盘读取输入的Scannerobject,:
Scannerscan=newScanner(System.in);
intmiles=scan.nextInt();
•Scanner类是java.util类包的一部分,必需使用import语句引入
•nextLine方法读取一行键盘输入的值,作为字符串类型返回。
•next读取一个输入,并作为字符串类型返回。
•nextInt读取输入的整型数据
第4章编写类
类与对象的概念(理解)
publicclassStudent//类名
{
Stringname;//类的属性
doubleEnglish_score;
doubleMath_score;
publicStudent(Stringstr)//类的构造方法
{
name=str;
}
doublegetAveScore(){//类的方法
return(English_score+Math_score)/2;
}
}
Java允许将多个类保存在同一个文件中,如果一个文件保存了多个类,则只有一个类可以用保留字public来声明,文件名必须要和这个类的名字相同。
一般情况下,可以一个类保存为一个文件。
4.3方法剖析
方法头
•方法的声明以方法头开始
方法体
•方法体位于方法头之后
参数
•当方法被调用,实参拷贝给方法头中的形参
return语句
•方法的返回值类型表明了该方法返回给调用处的值
•不需要返回值的方法具有void返回类型
•return语句指定了将要被返回的值returnexpression;
方法调用的方法及流程
•当一个方法调用时,流程控制跳转到此方法,并且执行此方法的代码。
•当执行结束,流程返回此方法被调用处,继续执行其后的语句。
•调用可以有返回值,也可以没有,依赖于方法的定义
方法调用时流程控制
•如果被调用方法和调用语句在一个类中,调用方法时,只需要此方法的名称
•被调用的方法是另一个类一部分的情况下
构造方法
•构造方法是一个特殊的方法,用于创建对象(创建一个新的对象时会自动调用)
1,构造方法名与类名相同
2,构造方法的可见性修饰符必定为public,因为当实例化一个对象时必定会调用构造方法,否则无法创建类的实例
3,构造方法不能有返回值,其方法声明头中没有返回类型(是没有,不是void)
4,写代码时,可以不写构造方法,系统会提供一个没有参数的空白的构造方法(相当于什么也不做)
5,构造方法可以有多个(当然,形式参数不同,这是重载的概念,见第7章)
toString方法
•所有的类都有一个toString方法(由Object类定义),一般情况下需要覆盖
•toString方法返回以某种方式表示此对象的一个字符串:
•publicStringtoString()
•{
•}
•当一个对象与一个字符串连接或者把对象作为参数传递给println方法,toString方法被自动调用
数据的作用域
•作用域:
程序中数据能被引用(使用)的位置:
▪在类级声明的数据(没有在任何方法内部),能被此类的所有方法使用,也称作实例数据
▪方法内部声明的数据,只能在此方法中使用
•方法中声明的数据称作局部数据(局部变量)
实例数据
•一个类的所有对象共享方法的定义,但是每个对象都有各自的数据空间
只有通过这种方式,两个对象才能有不同的状态
publicclassStudent//类名
{
Stringname;//类的属性
doubleEnglish_score;
doubleMath_score;
publicStudent(Stringstr)//类的构造方法
{
name=str;
}
doublegetAveScore(){//类的方法
return(English_score+Math_score)/2;
}
}
Studenta=newStudent(“zhangsan”);
Studentb=newStudent(“lisi”);
a和b都有相同的方法getAveScore,但他们具有不同的属性,即name,English_score;Math_score;这些是独有的,互不影响。
4.2封装
封装
•客户程序可以使用其他对象提供的服务(方法),但是客户对象不必了解那些服务的具体实现。
•任何针对对象状态(对象变量)的改变应该由对象自己的方法来完成。
•一个封装的对象可以被看作一个黑匣子(blackbox)它的内部机制对客户程序隐藏。
•客户只需要调用对象的接口方法,这些接口方法管理对象的实例数据
可见性修饰符
•Java有三种可见性修饰符:
public,protected,以及private
•public:
能在任何地方引用。
•private:
只能在此类的内部引用
•protected:
子类及其相同包类的类引用
•没有使用任何可见性修饰符的成员具有默认可见性,只能能被相同包内的类引用。
•public:
违反封装,因此,实例变量不应该使用public可见性修饰符
•为对象提供服务的方法,应该声明为public可见性,这样才能被客户调用
•
访问器和修改器
•访问器方法返回实例变量的当前值
•修改器方法改变实例变量的值
•访问器方法、修改器方法的方法名应该具有如下形式:
getX、setX,其中X是实例数据(变量)的名字
•因此有时也称为“get方法”和“set方法”
第3章使用类和对象
3.1创建对象
创建对象
•理解对象引用变量的概念。
•通常,使用new运算符创建对象
•一个对象是某个类的一个实例(instance)
方法调用
•一旦对象创建了,我们可以通过.操作符调用它的方法:
例如:
count=title.length();
垃圾回收
•当一个对象再没有任何有效的引用变量指向它,这个对象在程序中将不能被访问
•这样不能再被访问的对象称作垃圾,Java平台自动执行垃圾回收,把垃圾对象占用的内存空间返回给系统,以便将来使用。
别名
•多个对象引用变量指向同一个对象,这些对象引用变量互称别名
•别名的存在引发一个有趣的现象:
▪一个对象能被多个对象引用变量访问(存、取)
▪如果通过对象引用变量改变对象,那么其他别名的引用也会被改变,因为他们指向同一个对象。
3.2String类
String类的创建,可用new也可直接用字符串常量
String类的常用Methods
•当String类的对象创建后,此对象的长度和值都不能修改
•77页,列出了String类的常用方法:
要求全部掌握
Random类使用
•Random类在java.util包中;
•82页的方法,全部掌握
Math类
•Math类是java.lang包的一部分
•Math类中的方法都是静态方法(也称作类方法)
•静态方法:
通过类名可以直接调用(即,不需要创建类的实例--对象)
例如:
value=Math.cos(90)+Math.sqrt(delta);
•要求掌握:
abs,pow,sqrt,floor,ceil
3.6包装类
•java.lang包中包含了与每种基本类型对应的包装类:
•下面的声明创建一个Integer对象来表示40为一个对象
Integerage=newInteger(40);
•包装类提供了静态的方法帮助管理相关的数据类型
•例如,Integer类包含一个方法把一个存储在String中的integer转换成一个int值:
Stringstr=“18”;
num=Integer.parseInt(str);
•包装类也包含一些有用的常数:
例如:
Integer类包含MIN_VALUE以及MAX_VALUE分别存储int型可以表示的最大值和最小值。
3.3包
包
•Java类库中的类采用包的方式组织管理。
import语句
标准类库中,除Java.lang包中的类系统自动引入外,当我们使用类库中其他包的类时需要import
3.5枚举类型
枚举类型
•Java允许定义枚举类型,然后使用枚举类型声明变量
•下面的语句创建了一个名为Season的枚举类型
enumSeason{winter,spring,summer,fall};
•一旦一个类型被定义,就可以声明这种类型的变量Seasontime;
并且可以赋值:
time=Season.fall;
第五、六章条件和循环
5.1if语句
条件语句
•Java的条件语句有如下几种:
▪if语句
▪if-else语句
▪switch语句
if语句
•if语句语法如下:
布尔表达式
•条件通常使用一个Java的关系运算符或者等价运算符,这些返回布尔值:
==等于
!
=不等于
<小于
>大于
<=小于等于
>=大于等于
•注意区分等于运算符(==)与赋值运算符(=)之间的区别
逻辑运算符
•布尔表达式也能使用下面的逻辑运算符:
!
逻辑非
&&逻辑与
||逻辑或
•他们接受布尔运算数并且产生布尔结果
•逻辑非是一个一元运算符(只有一个操作数)
•逻辑与和逻辑或是二元运算符(有两个操作数)
条件运算符
•Java中有一个条件运算符,使用布尔条件决定执行两个表达式中的哪一个被执行
•条件运算符的语法:
condition?
expression1:
expression2
•如果condition为真,执行expression1;如果为假,执行expression2
•整个条件运算的值就是被选择执行的表达式的值
switch语句
•Switch是另外一种条件语句,该语句可以使程序从多条执行路径中选择一条来执行。
•Switch语句首先计算表达式,然后选择与该值匹配的一条或者多条case子句
•每个case子句包括一个值和一系列语句
•控制流将转到与其匹配的第一个case子句
•switch格式:
•有时候会在每个case子句后面使用break语句
•break语句使得流程跳出switch语句,如果没有使用break语句,流程将继续执行后面的case子句
•Switch可以带有default子句
•default子句不带匹配的值,只是使用保留字default
•如果有default子句,并且没有与switch匹配的case子句,控制流将转到default子句
•如果不带default子句,并且没有其他与之匹配的case子句,控制流将转出Switch语句,执行其续语句
•Switch语句的表达式的结果必须是整型值,也就是说整数(byte,short,int,long)或者char型
5.3数据比较
浮点数的比较
•当比较浮点数(floatordouble)的时候很少使用相等运算符(==)
•对于两个浮点数来说:
使用==的意思是:
只有当底层所有的二进制位都相等时才相等
•大多数情况下,我们认为两个浮点数只要”足够接近”就可以认为他们相等。
•为了比较两个浮点数,我们常常使用如下格式:
•如果两个浮点数之间的差别小于给定的偏差度,那么认为这两个浮点数相等
•偏差值可以根据具体的情况进行设置,例如0.000001
字符的比较
•Java中的字符数据是基于Unicode字符集的
•Unicode中每个字符都有一个唯一的数字对应,并且Unicode中的字符顺序都是固定的。
•由于这些字符存在前后顺序,所以可以使用关系运算符进行比较。
•例如,字符‘+’比‘J’小,因为’+’在Unicode字符集的位置在‘J’之前
•Unicode中,数字(0-9)从小到大连续存放
•同样,大写字母(A-Z)以及小写字母(a-z)也是如此,
•注意顺序:
0-9,26个大写字母位置在前,小写字母在后
字符串比较
•String类的equals方法用于比较两个字符串中所包含的字符是否相同,并且这些字符顺序也相同。
•equals方法返回一个布尔值
•不能使用关系运算符比较字符串
•String提供了compareTo方法,此方法判断两个字符串的大小。
•程序中调用:
pareTo(name2)
▪此方法返回值为0:
name1和name2相等(包含相同的字符串,且顺序一致)
▪返回负数:
name1比name2小,
▪返回正数:
name1比name2大
•由于字符串和字符的比较是基于字符集的,因此也称为字典顺序
对象的比较
•==运算符可以应用与对象-如果两个引用互为别名则返回true
•所有的对象都定义了equals方法,但是如果我们不重新定义,那么它的语义和==运算符是一样的
•在String类中重新定义了equals方法,用来比较两个字符串中的字符
•当我们编写类的时候,我们可以重新定义equals方法,这样在条件适当的时候,让它返回true
5.4while语句
循环语句
•Java语言中有三种类型的循环语句:
▪while循环
▪do循环
▪for循环
•while语句语法如下:
while语句
•while语句举例:
•如果while循环的条件初始值为假,那么循环体永远也不会被执行
•因此,while循环体可以被执行0次或者多次
死循环
•while循环的循环体最终必须将循环条件置为false
•否则就会形成死循环,即循环体将一直执行直到用户强行终止
5.6其它循环语句
do循环语句
•do循环语句的语法:
•首先执行statement,然后计算condition
•重复执行statement,直到condition为false
Do循环语句
•do循环举例:
•do循环体至少执行一次
for循环语句
for循环语句
•for循环举例:
•初始化部分也能用于声明变量
for循环体执行次数是0次或者多次
•增量部分可以执行任何计算
•for循环头部的每个表达式都是可选的
•如果省略初始化表达式,则不会执行初始化
•如果条件表达式被省略,那么会当作条件永远为true,因此形成死循环
•如果省略增量表达式部分,不会执行增量操作
5.5迭代器
•迭代器是一个允许每次执行一个集合元素的对象
•使用迭代器可以按照顺序遍历元素并且处理所需的元素,迭代器对象有一个hasNext方法,当至少还有一个待处理元素时,此方法返回true。
next方法返回下一个元素
•Java标准类库中有一些类就是迭代器
•Scanner就是迭代器
▪如果还有待扫描的数据,hasNext方法就返回true
▪next方法将下一个扫描的数据项作为一个字符串返回
•Scanner类的hasNext方法对于特定的数据类型具有多种形式
迭代器和for循环
•For循环只是简单的重复处理这些元素
•例如,如果BookList是迭代器,负责管理Book对象,那么下面的选还将会打印每本书:
•因此for循环的迭代器版本有时也称作foreach循环
实验8求阶乘
Factorials
n的阶乘(n!
)表示整数从1到n的乘积。
比如,4!
=1*2*3*4=24。
另外,0!
=1。
阶乘不适用于负数。
1.编写一段程序,请用户输入一个非负整数,然后打印该整数的阶乘。
请使用while循环语句编写程序。
请考虑用户输入0的情况。
2.修改程序,检查用户是否输入非负整数。
如果输入的负数,则提示用户输入非负整数,并请用户重新输入,直到用户输入非负整数为止。
见“复习代码”文件夹Fac.java
练习
T1:
利用while循环编写出一个打印如下结果的程序。
1
22
333
4444
55555
Xunhuan1.java
T2:
鸡兔同笼问题,一个笼子中有10个头,32只脚,问多少只兔子多少只鸡?
(用while循环)T2.java
T3:
编写程序:
输出如下图型(提示:
将一行分为3部分,分别是空格、数字递增部分、数字递减部分)
T4:
编写一个完整的应用程序,要求用户输入5个整数(使用循环结构),输出这五个整数的最大值和最小值。
T5:
求S=a+aa+aaa+…+aaaa…a之值,共n项,其中a是一个数字(1-9)。
例如:
2+22+222+2222+22222(此时a=2,n=5),a和n要求用户由键盘输入。
要求打印出等式和结果。
实验9计算连续向上的抛硬币次数
见“复习代码”文件夹Runs.java
部分同学理解为总共向上的次数
第六章面向对象设计
静态修饰符
•通过static修饰符声明静态的方法和静态变量
•静态方法也称为类方法、静态变量也称为类变量
•静态方法或者变量是类所有的,或者说所有潜在的对象所共享的,因此,不需要建立
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 复习