辽宁自考 Java语言程序设计 课程代码 01019 备考整理(一)

Java语言程序设计

考试用书: 《Java语言程序设计》(第三版)
出版社:清华大学出版社
作者:邵丽萍、绍光亚、张后扬
出版时间:2008

第1章 Java快速入门

1.1 Java简介:

  1. Java的定义:Java是一种编程语言,可以编写嵌入网页的applet小程序和可独立运行的app应用程序;
  2. Java的起源与发展:Java 是sun在1995年5月推出的编程语言,基于20世纪90年代初为小家电创造的Oak语言,随着互联网的兴起Java成为了发展最迅猛的编程语言;
  3. Java的语言特点:简单性、面向对象、网络适用性、健壮性、安全性、平台无关性、可移植性、解释型、高性能、多线程、动态性、丰富的类库、嵌入浏览器运行;
  4. Java的三个分支:J2ME-面向微型设备-精简掉不需要的类库,J2SE-面向主流操作系统的应用程序-提供标准库,J2EE-面向企业级开发-附加企业级类库;
  5. Java的两种用途:用于Web的applet程序和用于操作系统的应用程序;

1.2 Java的开发环境与运行环境:

  1. SDK、JDK、JRE与JVM:SDK和JDK本质是一个东西,早期叫SDK后来改名为JDK是Java的开发环境工具。JRE是Java的运行环境。JVM是JRE的一部分,Java的跨平台特性由JVM完成,JVM提供对Java代码的统一支持,同时又向下提供对不同操作系统及相关功能的使用支持。值得一提的是开发时使用的Jre和程序运行时的Jre可以是不同的。
    Java环境结构

  2. SDK与Java(TM)的下载与安装:书中原文是去java.sun.com 但因为oracle 收购了Java 所以现在会自动跳转至oracle.com/java。知识点只有Java™是Java平台插件,比如网页想要显示applet程序就必须安装Java™,现在叫Java Platform。这块理论上没有考点。

  3. 配置Java的开发环境与运行环境:基于windows操作系统时在操作系统环境变量path中添加 Java SDK/JDK安装路径下的 bin目录 。在操作系统环境变量中新增classpath 环境变量 值为 Java SDK/JDK安装路径下的 lib目录。 实际上在现在的Java版本中classpath不用配置也可以。

  4. SDK/JDK下面的主要文件:javac.exe 编译器,java.exe 解释器,appletviewer.exe applet程序查看器,jar.exe 打包压缩工具,javadoc.exe 文档生成工具,javah.exe 头文件生成器。

1.3 初步了解Java程序:

  1. 编写第一个Java源程序和编译与运行Java程序:书中使用的是EditPlus文本编辑器。但是EditPlus现在已经收费了。
    考点是:javac 命令去编译 名.java 文件。java 命令去解释运行 名.class 文件,类名与文件名 要一致,运行的前提是要有入口函数或者叫入口方法
    public static void main(string args[]){}
  2. 配置EditPlus的用户自定义工具使EditPlus支持编译和运行。在工具→用户自定义工具中添加javac.exe和java.exe 的绝对路径、要编译的文件名$(FileName) 和文件所在目录 即可。

第2章 Java基本语法

标识符、关键字与分隔符

  1. 标识符: Java 语言中 变量、常量、类、方法、接口等需要用户指定名称,这些名称统称为标识符。标识符只能以字母\下划线\$符号作为开头,后续的字符也仅能包含字母、数字、下划线和$符号。标识符对大小写敏感但没有长度限制。
    命名约定(一)常量:用大写字母,下划线作为分隔单词的符号。
    命名约定(二)变量:用小写字母,多个单词组成的变量第二个单词开始字母大写(驼峰式)。
    命名约定(三)类名:以大写字母开始。
    命名约定(四)注意:Java严格区分大小写。

  2. 关键字:关键字是Java语言自身使用的标识符。关键字不能用作标识符。关键字用英文小写字母表示。
    百度百科Java关键字列表
    这里只要记住那些不太常用的:goto、native、strictfp、transient、volatile。

  3. 分隔符:用来区分Java源程序中的基本成分,使编译器确认代码在何处分隔。分隔符有注释符、空白符、普通分隔符三种。
    注释符://单行注释 /* 单行或多行注释 */
    空白符:空格、回车、换行、制表符(Tab)。
    普通分隔符:
    . 点号,用于分隔包、类或分隔引用变量中的变量和方法。
    ; 分号, 是Java语言的结束的标志。
    , 逗号, 分隔方法的参数和变量的参数等。
    : 冒号, 说明语句标号。
    {} 大括号, 用来定义复合语句、方法体、类体及数组的初始化。
    [] 方括号, 用来定义数组类型及使用数组下标。
    () 小括号, 用于在方法定义和变量访问中将参数表括起来,或在表达式中定义运算优先级。

