1JAVA基础1.1类、数组、字符串操作类:是变量和方法的集合体。类可以嵌套定义。类是java程序中基本的结构。所有的java语句出现在方法中,所有的方法都定义在类中。类{方法{Java语句}}数组:是最简单的复合数据类型,是有序数据的集合。数组的元素可以是值(基本数据类型)、对象或其他数组。一个数组中的所有值都必须是相同的数据类型。文本字符串:是一种参考数据类型,它本身是由java.lang.String定义的对象。1.2类实例化一个类,就能得到一个对象。类定义由类声明和类体组成。类声明:class+类名:类体:成员变量+成员方法1.2.1类声明类声明格式:【修饰符】+class类名+【extends父类名】+【implements类实现的接口列表】修饰符:指明类的访问控制符合类型说明符,包括:public、默认(friendly)、abstract、final其中:1、public:指明该类为公共类,可被其他类访问或引用其成员变量和成员方法。Java语言规定包含main()的主类必须是公共类。2、默认(也称friendly):没有访问控制符,表示该类只能被同一个包的类访问和引用,也不能用import语句引入。3、abstract:抽象类,指明不能实例化的类4、final:最终类,指明该类不能有子类类名:第一个字母大写并具有类功能特征extends:指明该类是子类,extends后面跟父类名,子类与父类之间有继承关系implements:指明该类实现的接口,后面是接口列表。1.2.2类体class类名{成员变量声明成员方法声明}成员变量和成员方法都可用public、protected、private、static、final来设定访问权。public:公用protected:保护访问,可被同一个包中其他类、不同包中该类的子类以及该类自己访问和引用private:私有访问,只能被该类自己访问或调用。static:静态:静态变量(方法),否则为实例变量(方法)。不需要实例化可以被类直接调用。final:常量:注意用大写字母。1.2.2.1成员变量声明格式:修饰符+type+变量名修饰符:包括:public、protected、private、static、final、transient、volatile:transient:指明变量为暂时性变量,用于实现不同对象存档功能volatile:指明多个线程共享的变量,保证各线程对该变量访问的一致性。1.2.2.2成员方法由方法声明和方法体组成修饰符+方法返回值类型+方法名称+(参数列表)+【throwsexception】{方法体}修饰符:public、protected、private、static、final、abstract、native、synchronized其中abstract:指明方法是否可以重写native:指明代码是由各种语言集成synchronized:指明多线程可并发共享访问。方法体:是对方法的实现,包括局部变量声明、java合法指令Java中的方法的参数传递是传值调用,而不是地址调用。方法不能改变参数值,但可以改变变量值,两个对象之间的参数字段,不能相互交换。1.2.2.3方法重载方法的重载是指多个方法可以享用相同的名称,但参数的数量和类型必须不完全相同,即方法体有所不同,它实现了java编译时的多态性(即静态多态性)。也就是说,程序可以按参数决定调用对应方法,而此决定是由编译器来做的。1.2.2.4构造方法构造方法是类中的一种特殊方法,是为对象初始化操作编写的方法,用它来定义对象的初始状态。Java语言中的每个类都有构造方法,它也是由方法名、参数和方法体组成。构造方法名必须与类名相同,它没有返回值,用户不能直接调用它,只能通过new自动调用。构造方法也有成员、访问权限限制。在构造方法中必须使用成员变量,而且当参数与成员变量同名是,就只能用this关键字。如果类中没有构造方法,java语言提供默认的构造方法。但只要类中提供了构造方法,默认构造方法就无效。构造方法特点:1.3对象、接口、包一个对象的生命周期可以分为3个阶段:生成、使用、清除对象是一组相关变量和相关方法的封装体,是类的一个实例。对象的特征是对象的行为、状态和身份。1.3.1对象的生存对象生成包括声明、实例化、初始化3方面内容。一般格式先定义一个对象变量,再用关键字new生成一个对象,并为对象中的变量赋初始值typeobjectName=newtype(【参数】)typeobjectName:声明时定义对象的类型,包括类和接口的复合类型。new:new关键字是实例化一个对象,给对象分配内存,它调用对象的构造方法,返回该对象的引用。type:指各种数据类型1.3.2对象的使用对象的使用原则:先定义后使用。对象的使用包括访问类成员变量和方法的调用,对象作为类成员使用和作为方法参数(或返回值)使用。访问格式:对象名.调用的方法名或变量名1.3.3对象的清除对象的清除指释放对象所占用的内存。其清除途径:1、依靠java的垃圾回收机制回收内存2、调用System.gc(),请求垃圾回收3、Java系统开始运行时,自动调用java.lang.Object.finalize()释放内存4、在程序中调用重写的finalize()释放系统资源,其格式为:super.finalize();1.3.4接口接口是一种只含有抽象方法或常量的一种特殊抽象类。在java语言中,abstract修饰符定义的类称为抽象类,在其中的方法称为抽象方法。abstract类必须被继承,abstract方法必须被重写,abstract类不能实例化。abstract的格式:abstractclassabstractClass{……..}接口是不包含成员变量和方法的抽象类,它只包含常量和方法的定义。接口的主要功能是:不管类的层次,可实现互不相关的类具有相同的行为。通过接口说明多个类所需实现的方法。通过接口可以了解对象的交互界面。无需了解对象所对应的类。接口定义:由接口声明和接口体组成。程序中的接口定义写成:interfaceActionListener//接口声明{voidactionPerformed(ActionEvent)//方法定义=》publicabstractvoidactionPerformed(ActionEvent)}这里省略了前面的修饰符publicabstract,这是所有接口中的方法的默认值。接口的实现:接口的实现用关键字implements。接口不包括任何实现,与存储空间没有任何关系。如果父类可以不带任何方法和变量定义时,应该选用接口而不用抽象类。1.3.5包Java采用包来管理类名空间。包为编程提供了一种命名机制、也是一种可见性限制的机制,面向对象方法的封装机制。包将类和接口封装在一起,便于大量类的接口的管理,并有利于类和接口的安全。定义:用关键字package。在每个类的起始语句加入。packagecom.cwch.gzb;提示:用package语句说明一个包时,该包的层次结构必须与文件目录的层次相同,否则在编译时可能出现查找不到的问题。使用:使用一个包中的类时,首先要用关键字import导入这些类所在的包:importcom.cwch.gzb.*;当包中有相同名字的类,在使用其中的类时,不用import导入,而是直接用带包名的方法使用:如Date类在java.util.Date包中,可直接引入:ClassmyDateextendsjava.util.Date{………..}提示:java语言的java.lang包是编译器自动导入的,编程时可不用导入,但使用其他包中的类,必须用import导入。1.4类成员修饰符、继承、内部类、类库1.4.1类及类成员修饰符常用的类成员修饰符:1.4.2继承继承是面向对象方法的一种重要基本特征,它使代码可重用,可降低程序复杂性。Java语言中,所有的类都是通过直接或间接地继承java.lang.Object而得到的。对一个类的继承是指在现有类(父类)的基础上构建一个新类(子类),子类重用(继承)了父类的方法和状态,同时还可以向新类中增添新的方法和状态。Java不支持多重继承。通过在声明中加入extends子句来创建子类,其格式为:classSubClassextendsSuperClass{………}重写方法必须遵循的两个原则:子类方法的访问权限比父类方法的访问权限更高;子类方法不能产生比父类方法更多的异常。当子类隐藏了父类的变量,并重写了父类方法后,又要使用父类变量或父类被重写的方法,可通过super来实现对父类变量的访问和对父类方法的调用。Super是用来引用当前对象的父类。Super使用有3种情况:用于访问被隐藏的父类成员变量,其格式为:super.变量名用于调用被重写的父类方法,其格式为:super.方法名;用于调用父类的构造方法,其格式为:super(【参数列表】)多态性:面向对象的另一个重要特性事多态性,他是类的继承和封装性结合而引出的。在java语言中,体现多台性有两方面:静态和动态。静态的多态性:指编译是调用重写方法的一种机制,即同一个方法用不同参数体现程序不同的调用,这是编译器在编译时自动确定实现。可以说,方法重载体现了静态的多态性。动态的多态性:指运行时,利用子类继续父类的所有变量和方法功能,凡是程序使用父类的对象都可用子类的对象来代替。运行时,java解释器会按照调用方法的对象类型,确定调用子类或父类的方法去执行。这体现了动态多态性。1.4.3内部类在一个类的内部嵌套定义的类称为内部类(InnerClass),与普通类相同,但有如下特点:通常,使用内部类来生成事件适配器。1.4.4类库类库以包的形式组织,是包的集合。J2SE标准平台由工具软件和java类库(APIs)组成。其中,java编程所必需的默认引用包为lang包,实用工具在util包中,用户界面工具在Swing包和AWT包中。最基本的包:java.lang包:运行时由java解释器自动引入,程序不用import引入。由接口、类、异常组成。是java语言中最底层的类。java.lang包括的类有:1、Object类、2、Class类、3、System类、4、Thread类Object类:是java所有类的根类,其他类都由它扩展而来。在Object类中定义的方法,其他类都可调用。Class类:是用于类操作的类。Class对象由java编译器自动生成。隐藏在.class文件中,它在运行时为用户提供信息,还提供运行时动态装入环境的操作类ClassLoader。System类:是一个final类,即不能被实例化的类,它主要提供标准输入、输出和系统环境信息。有3个很有用的成员变量:in(标准输入流对象)、out(标准输出流对象)、err(出错流对象)Thread类:是提供线程操作和管理的类。实用工具包:java.util包,包括许多常有工具的类和接口。java.util包括的类有:1、GregorianCalendar日历类、2、Vector类、3、Stack类、4、Dictionary类==》5、Hashtable类==》6、Properties类GregorianCalendar日历类:提供日期和时间的表示,它以格里历(即阳历)来计算。Vector类:实现了动态分配对象列表,使用于可变对象数组的类,它的内存容量可按照需要自动增加。Stack类:实现先进后出的对象栈,是Vector的子类,它不能直接被访问,只能从栈顶压入或弹出。Dictionary类:是抽象类,不能实例化去创建一个对象,是关键字和值的数据存储的集合。Dictionary类扩展出Hashtable类,Hashtable类又扩展出Properties类。1.5一维数组一维数组定义:typearrayName[]或type[]arrayName定义数组时并不分配内存,如要访问数组中元素必须对数组进行内存分配。数组内存分配是通过new操作符或