最新Java程序设计基础 免费下载.docx
- 文档编号:27052628
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:174
- 大小:9.36MB
最新Java程序设计基础 免费下载.docx
《最新Java程序设计基础 免费下载.docx》由会员分享,可在线阅读,更多相关《最新Java程序设计基础 免费下载.docx(174页珍藏版)》请在冰豆网上搜索。
最新Java程序设计基础免费下载
1.Java程序及其执行过程
Java程序可分为二种类型:
应用程序和小应用程序。
应用程序指可以独立运行的计算机应用程序,小应用程序是指用Java语言开发的嵌在网页中运行的程序。
1.1开发Java程序的工作流程
编辑阶段:
Java源程序的文本文件后缀一定是“.java”
一个Java程序可以包含多个类,一个源程序文本可以包含多个类,但是每个文件最多只能包含一个公共类,而且这个公共类必须与其所在的文件同名。
成员方法main是所有Java应用程序执行的入口,但不是Java小应用程序的入口。
成员方法main必须同时含有public、static、void属性,这是Java语言所规定的。
args是main方法的参数变量,String[]是参数变量args的数据类型,这里的参数类型是不可以修改的,可以修改参数变量名。
编译阶段:
编译命令javacJ_helloJava.java
编译命令的文件名后缀一定是“.java”,编译之后生成J_helloJava.class文件,J_helloJava.class是一个二进制文件。
执行阶段:
执行命令javaJ_HelloJava
程序名J_HelloJava一定不能含有任何后缀。
2.结构化程序设计
Java语言总共有二类数据类型:
基本数据类型和引用数据类型。
基本数据类型总共有8种:
布尔、字符、字节、短整数、整数、长整数、单精度浮点数和双精度浮点数。
引用数据类型有4种:
类、接口、枚举和数据。
结构化程序设计=数据+操作+流程控制+结构化程序设计方法
2.1标识符和关键字
标识符用来标识文件名、变量名、类名、接口名和成员方法名。
关键字是Java语言保留的一些英文单词,具有特殊的含义。
Java字符的集合是Unicode字符集,字符采用双字节表示。
Java字母由Java字符集合构成,Java数字一切相当于“数字”的字符。
但是,一般都采用ASCII字母(A-Z和a-z)和ASCII数字(0-9)。
标识符是由Java字母和Java数字组成的除关键字、false、true、null之外的字符序列,而且其首字符必须是Java字母。
2.1.1Unicode码元
Unicode码扩展自ASCII字元集。
在严格的ASCII中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。
Unicode编码表采用16位bite,并采用十六进制表示表示字符及。
编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97,对于汉字的编码,事实上Unicode对汉字支持不怎么好。
2.2基本数据类型、直接量和变量
2.2.1基本数据类型
类型
占用位数
数值范围
初始值
标准
Boolean
1B
True和false
false
Char
2B
‘\u0000’到‘\uffff’
‘\u0000’
ISOUnicode字符集
Byte
1B
-128到+127
(byte)0
Short
2B
-32768到+32767
(short)0
Int
4B
0
long
8B
0L
float
4B
0.0f
IEEE754标准
Double
8B
0.0D
IEEE754标准
2.2.2直接量
直接量是直接显式地表示基本数据类型数据、字符串值(String)和空引用值(null)的表达式,而且在该表达式中不含运算。
布尔直接量:
只有二个:
true和false
字符直接量:
每个字符占2个字节,取值范围从0到66535。
1采用整数直接量写法:
整数的取值范围从0到65535
2用单引号括起来的单个字符:
‘a’,‘b’,‘猫’
3用单引号括起来的Unicode字符:
‘\u0061’,‘\u0051’和‘\u005a’。
由\u引导,\u后面是4位16进制的整数。
4用单引号括起来的转义字符。
字节、短整数和整数的直接量:
1十进制:
由+、-、(0—9)组成的整数表示形式。
2八进制:
由数字0引导,有+、-、(0—9)组成的整数表示形式。
3十六进制:
由数字0x引导,有+、-、(0—9)组成的整数表示形式。
长整数直接量:
在整数直接量写法后面加上L或l
单精度浮点数和双精度浮点数直接量:
1组成:
十进制小数+指数+后缀
2十进制小数:
由正号、负号、小数点、数字(0-9)组成,小数点前面或后面可以没有数字,但不能同时没有数字。
3指数部分:
可以没有,由e或E引导,而且指数只能是整指数。
4后缀:
单精度后缀为字母f或F,双精度后缀为字母d或D。
可以省略后缀部分,此时表示的是双精度浮点数直接量。
字符串直接量:
由双引号括起来的Java字符序列。
直接量null:
是引用类型的数据,表示空的引用值,不指向任何对象。
2.2.3变量
Java变量具有4个属性:
变量名、数据类型、存储单元和变量值。
每个变量拥有一个存储单元,存储单元的大小由其数据类型决定。
在变量存储单元中存放的是该变量的变量值。
在Java程序中,在使用变量前,必须先定义该变量。
定义变量的格式:
类型变量名或带初始化的变量名列表
如果含有多个变量名,则在相邻的变量名或带初始化的变量名之间采用逗号分隔开。
变量初始化:
第一次给变量赋值,在使用变量之前要求初始化。
数据类型转换:
布尔类型与其他数据类型之间不可以相互转换,所以相互之间不存在强弱关系。
字符类型数据与短整数类型数据之间可以进行数据类型转换,但没有强弱关系。
字符类型数据与字节类型数据之间可以进行数据类型转换,但是没有强弱关系。
弱的数据类型数据一般可以直接转换为强的数据类型数据,称为隐式类型转换。
将强的数据类型数据转换成为弱的数据类型数据称为强制类型转换。
强制类型转换需要采用显示类型转换:
在等号的右侧写上用圆括号括起来的转换之后的数据类型。
数据类型的强弱关系:
byte 当从浮点类型数据到定点类型数据的强制类型转换时,一般将小数点后面的数据全部舍去。 如果需要采用四舍五入的方式取整,可以用这种格式: (定点类型)(浮点类型表达式+0.5) 2.3运算符 运算符个数分类: 一元运算符: +,-,++,--,! ,~ 二元运算符: %,+,-,*,/,<,<=,>,>=,==,! =,&&,&,||,|,^,>>,>>>,<<,=,+=,-=,*=,/=,&=,|=,%=,<<=,>>=,>>>= 三元运算符: ? : 运算功能分类: 算术运算符: +,-,*,/,++,--,% 关系运算符: <,<=,>,>=,==,! = 布尔逻辑运算符: &&,&,||,|,! ,^ 位运算符: &,|,~,^,>>,>>>,<< 赋值类运算符: =,+=,-=,*=,/=,%=,&=,|=,<<=,>>=,>>>= 条件运算符: ? : 2.3.1算术运算符 ++,--: 前置运算是先运算,再使用操作数变量值;后置运算是先使用操作数变量值,再进行自增或自减运算。 取模运算: 运算结果符号与第一个操作数符号相同。 运算结果的绝对值一般小于第二个操作数的绝对值,并且与第一个操作数相差第二个操作数的整数倍。 算术运算符优先级: +、-<*、/、%<++、-- 2.3.2关系运算符 Java中建议一般不要直接比较两个浮点数是否相等。 采用如下方式比较二个浮点数d1和d2是否相等: ((d2-epslion) 上式为真表明d1和d2相等,否则不相等。 2.3.3布尔逻辑运算 条件与(&&)和条件或(||)采用短路规则: 运算时,根据第一个操作数进行判断,如果第一个操作数就能推出结果,那么就不会计算第二个操作数。 逻辑与(&)和逻辑或(|)不采用这一规则,第二个操作数一定会被计算。 2.3.4位运算符 右移(>>)运算将第一个操作数表示成二进制补码形式,然后将二进制补码位序列右移第二个操作数指定的位数。 右端移出的低位将自动被舍弃,左端的高位依次移入的是第一个操作数最高位的值。 无符号右移(>>>)运算与右移运算类似,只是将左端的高位依次移入0。 左移(<<)运算将第一个操作数的二进制补码位序列依次左移第二个操作数指定的位数,舍弃移除的高位,并在右端低位处补0。 按位异或运算的性质: 设a和b是任意两个整数,则运算(a^b)^b结果与a相同,(a^b)^a结果与b相同。 2.3.5赋值类运算符 2.3.6条件运算符 条件运算表达式的格式是: op1? op2: op3 条件运算要求op1是一个布尔表达式。 当op1的值为true时,条件运算的结果为表达式op2的值;否则,条件运算的结果为表达式op3的值。 2.4控制结构 2.4.1if语句和if-else语句 2.4.2switch语句 switch(表达式){ case值1: 语句组1 break; case值2: 语句组2 break; case值3: 语句组3 break; default: 语句组(n+1) } 2.4.3for语句 2.4.4while语句 2.4.5do-while语句 2.4.6break语句 break语句用在switch语句、循环语句和带标号的语句块中。 带标号的语句块定义格式有二种。 第一种: 语句块标号: { 语句组 } 第二种: 语句块标号: 循环语句 在switch和循环语句中,break语句的格式是: break;程序会自动跳出这些语句或语句块。 在带标号的语句块中,break语句的格式是: break语句块标号; 2.4.7continue语句 continue语句只能用在循环语句和带标号的循环语句中。 在循环语句中,continue语句的格式是: continue;在带标号的循环语句中,continue语句的格式是: continue语句块标号; 3.面向对象程序设计 应用面向对象语言求解问题的基本思路: 1、分析问题并建立相应的对象。 2、通过这些对象以及它们之间的配合解决问题,其中每个对象在计算机中占用一定的内存,同时能够完成一定的功能。 3.1类、域、方法和实例对象 3.1.1类 类是实例对象的模板,类的定义格式: [类修饰词列表]class类名[extends父类名][implements接口名称列表] 1 类修饰词列表: 用来说明类的属性,包括0个、1个或多个类修饰词,相邻修饰词之间用空格分隔开。 public: 定义的类可以被Java的所有软件包使用。 如果类修饰词列表中没有public关键字,则定义的类只能在当前的软件包中使用。 abstract: 表示定义的类是一个抽象类。 final: 表示定义的类不能用作父类。 strictfp: 定义的类中各个浮点数的表示及其运算严格遵循IEEE754国际标准。 2类名: 如果类修饰词列表中含有public属性,则该类名与其所在的文件前缀同名。 在同一个Java源文件中可以含有多个类,但不能包含两个或两个以上的具有public修饰词的类。 3extends父类名: 指定所定义类的父类,即所定义的类将具有其父类所定义的一些属性和方法。 如果类声明中没有这一项,则定义的类的父类是java.lang.Object。 4implements接口名称列表: 表面定义的类是实现这些给定接口的类,即定义的类将具有这些给定接口的属性和方法。 如果存在多个接口,接口之间用空格分开。 3.1.2域 通常用来表示和存储类所需要的数据,其格式为: [域修饰词列表]类型变量名或带初始化的变量名列表 如果带初始化的变量名列表中有多个变量,则每个变量之间采用逗号分隔开,有多少个变量名就代表着有多少个成员域,每个变量名对应一个成员域。 带初始化的变量名包含赋值运算,等号左侧是变量名,等号右侧是一个表达式。 [域修饰词列表]通常包括: public、protected、private、static、final、transient和volatile。 public、protected、private不能同时存在,它们表示当前定义的成员域的访问控制属性,即当期成员域的应用范围。 static表示当前定义的成员域是静态的。 final要求成员域在首次赋值之后不能再修改该成员域的值。 对于具有final和static属性的成员域,通常要求采用带初始化的变量名的形式定义;如果不带初始化,则该成员域的值通常只能为默认值。 对于具有final属性而不具有static属性的成员域,除了采用带初始化的变量名的形式定义给该成员域赋初值之外,通常还可以在构造方法中给不带初始化的成员域进行一次赋值操作。 transient表明当前的成员域是一种暂时的成员域,即进行对象保存时可以不必保存当前成员域。 volatile主要用在多线程程序设计中,表明在访问当前成员域时将采用同步机制。 3.1.3方法 用来实现类的各种功能,其格式为: [方法修饰词列表]返回类型方法名(方法的参数列表){ 方法体 } 1返回类型: 指定当前成员方法返回的数据的数据类型。 可以是基本数据类型,也可以是引用数据类型。 如果方法不返回任何类型,则在返回类型处写上关键字void。 2参数列表: 每个参数格式是类型参数变量名,类型可以是基本数据类型或者引用数据类型,参数变量名可以是一个合法的标识符。 如果在参数列表中包含多个参数,则在参数之间采用逗号分隔开。 3方法修饰词: public、protected、private、abstract、static、final、synchronized、strictfp。 public、protected、private不能同时存在,表示当前定义的成员方法的访问控制属性,即当前成员方法的封装性。 abstract表明当前成员方法是抽象成员方法,抽象成员方法不能含有方法体,而且一般在抽象类或者接口中定义。 static表明当前定义的成员方法是静态的。 final: 当前成员方法所在的类的子类中不能出现与当前成员方法相同的声明。 synchronized: 当前成员方法是一种同步成员方法。 strictfp: 当前成员方法中各个浮点数的表示及其运算严格遵守IEEE754标准。 3.1.4构造方法 类的构造方法主要用来创建类的实例对象,通常同时完成新创建的实例对象的初始化。 定义构造方法的格式: [构造方法修饰词列表]类名(方法的参数列表){ 方法体 } 构造方法修饰词: 用来说明构造方法的属性,通常包括public、protected、private。 表示当前定义的构造方法的访问控制属性,即封装性。 构造方法具有以下3个特点: 1、构造方法名必须与类名相同。 2、构造方法不具有任何返回类型。 3、任何一个类都有构造方法,如果没有显示地定义类的构造方法,则系统会为该类定义一个默认的构造方法,这个构造方法不含任何参数。 一旦在类中定义了构造方法,系统不会再创建这个默认的不含参数的构造方法。 成员域、构造方法、成员方法在类体中出现的顺序是: 先成员域,再构造方法,最后才是成员方法。 而且,成员方法和构造方法可以同名,但是同名了的成员方法和构造方法,其参数列表一定不能相同,要不就是参数的个数不同,要不就是参数的类型不同(包括数据类型的排列顺序不同)。 3.1.5实例对象 创建类的实例对象可以通过new运算符和类的构造方法,其格式为: new构造方法名(构造方法调用参数列表) 构造方法参数列表由0个、1个或多个表达式组成,相邻两个表达式之间采用逗号分隔开,这些表达式分别称为构造方法的调用参数。 实例对象被创建后,在内存中就会占有一定的存储单元,在该存储单元中存储的是实例对象的非静态成员域等内容。 引用数据类型的变量的类型可以是某一个类,其定义的格式如下: 类名变量名或带初始化的变量名列表; 引用数据类型变量具有4个基本属性: 变量名、数据类型、存储单元和变量值。 变量名是a,数据类型是Integer,变量a有一定的存储单元,在存储单元中存放变量a的值(指向实例对象newInteger(11)的引用)。 类的实例对象的生命周期: 1创建 通过new运算符以及类的构造方法创建类的实例对象。 首先,在内存中创建该实例对象,接着对该实例对象进行初始化工作,在初始化过程中,如果在成员域的定义中含有初始化的变量名,则首先运行在成员域的定义中的这些初始化赋值运算。 然后运行相应的构造方法完成实例对象的初始化工作。 2使用 如果有引用指向该实例对象,则可以访问该实例对象的成员域和成员方法。 访问成员域的格式: 变量名.成员域名,访问成员方法的格式: 变量名.成员方法名(成员方法调用参数列表)。 3废弃 对于一个实例对象,如果没有任何引用指向该实例对象,则该实例对象所占据的内存是不再被Java程序所用的内存,即垃圾。 通过将引用赋值null,将实例对象变为垃圾。 4垃圾回收 基本原理: 在适当的时机自动回收不再被Java程序所用的内存。 在实例对象变为垃圾时,Java虚拟机一般不会立即回收该垃圾,而需要等到适当的时机才回收该垃圾。 调用System对象的gc()成员方法可以向Java虚拟机申请尽快的进行回收垃圾,但不能保证Java虚拟机会立即进行垃圾回收。 在实例对象所占据的内存即被回收之前,通常会调用该实例对象的finalize成员方法,finalize成员方法是java.lang.Object的成员方法。 但是,Java系统不能保证一定调用该方法。 finalize成员方法相当于析构函数,而且析构从后往前析构。 3.2继承性 类的定义格式: [类修饰词列表]class类名[extends父类名][implements接口名称列表] { 类体 } 通过在关键字extends后面添加父类名,指定当前定义类的父类;在implements后面添加接口名称列表,指定当前定义的类所实现的各个接口;通过这样的方式,使得当前定义的类可以继承其父类或所实现接口的成员域或成员方法。 如果没有extends关键字,则默认继承java.lang.Object这个类。 根据继承的传递性可以得知java.lang.Object是除了其自身以外所有的类的父类。 因为extends关键字中只能指定一个父类名,所有每个类有且仅有一个直接父类,可以有多个父类。 当前定义的类与其直接父类之间在构造方法方面存在约束关系,即当前定义的类的构造方法必须调用其直接父类的构造方法,而且调用该调用语句必须是当前定义的类的构造方法的第一条语句,其调用格式是: super(调用参数列表);关键字super指向直接父类的构造方法。 如果,在当前类的构造方法中没有显示的写上调用父类构造方法的语句,则Java虚拟机一般会自动的在当前定义的类构造方法的第一条语句之前自动、隐式的添加调用不含任何参数的直接父类构造方法的语句super(),前提是父类构造函数中必须有这样的无参数的构造函数。 子类型与父类型之间的类型转换: 1 隐式类型转换: 将类型为子类型的数据转换成为类型为其父类型的数据。 这时可以不需要强制类型转换运算符“()”。 也可以加上强制类型转换运算符。 2显式类型转换: 将类型为父类型的数据转换成为类型为子类型的数据。 这时需要加上强制类型转换符“()”。 下面的语句在编译的时候没有错误,但是在运行的时候会出现类型转换错误,因为无法从变量a所指向的实例对象中得到其子类J_Teacher的实例对象。 3如果二个类型之间不存在子类型与父类型之间的关系,则一般不能进行类型转换。 子类型实例对象与父类型实例对象之间的关系: 子类的实例对象同时也是父类的实例对象,由父类构造方法创建的实例对象一般不是子类的实例对象。 使用instanceof运算符来判断一个引用表达式所指向的实例对象是否是某种引用类型的实例对象。 使用格式: 引用类型表达式instanceof引用类型运行结果返回一个布尔值,当引用类型表达式不是null并且所指向的实例对象是指定引用类型的实例对象时,返回true,否则返回false。 3.3多态性 多态性是指在类定义中出现多个构造函数或出现多个同名的成员方法。 对于同名的成员方法,多态性还包括在当前定义的类型中出现与父类型的成员方法同名的成员方法。 多态性包括静态多态性和动态多态性二种。 不存在同名的成员域。 3.3.1静态多态性 静态多态性是指在同一个类中同名方法在功能上的重载,包括一个类对其父类同名方法在功能上的重载,这里的方法可以是成员方法也可以是构造方法。 通过对参数列表的配置来实现方法的重载,不同的参数列表是指参数的个数不同、参数的数据类型不同或者参数的数据类型排列顺序不同。 3.3.2动态多态性 动态多态性指的是在子类和父类的类体中均定义了基于基本相同声明的非静态成员方法。 基本相同声明的成员方法要求子类的成员方法和其父类对应的成员方法具有相同的方法名,相同的参数个数,对应参数的类型也相同,而且子类的成员方法应当比其父类对应的成员方法具有相同或者更广的访问控制方式。 这时也称子类成员方法对其父类基本相同声明成员方法的覆盖。 从子类中访问父类中被覆盖的成员域、成员方法: 1在子类的非静态成员方法中访问其父类型的成员方法。 格式: super.父类型的成员域 如果在子类型的类型体中定义了与该成员域同名的成员域或者在当前非静态成员方法中定义了与该成员域同名的局部变量,都可以通过这种方法访问父类型的成员域。 否则,可以去掉super访问。 2在子类型的非静态成员方法中调用其父类型的成员方法。 格式: super.父类型的成员方法(调用参数列表) 这里被调用的成员方法可以是被覆盖的成员方法,也可以是静态的成员方法或非静态的。 3在子类的构造方法的第一条语句处调用父类的构造方法。 格式: super(父类构造方法的调用参数列表) 调用同一个类的成员域和成员方法: this调用的是同一个类的成员域或成员方法。 动态多态性只针对非静态的成员方法,静态成员方法不具有动态多态性。 3.4包 3.4.1封装包 可以把一组相关的类或接口封装在包里,为了更好地管理已经开发的Java代码。 创建新的包或者将新定义的类、接口或者枚举类型加入到自定义的包中,采用包声明语句。 包声明语句的格式: package包名,且包声明语句必须是要封装的类、接口或枚举的第一条语句。 包名可以是一个标识符;也可以是由若干个标志符由“.”连接而成,其中包名的前几个标识符是所在单位的Internet域名的倒序,最后一个标识符是一个可以概括该软件包功能的标识符。 编译含有包声明语句的Java源程序文件的格式是: javac–d路径名Java源程序文件名 路径名是指软件包的根路径,如果根路径是当前路径,则路径名是一个“.”。 如果包名只含有一个标识符,则在编译之后生成的后缀为“.class”的文件位于软件包根路径的下一级路径下,其中下一级路径名称是包名。 如果包名含有多个标识符,在编译之后生成的后缀“.class”的文件位于软件包根路径下面的多级子目录下,其中各级路径名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新Java程序设计基础 免费下载 最新 Java 程序设计 基础 免费 下载