基本数据类型与变量

  1. 8个基本数据类型: 考点长度和范围,实际上整数部分只要记忆位长和是否支持负数即可,范围可以通过2的位长减去符号位次方结果加负号得出最小值,结果减1得出最大值。浮点数部分有点麻烦。
    boolean 长度:1位 范围:true/false,默认值 false。
    byte 长度:8位 范围 -128~127,默认值 0。
    short 长度:16位 范围 -32768~32767,默认值 0。
    int 长度:32位 范围 -2,147,483,648~2,147,483,647,默认值 0。
    long 长度:64位 范围-9,223,372,036,854,775,808‬~9,223,372,036,854,775,8087,默认值 0。
    float 长度:32位 范围±1.4E-45~±3.402,823,5E+38,默认值 0.0。
    double 长度:64位 范围±4.9E-324~±1.797,693,134,862,315,7E+308,默认值 0.0 。
    char 长度:16位 范围’\u0000’~’\uffff’ , 默认值 ‘\u0000’

  2. 常量:常量在Java中为一个标识符,用来记忆一个固定的值。在程序执行中是不可更改的数据。常量用 final 声明。常量与变量的区别是前者不占用内存。
    其中 浮点型 常量 结尾写作f/F 的为float 类型 写作 d/D 的为double类型。如3.4f 和3.44444d。
    书中未提及字面量(或者称做直接量),当作不考吧。

  3. 变量:初始化: 类型 变量名[, 变量名] [= 初始值]。
    成员变量:类中定义的变量为成员变量。成员变量定义时自动给出初始值。
    局部变量:类方法中定义的变量为局部变量。局部变量必须在定义时指定初始值否则会报出编译错误。
    类型强转:低精度类型转高精度类型时可通过赋值完成转换。否则需要强制转换。
    精度从低到高可以分为三类1、整数类型 可以视为无精度。 2、float 单精度。 3、double 双精度。

int a; char b; b='A';
a= (int) b; //类型强转 时使用(int) 但例子中可以不使用 因为精度相同 而且 a 的范围大 所以 通过赋值会自动转换。

唯一不太符合直觉的是 long 可以通过赋值转 float。
另外还有一个前提是数值范围不能超过目标类型范围否则会编译报错。
如:long 的最大值转 float

  1. 表达式与运算符:表达式是操作符(变量、常量和表达式等)和运算符的任意组合。表达式代表着一个确定的类型和确定的数值,表达式在使用上是先计算后使用。
    运算符之赋值运算符:=、+=、-=、*=、/=、%=
    赋值运算符构成的表达式为赋值表达式,多个赋值表达式连接从最右边开始运算。
    例如:a=b=c=0 是三个表达式 c=0,b=c,a=b
    运算符之算数运算符:-、++ 、-- 为一元运算符 *、/、%、+、- 为二元运算符
    算数运算符构成的表达式为算数表达式
    运算符之关系运算符:>、<、>=、<=、==、!=
    关系运算符构成的表达式为关系表达式
    运算符之逻辑运算符:!、&&、||、^、&、|
    逻辑运算符构成的表达式为逻辑表达式
    考点:^ 两边相同 为 false 两边不同为 true,&和| 两边都运算,反之 &&和|| 有时只计算一边。
    运算符之条件运算符:a>b ? 1 : 0;
    又称三元表达式 本体是 [一个布尔值表达式] ? [表达式为true返回这里] : [表达式为false 返回这里]
    条件运算符构成的表达式为条件表达式
    运算符之位算符:~、&、|、^、<<、>>、>>>
    考点:>> 右移 不会改变符号位 即 右起第一位。>>> 右移可以移符号位,移后空位置以零填充。
    书中未提及的点 >> 也是以零填充移后空位。
    另外位运算符虽然与逻辑运算符有些相似,但它们的操作数类型不同,逻辑运算操作的是boolean类型值,而位运算操作的是整型数值char、short、int、long。注意没有byte
    运算符之其他算符:(提高优先级)、(参数传递)、(强制类型转换)、. 分量运算符、[] 下标运算符、instanceof 对象运算符、new 对象实例化运算符、+字符串合并运算符
    运算优先级:考点:算数运算符具有左结合性即从左到右。赋值运算具有右结合性即从右到左。
    书中的优先级列表与网络上流传的Java运算符优先级列表有几处出入。
    下表中 == 和 != 实际上优先级是小于同组逻辑运算符的。
