自考串讲笔记
1.1 Java语言的特点
Java语言最初的应用对象是消费性电子产品。最初的名字是Oak语言。
Java语言是适用于分布式计算环境的面向对象编程语言,它虽类似于CC++,但比C++简单,忽略了许多为提高计算效率但初学者较难掌握的程序语言特性。
Java语言主要有以下特点:
强类型。
编译和解释:Java语言是一种高级编程语言,用Java语言编写的源程序在计算机上运行需要经过编译和解释执行两个严格区分的阶段。Java的编译程序先将Java的源程序翻译成与机器无关的字节码,不是通常的编译程序将源程序翻译成特定计算机的机器代码。
运行时,Java的运行系统装载和链接需要执行的类,并作必要的优化后,解释执行字节码程序。
自动无用内存回收功能,没有指针,数组元素都要检查下标是否越界。
面向对象。
与平台无关:在任何平台上,Java源程序被Java编译器译成虚拟机能够识别的字节码。这样,只要有Java虚拟机的平台,就能解释执行Java字节码程序,从而实现Java程序与平台无关。
安全性。
分布式计算。
多线程。
1.2 Java应用程序和小应用程序
Java程序可以是独立的应用程序,也可以是能在浏览器上执行的小应用程序(Applet)。两种Java程序都由一个或多个扩展名为.class”的文件组成,而且都需要Java虚拟机(jVM)载入并翻译。
两种程序的主要区别是:
小应用程序只能在与Java兼容的容器中运行,可以嵌入在HTML网页内,在网络上发布,当网页被浏览时,在浏览器中运行,小应用程序的运行还受到严格的安全限制,例如:它不能访问用户计算机上的文件。Java应用程序没有这些限制,也不支持网页嵌入和下载运行。
小应用程序和应用程序在代码编写上也有很大差异。一个小应用程序必须定义成一个Applet类的子类。应用程序可以是Applet类的子类,也可以不是。应用程序必须在一个类中定义一个main()方法,该方法代表应用程序的入口。而小应用程序不必定义 main()方法,它的执行由Applet类中定义的多个方法控制。
Java源程序命名受到严格的限制:
Java源程序的扩展名必须是.Java,而源程序经过编译后得到的应用程序文件名(即字节码文件)的主文件名和源程序中的类名一样,而扩展名是.class”。如果源文件中多个类,那么最多只能有一个public类;如果源文件中有public类,那么源文件的名字必须与这个类的名字完全相同。如果源文件没有public类,那么源文件的名字只要和某一个类的名字相同即可。
Java程序中经常会出现注释。注释是程序中的说明文字,用于帮助阅读程序,它不是语句,不会影响程序的执行效率。
Java语言的注释有三种形式:
行注释(//):用于简短地说明前面代码的意义或功能。注释内容到行末,不能跨行。
块注释(/***/):是多行注释,用于说明下面程序段的算法、功能等,块注释不可嵌套使用。
文档注释(/***/):能被实用程序(命令)Javadoc接受,由它能自动生成程序的HTML文档。
1.3 Java程序的开发过程(以下以SUN公司的JavajDK为例)
对于Java应用程序,先编写Java源程序,源程序经Java编译器(Javac.exe)编译后产生字节码文件,最后由Java解释器(Java.exe)解释执行字节码文件。
对于小应用程序,先编写Java源程序,源程序经Java编译器编译后产生字节码文件,最后由
Web浏览器(appletviewer.exe)解释执行字节码文件。
编译器和解释器的使用格式是:
Javac[选项]源文件(其中源文件是.Java文件)Java[选项]类名 [参数](类名指定的必须是含有main()方法的类,即是一个Java应用程序)
通常情况下用的比较多的开发环境有 EclipsejBuilder等。
1.4 标识符和关键字
Java语言使用Unicode字符集,共有65535个字符。
Java标识符用于命名程序对象。
Java语言的标识符可以按以下规则任意命名:
由字母(包括英文字母、下划线字符、美元字符、
文字字符)和数字组成。
限定标识符的第一个字符不能是数字字符。
除了按上述规则命名标识符外,另外还有命名的习惯约定(行业习惯,不是规定):一般变量名、方法名用小写英文字母开头,类名首字母用大写字母,若命名由若干个单词组成,后面的每个单词用大写开头;文字和常数全用大写字母命名;包名全部用小写字母。
Java关键字:关键字是一些英文单词,在语言中,关键字已经被赋予特定的意义,不能用这些关键字作为标识符
命名程序对象。关键字全部由小写字母组成。每个关键字在程序中出现,均有特定位置和特定使用方法的要求。
1.5 基本数据类型
Java语言是强类型语言,每个变量和表达式都有确定的类型,在变量赋值时要进行类型兼容性检验。
数据类型可分为非基本数据类型和基本数据类型两大类。
非基本类型也称为复合数据类型,是由基本类型组合的新类型。非基本数据类型分为:数组、字符串、类、接口。
基本数据类型也称为原始数据类型,是系统预先规定的一些常用类型。它们是:整数类型、浮点数(实数)类型、字符(文字)类型、逻辑类型(布尔型)。
逻辑类型用关键字boolean标识,所以也称为布尔型。逻辑类型只有真(true)和假(false)两个值。
字符类型用关键字char标识。字符型数据是一个字符,内部表示是字符的Unicode代码,共有65535个不同的字符。在Java程序中,字符常量有普通字符常量(用单引号括住一个字符)和转义字符常量(用\开头后跟特定字符或字符串)两种。
整数类型是指不带小数点和指数的数值数据。
由于计算机只能表示整数的一个子集,表达更大范围内的整数需要更多的二进制位,Java语言将整数数据按数值范围大小不同分成四种:基本型用关键字int标识,4个字节,32位,取值范围是-231~231-1;短整型用关键字short标识,2个字节,16位,取值范围是-215~215-1
字节型用关键字byte标识,1个字节,8位,取值范围是-27~27-1;长整型用关键字long标识(或者在常数后加Ll标识),8个字节,64位,取值范围是-263~263-1。每种整数类型处理不同范围的整数值,并且都是带符号的。
整型常量有十进制、八进制(以数字符0开头)和十六进制(以0x开头)三种写法。
浮点数类型也称为实型,浮点数是带小数点或指数的数值数据。Java语言的浮点数有单精度和双精度两种。
单精度型用关键字float标识,占4个字节,32位。
Float型常量的书写方法是在实数之后加上字母Ff。双精度用关键字double标识,占8个字节,64位。double型常量的书写方法有两种:一种写法是直接写一个实数,或在实数后加字母Dd。另一种是科学计数法,用10的方幂(用字符eE表示幂底10)。
2.1 数据运算
Java语言的基本运算可分成以下几类:赋值运算、算术运算、自增和自减运算、关系运算、
逻辑运算、条件运算和字符串连接运算等。
2.1.1 赋值运算
Java语言中符号=是赋值运算符不是相等运算符(相等运算符是= =见关系运算符的叙述)赋值运算分为两类:一是简单赋值运算;二是复合赋值运算。
1.简单赋值运算
简单赋值运算的一般形式如下:
变量 表达式
赋值运算的执行过程是:
1)计算赋值运算符右端的表达式。
2)当赋值运算两侧的类型不一致时,将表达式值的类型自动转换成变量的类型。
3)将表达式的值赋值给变量,即存储到与变量对应的存储单元中。
这里的类型转达换是指数值数据的类型自动转换,这样的自动转换只能是简单类型向复类型转换,不能从复杂的转换成简单的。即如下所示的从左到右转换。
byteshortintlongfloatdouble
java程序设计主要内容Java语言约定赋值运算也有值,它的值就是赋予变量的值,因此,赋值运算的结果可以继续赋值。
int j
doubley=2.0
y=j=3j的值为3y的值为3.0
赋值运算符结合性自右至左当连续有多个赋值运算时,是从右至左逐个赋值。
2.复合赋值运算
这类运算的特殊性点是:变量即要参与运算,又要接受赋值。为避免对同一个变量的地址重复,计算引入复合赋值运算符。常用的复合赋值运算符有:+=-= =/=%=
2.1.2 算术运算
算术运算要求运算分量的类型是数值类型的(整数类型和浮点数类型)。运算时,只需一个运算分量的是单目运算,需两个运算分量的是双目运算。特别的:
1/为除法运算符,当除数和被除数均为整数类型数据时,则结果也是整数类型数据。例如7/4的结果为1
2%为求余数运算符,求余数运算所得结果的符号与被除数的符号相同。例如5%3的结果为2-5%3的结果为的结果为3
2.1.3自增和自减运算
自增运算符++”和自减运算符--是单目运算符,要求运算分量是数值类型的变量,其作用是使变量的值增1或减1,这两个运算符与变量结合有以下四种可能形式:
++i前缀形式,表示在引用变量i之前,先使i1,以加1后的i值为运算结果。
-i前缀形式,表示在引用变量i之前,先使i1,以减1后的i值为运算结果。
i++后缀形式,表示在引用变量i之后,才使i1,即以增1前的i值为运算结果。
i--后缀形式,表示在引用变量i之后,才使i1,即以减1前的i值为运算结果。
例如:
i=4j=++ii结果为5j的结果为5
i=4j=i++i的结果为5j的结果为4
i=4j=!!ii结果为3j的结果为3
i=4j=i!!i结果为3j的结果为4
上述例子说明,对变量采用自增(或自减),用前缀形式或用后缀形式,对变量本身来说,效果是相同的,但表达式的值不相同。前缀形式是变量运算之后的新值,后缀形式是变量运算之前的值.自增自减运算能使程序更为简洁和高效,但在使用时需注意++”和!!”运算的运算对象只能是变量,不能是常量或表达式.例如,4++或(i+j++都是不合法的.
2.1.4 关系运算
关系运算对左右两侧的值进行比较,如果比较运算的结果成立,则值为true,不成立为false
关系运算符的优先级别不完全相同。<<=>>=的优先级高于==!=
关系运算符的优先级低于算术运算符的优先级。