Java讲义13李铁英Word文档格式.docx
《Java讲义13李铁英Word文档格式.docx》由会员分享,可在线阅读,更多相关《Java讲义13李铁英Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
publicstaticvoidmain(Stringargs[])//入口方法
//创建类实例
MyClassinst=newMyClass();
//调用函数//注释
inst.say();
//语句
其中入口函数是特殊方法。
package(包)
Java用包来管理类命名空间,它提供了一种命名机制和可见性限制机制。
将功能相似的类都放到一个包中,但在同一个包内不能有重名类,不同包内可以有同名类,所以包解决了文件名与类名相同有可能发生冲突问题。
包的使用语法
package用来定义一个类的包。
如果使用package语句,则类的第一行必须无空格,无注释。
其格式如下:
packagepackageName;
包的组成和命名规则
package是由一组类class和接口interface组成。
它是管理大型名字空间、避免名字冲突的工具。
某一个类和接口都包含在某个包中。
一般包命名是由“.”号分隔单词构成,第一个单词通常是开发这个包的的组织的名词,例如com、org、net等;
第二个单词是公司名称,例如ibm、sun、eclipse等;
第三或第四的包名通常是具体包内容名。
包命名一般都是从大到小顺序,即符合文件夹的结构。
例如:
org.eclipse.core.internal.boot
包名习惯上使用小写字符表示。
在java语言中,最基本的包就是Java语言核心API,主要包括如下:
1java.lang:
是Java语言中最核心的包,提供了最基本的数据类型,编程框架。
2java.long.reflect:
放射类;
注:
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。
它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。
其中LEAD/LEAD++、OpenC++、MetaXa和OpenJava等就是基于反射机制的语言。
最近,反射机制也被应用到了视窗系统、操作系统和文件系统中。
在计算机领域,反射是指一类应用,它们能够自描述和自控制。
也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
JAVA反射机制:
“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。
从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。
但是JAVA有着一个非常突出的动态相关机制:
Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。
换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。
3java.io:
是Java语言的标准输入/输出库。
4java.util:
是由一些基本实用类组成,如日期类等。
5java.util.zip:
文件压缩类包。
:
是使Java具备网络处理功能的类,实用该包可以创建、连接套接字(socket),可以编写自己的telnet、FTP等。
套接字”或者“插座”(Socket)也是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。
针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。
线缆的每一端都插入一个“套接字”或者“插座”里。
在Java中,创建一个套接字,用它建立与其他机器的连接。
从套接字得到的结果是一个InputStream以及OutputStream(若使用恰当的转换器,则分别是Reader和Writer),以便将连接作为一个IO流对象对待。
7java.awt:
代表java.awt和java.image等其它包。
这些包通常是JavaAbstractWindowToolkit(抽象窗口工具包,简称AWT)。
它为一些java小应用程序创建实用的界面资源。
它是Java开发图形界面程序必不可少的包。
8java.applet:
Applat应用程序包。
9java.sql:
这个包中有JDBC(JavaDataBaseConnect,Java数据库连接),使用它开发数据库应用程序。
10java.text:
文本处理实体类。
以上这些包的一些常用类是开发Java应用程序编写掌握的。
import(引入)
import相当于C/C++语言的include语句,功能上基本相同。
但区别是:
1include表示包含外部文件,所以include后面是文件名;
而import是输入外部类,所以import后面是类名。
2import后面必须用“;
”号结束,而include不能有“;
”号。
在Java语言中,import语句是用来通知java编译器,该程序使用了外部类,并与当前类连接同时编译。
import语法
importpackageName.className;
如果一个包中引入多个类,则在包名后面加“*”通配符,即:
import.packageName.*;
import引入原则
在源程序中除用到的java.lnag包外,无论是系统类还是自己定义的包中的类,都必须使用import语句标识,以通知编译器在编译时找到相应的类文件。
class(类)
类是Java程序的基本单元,类的大象为实例。
也可以说,对象是类定义的数据类型的变量,创建类后,就可以使用该类创建需要的对象。
Java将每一个可执行的成分都变成为类。
class是类的定义符,用于给类命名,在类定义的开始与结束必须使用花括号。
类的以形式如下:
修饰符classClassName
{
……//类代码
}
创建类的目的是用来完成程序某种功能,创建类后,就可以通过实现类实例来完成类的具体功能。
定义类对象的方法:
ClassNameobjectName;
//定义类对象
new.ClassName();
//实例化对象
ClassNameobjectName=new.ClassName();
创建的objectName代表了类的一块内存区域,是类的实际存在对象,使用对象就可以使用对象的数据,其方法如下:
对象名.对象属性;
//对象名.成员变量
对象名.对象属性=根据类成员变量类型赋初值;
使用“.”运算符来引用类成员(包括变量或函数)。
类的命名一般使用手写字母为大写的英文名词表示;
类成员变量一般使用首单词为小写后跟第手写字母大写名词表示;
类方法一般使用动词表示。
命名规则。
publicclassClassName
intdatMember;
StringstrMember;
voidfunctionNaming()
{
System.out.println();
publicstaticvoidmain(Stringargs[])
ClassNameclassName=newClassName();
className.datMember=12;
className.strMember=”Hello”;
className.functionNaming();
为什么Java语言只能有一个公共类
记住:
如果在源程序包含公共类的定义,则该源文件名必须与公共类名完全一致,负责编译就会出现错误,因为Java语言是严格区分大小写的。
基于此原因,在一个Java源程序中至多只能有一个公共类的定义。
非公共类的定义可以任意取名。
如果在一个源程序中有多个类定义,则在编译时将为为每个类生成一个.class文件。
variable(变量)
一般类中通常包含数据与函数类中类型的元素,一般称为成员变量和成员函数(或称为方法)。
将数据与代码通过类紧密结合在一起,就形成了所谓的“封装”概念。
method(方法)
方法是指引类进行具体的活动和操作。
(更多内容后面分析)
注释
1单行注释:
“//”;
2多行注释:
“v/*……*/”,不能嵌套。
3Java文档注释:
“/**……*/”,使用javadoc生成html格式代码报告,所以文档注释必须写在类、域、构造函数、方法、定义之前。
javadoc只能为public、protected成员处理注释文档。
private、和“友好”成员的注释被忽略,看不到任何输出。
常规注释
下面标记可以有3种类型的文档注释使用:
1@since版本:
注释是在哪个版本之后开始提供的。
2@deprecated类、属性、方法名等:
指出相应的类、方法或属性作废,不再使用。
3@see连接:
这个标记在“Seealso(请参阅)”小节增加一个超链。
这里的超链可以是下面几项内容:
●package.class#memberlabel:
添加一个指向成员的锚链接,空格前面是超链的目标,后面的是显示文字。
●<
ahref=…>
label<
/a>
直接定义一个超链。
●“Text”:
直接在“Seealso”中添加一段没有超链的文字。
●{@link链接目标显示文字}:
link的语法和see语法相同,see是将链接单列在参见项里,而link是在当前注释中的任意位置嵌入一段代超链的文字。
4@author作者名:
5@version版本:
方法注释
紧靠在每条方法注释的前面,必须有一个它所描述的哪个方法签名。
同样除了使用常规用途的标记以外,还可以使用如下针对方法的注释。
●@param:
变量描述
当前方法所需要的所有参数,都需要使用这个标记进行解释,并且这些标记都应该放在一起。
●@return:
该方法的返回值
●@throws:
该方法抛出的异常
使用注释。
Java的修饰符
Java的类、变量和方法都可以在其前面添加若干修饰符来修饰限定所定义的类、变量、方法等。
类的修饰符分为访问控制符和非访问控制符两大类。
修饰符之间的先后排序对修饰对象没有任何影响。
下表是非访问控制符对类、变量和方法的修饰作用。
类的修饰符
抽象类:
abstract
凡是使用abstract手续费修饰的类称为抽象类。
所谓抽象类就是没有具体对象的概念类。
抽象类是一种经过优化的概念组织方法,它将共同点特点抽象出来;
其后在描述和处理某一种具体对象时,只需要描述不同的特殊之处。
抽象类使得所有的概念层次分明、简洁、非常符合人的日常生活习惯。
由于抽象类是它的所有子类的公共属性的集合,所以使用抽象类的一个优点就是可以充分利用这些公共属性来提高开发和维护程序的效率。
abstractclassClassName
{……}
最终类:
final
使用final修饰的类是说明该类不可能有子类。
用fianl修饰的类一般具有固定的作用,用来完成某种标准功能的类。
如Java系统定义好的用来实现网络功能的InterAddress、Socket等类。
abstract和final不能同时使用,abstract为抽象类,没有具体对象,必须派生其子类后再创建对象;
而fianl不能有子类。
最终类定义:
finalclassClassName
变量的修饰符
变量是类和对象成员的属性,定义域的操作就是说明变量或创建对象的操作。
静态变量:
static
使用static修饰的变量称为静态变量,是类中每个对象共享的变量,故称为类变量,是不属于任何一个具体对象的,是一个公共的存储单元,任何一个类的对象访问静态变量时,取道的都是相同的数值。
staticStringworld=”World”;
静态变量可以直接使用类名引用,如:
System.out.println(ClassName.world);
与构造函数相同之处在于都是用来完成初始化工作,但静态初始化器与构造函数有3点不同:
1构造函数是对每个创新的对象初始化,而静态初始化器是对类自身进行初始化。
2构造函数在用new运算符产生新对象时由系统自动执行,而静态初始化器则是它在所属的类加载器到内存时由系统调用执行。
3构造函数的函数的一个特例,而静态初始化器不是方法,没有方法名、返回值和参数列表。
下面是定义了一个静态初始化器,运行执行系统启动时的初始化工作:
Sytem.out.println(“正在执行初始化…”);
Java保留关键字
Java保留关键字是Java本身使用的字母组合,在java程序中有特殊的意义,所以不能使用做为变量名。
Java语言有51个保留字,其中const和goto虽然被保留,但未被使用。
不能使用保留字来命名类名、方法或变量。
这51个保留字分为8个大类:
访问控制保留字
类、方法和变量修饰符
程序控制语句
错误处理
包相关
基本类型
变量引用
Java保留字
变量赋值的两种方法
Java语言中为变量赋值方法:
1.简单赋值
变量名=值;
简单变量赋值。
int_weight;
char$ch;
world=”World”;
_weight=220;
$ch=’A’;
2.定义赋值
变量类型变量名=值;
Stringworld=”World”;
int_weight=220;
char$ch=’A’;
变量的作用范围
变量的定义、赋值都比较简单,最难理解的就是“变量的作用范围”。
变量的影响力取决于变量在什么位置被定义。
在变量的影响力到达的地方,程序就可以访问该变量;
而在变量影响力无法到达的地方,改变量就是不存在一样。
因此,我们将变量影响力称作变量的作用范围(也就是变量的定义域)。
判断一个变量的作用范围就记住一句话:
“每个变量只在定义该变量的代码块中(包括这个代码块包含的代码块)”生效(一个代码块就是两个花括号“{……}”之间的部分)。
一个变量的作用范围外可以有一个与它同名的变量,它们虽然同名,也就是同在一个程序,却可以相安无事地共同存在。
变量的作用范围,仔细分析变量的作用域。
publicclassHelloWorld
Stringhello=”Hello,”;
publicvoidsay()
sayOne();
sayTwo();
publicvoidsayOne()
Stringworld=”World”;
System.out.println(hello+world);
publicvoidsayTow()
Stringworld=”Chian”;
System.out.println(hello+world);
HelloWorld2inst=newHelloWorld2();
运行结果:
Hello,World
Hello,China
成员变量与局部变量
成员变量:
作为类的成员而存在,直接存放在类中。
局部变量:
作为方法或语句快的成员而存在,存在于方法的参数列表和方法定义中。
在语法上,类的成员变量可以在定义后直接使用,而局部变量在定义后必须要先赋值,然后在使用。
所用的类变量都可以通过this来引用。
成员变量分为实例变量和静态变量。
静态变量(内容唯一)可以使用static关键字。
成员变量和局部变量。
publicclassHelloWorld3
staticStringhello=”Hello”;
//静态类变量
Stringworld=”World”;
//成员实例变量
Stringworld=”Chian”;
//局部变量
System.out.println(HelloWorld3.hello+world);
System.out.println(HelloWorld3.hello+this.world);
publicstaticvoidmain(Strngargs[])
HelloWorld3inst=newHelloWorld3();
执行结果:
Hello,China
Hello,World
Java的数据类型
Java数据类型包括两大类型。
1.基本数据类型:
整数类型:
byte、short、int、long;
浮点数类型:
float、double;
字符类型:
char;
布尔类型:
boolean;
float类型,必须使用后缀f,默认的为double类型。
2.对象数据类型:
Java类的实例对象类型。
例如,
Stringworld=“World”;
//字符串对象
Datetime=newDate();
///日期对象
HelloWorldinst=newHelloworld();
//HelloWorld实例对象
Java有8中相对应的对象数据类型:
下面定义的两个变量a和b,虽然它们代表都是1,却是不同的类型,一个是简单的数据类型,另一个是对象对象数据类型。
inta=1;
(数据在栈里)
Integerb=newInteger
(1);
(数据在堆里首地址在栈里)
引用数据类型
java中所有的对象都有通过对象引用访问。
对象引用就是指向对象储存所在堆中的某个区域的指针,所用的对象数据都是于引用数据类型。
//基本数据类型
//对象引用
Integerc=b;
引用类型与数据类型
引用类型与数据类型有不同的特征和用法,它们包括:
大小和速度问题。
不能对原始类型调用方法,但可以使用对象调用方法。
inta=1;
a.hashCode();
//错误
Integerb=newinteger
(1);
b.hashCode();
//正确
数组类型
常用语法
分号(;
)
一个语句是一行用分号“;
”终止的代码。
如:
totals=a+b+c+d+e+f;
块(block)
一个块是以上括号和下括号为边界的语句集合,如:
x=y+1
y=x+1
块语句也被用来组合属于某个类的语句,如,一个块可被用在一个类的定义中:
publicclassDate{
intday;
intmonth;
intyear;
块语句可被嵌套。
ClassName类由main方法构成,这个方法就是一个语句块,它是一个独立单元,单元本身可作为在类ClassName块中的一组事务之一。
其它一些块语句或组的例子如下:
//ablockstatement
x=y+1;
y=x+1;
//ablockusedinaclassdefinition
publicclassMyDate{
//anexampleofablockstatementnestedwithin(嵌套)
//anotherblockstatement
while(i<
large){
a=a+i;
if(a==max){
b=b+a;
//nestedblockishere
a=0;
凡是花括号内的花括号语句都都属于嵌套块。
标识符
标识符:
是赋予变量、类和方法的名称,可从一个字母、下划线(_)或美元符号($)开始,是大小写区别对待的,且无最大长度。
有效标识符如下:
identifier、userName、User_name、_sys_varl、$change
Java技术源程序采用有效的16-bit双字节字符编码标准(Unicode),而不是8-bitASCII文本。
因而,一个字母有着更广泛的定义,而不仅仅是a到z和A到Z。
标识符不能是关键字,但是它可包含一个关键字作为它的名字的一部分。
例如,thisone是一个有效标识符,但this却不是,因为this是一个Java关键字。
Java关键字
下面列出了使用在Java编程语言中的关键字。
abstract、do、implements、private、throw、boolean、double、import、protected、throws、break、else、instanceof、public、transient、byte、extends、int、return、true、case、false、interface、short、try、catch、final、long、static、void、char、finally、native、super、volatile、class、float、new、switch、while、continue、for、null、synchronized、defaultif、package、this。
(共48个)