优先级操作符含义关联性用法
1[]数组下标array_name[expr]
.成员选择object.member
()方法参数method_name(expr_list)
()实例构造class_name(expr_list)
++后缀自增lvalue++
后缀自减lvalue–
2++前缀自增++rvalue
前缀自减–lvalue
~按位取反~expr
!逻辑非!expr
+一元加+expr
-一元减-expr
3()强制转换(type)expr
new对象实例化new
newtype(expr_list)
newtype[expr]
4*expr
/expr
%求余expr
5+expr
-expr
+字符串连接strExpr
6>>有符号右移expr
>>>无符号右移expr
7<小于expr
<=小于等于expr
>大于expr
>=大于等于expr
instanceof类型比较ref
==等于expr
!=不等于expr
8&整数按位与integralExpr
&布尔与booleanExpr
9^整数按位异或integralExpr
^布尔异或booleanExpr
10整数按位或integralExprintegralExpr
布尔或booleanExprbooleanExpr
11&&逻辑与booleanExpr
12逻辑或booleanExprbooleanExpr
13?:条件运算
14=赋值lvalue
*=乘赋值lvalue
/=除赋值lvalue
%=模赋值lvalue
+=加赋值lvalue
+=字符串连接赋值lvalue
-=减赋值lvalue
<<=左移赋值lvalue
>>=有符号右移赋值lvalue
>>>=无符号右移赋值lvalue
&=整数按位与赋值lvalue
&=布尔与赋值lvalue
=整数按位或赋值lvalue
=布尔或赋值lvalue
^=整数按位异或赋值lvalue
^=布尔异或赋值lvalue

数组类型

  1. 一维数组的声明:数据类型 数组名 [] 或 数据类型[] 数组名。
    例如:int arr[]; char [] arr2;
  2. 一维数组的创建与初始化:数据类型 数组名[] = new 数据类型[size]
    例如:int arr[] = new int [3];//创建 arr[0] = 10; //赋值 int a[] = {1,2,3}//赋值初始化
    考点:创建时已分配内存空间。
  3. 多维数组:数据类型 数组名[][]… = new 数据类型[size1][size2]…

第3章 Java语句及其控制结构

Java语句的类型

  1. Java程序的构成:程序→多个类 ;类→包引入、类声明、类体; 类体→成员变量、成员方法。
  2. Java语句的种类:Java语句是Java标识符的集合,由关键字、常量、变量和表达式构成。简单的Java语句以分号作为结束标识。符合结构语句以右大括号作为结束标识。
    考点:单独一个分号可以构成一条空语句。
    说明性语句:
    包和类的引入、声明、类的声明、变量的声明、对象的声明。还有方法的声明但是书中没说。
    操作性语句:
    表达式语句,简单的说就是以分号结尾的语句。
    复合语句,简单的说就是以右大括号结尾的语句。

选择语句

if (条件) s1语句 ,s1 语句可以为表达式或复合语句。
if (条件) s1语句 else s2语句, s1 、s2 语句可以为表达式或复合语句。
if (条件) s1语句 else if s2语句 else if s3语句 else s4语句,同上可以表达式也可复合语句 。

switch(条件) {
	case 常量1;
		语句1;
		break;
	case 常量2;
		语句2;
		break;
	...
	default;
		语句n;
}

考点:default 非必要。无break继续向下执行。

循环语句:

for(表达式1; 表达式2;表达式3) { 循环体 = 表达式或复合语句,后续直接说循环体了。}
考点:表达式2 作为是否开始 for 中语句的 判断 ,for 中语句执行完一次后 才执行 表达式3。
while(条件表达式){循环体}
考点:理论上如果 while的条件表达式 结果不改变的话 while 会进入无限循环或者永不执行的状态。
所以 while 循环 需要在循环体执行过程中影响条件表达式的结果才不至于陷入尴尬的境地,除非你就是想这么做。
do {循环体}while (条件表达式)
先执行循环体再判断条件表达式

跳转语句

break: 跳出循环或switch语句循环体终止循环。
带标号的break:课通过定义一个标识 例如 lab: 一顿操作 break lab; 退回到 lab 位置;
来引导 break 跳出时 程序所执行的位置。
continue:跳出本次循环、不终止后续循环。
continue 也可以带标号使用,语法和break一样。
return:return 表达式; 用于 有返回值的方法 返回方法的返回值 并跳出当前方法。
考点:return 之后的语句不会被执行。

第4章 面向对象编程

面向对象基本概念

  1. 对象:现实世界中对象(object)是状态和行为的集合体。
    软件开发中用数据描述(现实世界)状态;用方法描述(现实世界)行为。
    Java中一般通过类的变量描述状态;类的方法描述行为。
    书中这块有点混乱我补充一下。
    Java 中 定义的类 是一种抽象 不仅仅是对现实的抽象 也可以对抽象进行抽象。而 new 一个类是对类的实例化。
    实例化的变量成为实例变量,实例化的方法被成为实例方法。

  2. 封装:封装是将数据和方法放在一个包里,使用户只能看见类具有的公共方法,看不到方法实现的细节。两个好处:模块化和数据隐藏。Java的封装性有效提高了程序的安全性与维护性。

  3. 消息:消息传递是对象之间进行交互的主要方式。
    消息机制的3要素:事件源、事件监听器、事件对象。其中事件监听器是连接对象的关键,它在对象之间传递消息,调用事件处理方法。

  4. 继承:OOP允许一个类定义另一个类。继承使父类的代码得到重用,继承性有效地提高了编程效率。

  5. 接口:可以看成是为两个不相关的实体提供交流途径的设备。接口是为了解决Java不支持多重继承的问题。接口可以视为特殊的类,一个类可以实现多个接口。

