1.Java由语法规则和类库组成
2.定义Java类的一般格式
Class 类名
{
数据成员
成员方法
}
3.创建对象通常包过声明引用变量,创建对象和初始化对象三步
new 是Java的关键字,也可以称其为运算符; "+"可以把两个或多个字符串常量连接起来
Java基本数据类型:
1.整形变量:byte short int long
2.浮点型变量:float double
3.字符型: char(存取需求:2字节 取值范围:Unicode字符集 默认取值:'\u0000')
4.布尔型变量:boolean (默认取值:false)
所有引用类型(字符串 数组 类 接口)的默认取值为:null
4.类的构造方法:
不能对构造方法指定类型,可以有修饰符修饰,它有隐含的返回值,该值由系统内部使用;
和普通方法一样,子类可以继承父类中对它可见的构造方法;
5.类的严谨定义:
[类修饰符] Class 类名 [extends 父类名] [implements 接口列表]
{
数据成员
成员方法
}
类修饰符:
无修饰符:这个类只能被同一个包里的类使用。Java规定,同一个程序文件中的所有类都在同一个包中。这就是说,无修饰符的类可以被同一个程序文件中的类使用,但不能被其他程序文件中的类(即其他包中的类)使用。
Public:公共类不仅可以供所在包的其他类使用,还可以供其他包的类使用。在程序中可以用import语句引用其他包中Public类。Java规定,在一个程序文件中,只能定义一个Public类或接口(这也是一种封装),并且这个Public类或接口必须与程序文件同名,一个程序文件中也可以没有Public类,main函数必须位于与程序文件同名的类中才能作为程序入口程序,一个包可以包含多个程序文件。
final:最终类是不能被任何类继承的类。目的有三:
1.用来完成某种标准功能 (Java许多实现网络功能的类是最终类)
2.提高程序的可读性
3.提高安全性
abstract:抽象类是不能生成实例的类。包含抽象方法的类只能是抽象类,抽象类不一定包含抽象方法。抽象类可以包含抽象方法,也可以包含非抽象方法。抽象方法在其所在抽象类中只给出声明(也只能给出声明,不能给出定义),在继承它的子类中给出定义。非抽象方法当然必须给出完整的声明和定义。
6.数据成员的严谨定义:
[数据成员修饰符] 数据成员类型 数据成员名表;
数据成员修饰符:
static:用static修饰的数据成员不属于类的任何一个具体对象,而是属于类。特点如下:
1.它被保存在类的内存区的公共存单元中,而不是被保存在某个具体对象的内存区中。因此,一个类的任何对象访问它, 都是访问的同一块内存区域(相同的值)。
2.可以通过类名加点访问它
3.仍属于类的数据成员,仍在类的作用域
静态初始化器是由Static引导的一对花括号括起来的语句块,用来初始化类的静态数据成员。
final:最终数据成员是只读的。只能在初始化时赋值。若一个类有多个对象,而某个数据成员是常量,最好将此常量声明为Static,即用static final同时修饰,这样可以节省空间。
pravite:私有数据成员只能被类自身访问。
缺省修饰符:缺省修饰符的数据成员可以被同一个包中的类访问,但不能被不同包中的类访问
protected:protected修饰的数据成员可以被同一个包中的类访问,还可以被不同包中的该类的子类访问。
public:访问公共数据成员只需能访问其所在的类
7.成员方法的严谨定义:
在Java程序中,成员方法(数据成员也一样)的声明和定义只能在类中进行,格式如下:
[成员方法修饰符] 返回值类型 成员方法名(形式参数表) throw [异常表]
{
说明部分
执行语句部分
}
成员方法局部变量注意事项:
1.在方法体内定义变量时,变量前不能加修饰符(包括权限修饰符和非权限修饰符)
2.局部变量在使用前必须明确赋值,否则编译通不过
成员方法修饰符:
static:
1.static方法是属于整个类的,它在内存中的代码段将随类的定义而被分配和装载。而非static方法是属于某个对象的方法,当这个对象创建时,在对象的内存中拥有这个方法的专用代码段。
2.可以用类名做前缀引用static方法
3.static方法只能访问静态的数据成员和成员方法,不能访问非静态的
4.static方法不能被子类覆盖,但可以被重载
5.main方法必须是静态的
main方法是Java程序运行的入口点,在Java的每个Application程序中,都必须有且只有一个main方法。
final:最终方法不能被子类覆盖,但可以被重载。
native:使用本地方法可以将其他语言嵌入到Java语言中,但这样可能会
影响Java的跨平台性,因为嵌入的其他语言不一定是具有跨平台性的。
abstract:抽象方法是只给出声明不给出函数体的方法,其所在类是抽象类。
权限访问控制修饰符(private 缺省 protected public):权限访问控制修饰符修饰的成员方法的访问控制和数据成员一样。
8.Java类库的主要部分是由它的发明者Sun公司提供的(这些类库称为基础类库(JFC)),也有少量是由其他软件开发商以商品形式提供的。
9.在Java中使用一个定义好的类有三种方式:
1.直接使用类,如:System.out.println()
2.继承定义好的类
3.创建类的对象
10.继承
子类继承父类所有对它可见的数据成员和成员方法
Java中所有类都是类object的子类
子类可以重新定义与父类相同(方法名,返回值类型和参数列表等都相同)的成员方法,实现对父类方法的覆盖(overload)。方法的覆盖与数据成员的隐藏的不同之处在于:子类隐藏父类的数据成员只是使之不可见,父类同名的数据成员在子类对象中仍然占有自己独立的内存空间;子类方法对父类相同方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类中不复存在。
this用来引用当前类中的数据成员和成员方法,相当于直接引用。
super用来引用直接父类中的数据成员和成员方法,相当于直接引用(即属于类的内部引用),此时引用的父类数据成员是子类对象内存中的数据成员。
和普通方法一样,子类继承父类中所有对它可见的构造方法,并且若第一条语句不是对父类构造方法或自己其他构造方法的调用,所有子类自己的构造方法第一条语句将默认执行super();所以这时父类中必须有不含参数的构造方法,并且对子类可见(系统自动生成的构造方法对子类是可见的)。
子类构造方法中对父类构造方法和自己其他构造方法的调用必须在第一条语句。
11.abstract不能与final同时修饰同一个类
abstract不能与private,static,final或native同时修饰同一个方法
12.接口
声明定义接口的格式如下:
[修饰符] interface 接口名 [extends 父接口名列表]
{
常量数据成员声明
抽象方法声明
}
接口修饰符有两种:public和缺省。public修饰的接口是公共接口,可以被所有的类和接口使用;缺省修饰符的接口只能被同一个包中的其他类和接口使用。
接口数据成员修饰符:所有接口的数据成员都是final static的,还可以用public或缺省修饰。
接口成员方法修饰符:所有接口成员方法都是public abstract方法。
一个接口可以继承多个接口,一个类可以实现多个接口。
接口的抽象方法都已被指定为public,所以类在实现方法时,必须显式地使用public修饰符,否则将被编译系统警告为缩小了接口中定义的方法的访问控制范围(有的编译系统直接报错)。
接口中没有自身的构造方法,所有成员方法都是抽象方法;如果实现某接口的类是抽象类,则它可以不实现该接口所有的方法。
接口数据成员不可以用protected修饰符修饰,不同包中的接口只要接口的访问权限够,接口中的数据成员就是可见的。
13.包
原文件中若有包说明语句,则必须是第一个语句。
14.数组
数组类型是引用类型,建立数组主要包括三方面的工作:一是声明数组引用变量(引用变量存储在栈内存中);二是创建数组对象(即在堆内存中为数组对象分配内存空间并初始化);三是将创建好的数组对象与声明好的引用变量关联起来。
直接给数组赋初值时引用变量必须是前面未出现过的(用new操作符没有这一限制),所以只能是这一形式:类型标识符[] 数组名 = {初始值};
Java会对数组引用做是否越界检查,若越界则会报错。
可用数组引用变量名.length得知数组的长度(即数组的元素个数)。
相同类型的引用变量之间可以相互赋值。
二维数组即一维数组的数组,其他维数组以此类推,“类型名[]“是一种引用类型,而”类型名[4]“不是,所以声明数组引用变量时[]中只能为空。