基本概念这块估计有选择题,这块书中讲的很浅应该不会出描述性质的题目。

类与对象

  1. 创建类:[public] [private] [protect] [default] [abstract] [final] <class> <类名> [extends 父类名] [implements 接口名] { <类体(成员变量和成员方法)>}
    其中 [public] [private] [protect] [default] 代表类对于其它类的访问性大小。
    public:无限制,谁都可以访问。
    private:该类型对象自己可以访问。
    protect:该类型对象自己和其子类可以访问。
    default:同包中可以访问。
    abstract:抽象类,抽象类不能实例化。
    final:最终类,不能有子类。
    extends:继承父类,Java中是单继承。
    implements:实现接口,Java中可以实现多个接口。

  2. 创建对象<类名> <对象名> = new <构造方法名>([参数列表])
    三个步骤:1、声明对象。2、实例化对象。3、初始化对象。
    考点:构造方法与类同名,可以有多种并存的形式,只能由new调用,无返回值,命令语句不能在构造方法中执行,不设计构造方法时new会调用一个默认的无参的构造方法。
    使用对象方法<对象名>.<变量名> <对象名>.<方法名>
    Java的垃圾回收机制——对象的清除:目的是收回那些不被使用的对象所分配的内存空间。
    明确的清除一个对象可以通过 给这个对象赋值为null来实现。

成员变量与访问限制

  1. 成员变量的声明:必须放在类体中,通常是在成员方法之前。在方法中声明的变量不是成员变量是方法的局部变量。
    成员变量在声明时会自动赋予一个默认值。方法的局部变量没有默认值所以要做初始化的动作,否在会报错。

  2. 成员变量的修饰:[public] [private] [protected] [package] [static] [final] [transient] [volatile] <数据类型> <成员变量名>
    public:无限制,谁都可以访问。
    private:该类型对象自己可以访问。
    protected:该类型对象自己和其子类和同包可以访问。
    package:该类型对象自己和同包可以访问。
    static:声明的成员变量被视作类的成员变量,而不是实例的成员变量。
    每个实例变量在不同的实例当中是不同的,但是在不同的实例当中会共用同一个类的成员变量。
    类的成员变量即类变量不需要实例化即能够访问、引用。
    final:最终变量,一旦成员变量被声明为final 在程序运行期间变量将不能被改变。
    transient:不允许变量被序列化。
    volatile:声明变量为易失变量,防止编译器对该变量进行某种优化。

成员方法

[public] [private] [protected] [package] [static] [final] [abstract] [native] [synchronized] 返回值类型 方法名(参数表)[throws 异常类型]
public:无限制,谁都可以访问。
private:该类型对象自己可以访问。
protected:该类型对象自己和其子类和同包可以访问。
package:该类型对象自己和同包可以访问。
static:声明的成员方法被视作类的成员方法,而不是实例的成员方法。
性质和类的成员变量一样。
final:最终方法,一旦成员方法被声明为final ,将不能被子类覆盖。
abstract:抽象方法,抽象方法只可存在于抽象类中,因为抽象方法不可实现(普通类中定义的方法都是实现,接口中不需要定义抽象方法因为接口中的方法本来就被隐式的定义为抽象方法)。
另外抽象方法不可实现指的是在抽象方法定义时不可实现。通过继承覆写的方式还是可以实现的。
native:本地方法,当方法的实现中嵌入了外部其它语言的资源时(就是调用了其它语言的接口)
需要在方法定义时声明 native,好让解释器使用其它的方式来解析此段代码。
synchronized:同步方法用于多线程编程。
throws 异常类型:抛出为 异常类型 的异常信息给调用者。
返回值类型:有返回值需要 写 void 没有返回值则不需要额外的标识。
方法名:可以是任何有效的标识符。但一般约定是方法首字母小写。
参数表:可以没有参数,也可以一个或多个参数,多个参数用逗号隔开。参数列表中要声明参数的类型和参数的名称。例如 (参数类型1 参数名1, 参数类型2 参数名2)

方法体:方法体中不能改变基本类型的参数值。但可以改变引用类型的成员变量值。
对于这个不能改变也有范围的,在方法体内部是可以修改的,有效范围为这个方法体内部。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值