新建Java项目,在项目基础上新建Java类,此时需要设置包名和要创建的类的名称。编写Java代码,单击运行按钮,选择Java应用程序选项运行代码。
Java中的类名,对象名,方法名,常量名和变量名统称为标识符。由字母数字下划线和美元符号$组成,但是第一个字母不能为数字开头。
Java数据类型
Java中的true和false为boolean类型,不是bool。
类名的每一个单词的首字母要大写,如RecordInfo。方法名和变量名除第一个单词首字母小写其余全大写。常量名的每个字母都要大写,用下划线分割。包名的每个单词的每个字母小写。Java语言区分字母大小写。
引用数据类型包括类引用,接口引用和数组引用。如:Object是类引用,List是接口引用。
初始化引用数据类型时候,一定要new一个来实现。
对象运算符: instanceof
Java中提供了一个专门用来操作字符串的类java.lang.String。可以通过双引号括住字符串来初始化,也可以通过new构造方法来初始化。
数组的创建有两种,一种是new关键字创建,一种是通过{}创建。Java并不直接支持二维数组,声明二维数组的方式为 int [][] days;boolean holidays[][];创建需要用new关键字和大括号创建。
Java程序流程控制语句
(程序流程控制语句语法此处不再写出)
面向对象基础
类中定义有类的成员变量和成员方法。
[]为可选
<>为必选
{}不能丢,成对出现。
类:
[修饰符] class <类名> [extends 父类名] [implements 接口列表] {}
类的修饰符可选的有:public ,abstract,final
成员方法由方法的声明和方法体组成。
成员变量和局部变量:
[修饰符] [static][final]<变量类型> <变量名>;
变量修饰符可选参数:public,protected,private
静态变量与实例变量的区别:静态变量只分配一次内存,在加载类的时候完成内存分配。可直接通过类名访问静态变量。
实例变量每创建一个实例就得为该实例的变量分配一次内存。
局部变量的定义和成员变量的定义类似,但是不同的是一定不能用public,protected,private,static对局部变量进行修饰,但是可以用final修饰。final表示为常量。
[final] <变量类型> <变量名>;
成员变量在类中声明,在整个类中有效。
局部变量在方法内或者方法内的复合代码块声明,只在这个代码块中有效。
成员方法:
[修饰符] <方法返回值的类型> <方法名> ([参数列表]){[方法体]}
方法的修饰符可选的有:public ,protected,private.
构造方法的名字必须和类名完全一样,且无返回值,无void进行标识。注意,如果没有定义构造方法,Java会自动提供一个默认的构造方法,用来实现成员变量的初始化。
一个类的实例就是对象,一个对象要经历声明、创建、使用、销毁几个过程。Java自动有销毁功能,收回对象占用的资源。Java的finalize()方法用于在对象被垃圾回收机制销毁前执行一些资源回收工作,由垃圾回收系统调用,该方法没有任何参数和返回值,且每个类有且只有一个这个方法。
包:
Java要求文件名和类名相同,所以如果将多个类放一起时会出现文件名冲突的情况,这时可使用包对类进行分组。
继承:
继承使用规则:子类可继承父类中被声明为public和protected的成员变量和方法。不能继承private的成员变量和方法;子类能继承在同一个包中的由默认修饰符修饰的成员变量和方法;子类不能继承父类的同名成员变量和方法,父类的会被隐藏,使用子类自己的。
当局部变量和成员变量的名字相同时,若想在成员方法中使用成员变量,则必须使用关键字this。如果想在子类中访问被隐藏的父类的成员方法或者变量时使用super关键字。
多态:
实现多态的途径:方法的重载,和覆盖实现类。
方法的重载是指在一个类中出现多个方法名称一样,但是参数个数或者参数类型不同的方法。使得按照不同的方法表现出不同的结果或者行为。
子类继承父类中所有可能被子类访问的成员方法时,如果同名,那么此时子类覆盖了父类的方法,使得一个方法在不同的子类中表现不同的行为。
方法覆盖时,需要注意:
子类不能覆盖父类中的final和static的方法;子类必须覆盖父类中的abstract方法,或者子类也将其声明为abstract;子类覆盖父类的同名方法时,子类中的方法声明必须和父类中的被覆盖的方法的声明一样。
向上转型:
一个对象可看做本类类型,也可看做它继承的超类类型。取得一个对象的引用,并将它看做超类的对象,称为向上转型。
特殊类:
如抽象类,final类,内部类。
抽象类:只声明方法而不去实现它的类。抽象类不能被实例化。抽象类中创建的没有实现的必须要子类重写的方法叫抽象方法。抽象方法只有方法的声明,没有方法的实现,用关键字abstract进行修饰。注意:抽象类也是一个类,也要有构造方法。
final类:使用关键字final修饰的类。该类不能被继承。有时为了程序的安全,将一些重要的类声明为final类。
内部类:在类中又定义的类。内部类有四种形式,分别为成员内部类,局部内部类,静态内部类,匿名内部类。
只有创建了成员内部类的实例,才能使用内部类的变量和方法。内部类不能用public修饰符,因为【公共类的名称必须和类文件名相同,所以Java类文件中只允许存在一个public公共类】。
局部内部类:在类的方法内定义的类。局部内部类可以访问创建类中的所有成员变量和方法,包括私有方法。局部内部类的实例的创建是在定义它的方法内就要实例化的。
静态内部类:静态内部类和静态变量类似,它是使用static修饰的内部类。静态内部类可以在不创建它外面那层类的情况下直接使用。使用的时候要用【外部类名.内部静态类名】来new。
匿名类:没有名称的内部类,常被用于Swing程序设计中的事件监听处理。
匿名类是直接new的,无声明。格式为:new 匿名类类名 (){};(不要忘了分号)。虽然成功创建了匿名类,但是谁也无法使用它,因为没有一个对该类的引用。匿名类常用来创建接口的唯一实现类,或者创建某个类的唯一子类。
接口:
Java只支持单重继承,不支持多重继承,即一个子类只能有一个父类。那么怎么使用多重继承呢?Java提供了接口来实现类的多重继承。
接口的定义使用interface。接口定义与类的定义类似。
接口的实现:接口可以被类实现也可以被其他接口继承。
在类中实现接口时,方法的名字,返回值的类型,参数的个数和类型必须与接口中的完全一致,必须实现接口中的所有方法。
接口列表中的接口用逗号分割。
接口列表中接口的常量有冲突时,使用【接口名.常量】解决冲突,方法冲突时,实现一个方法就可以了。
Java的集合类
Java的集合类有些是方便存入和取出的,有些是方便查找的。
java.util包中提供了一些集合类,常用的有List、Set和Map,其中List和Set实现了Collection接口。这些集合又成为容器,它们和数组不同,数组长度是固定的,集合的长度是可变的。
List接口、Set接口、map接口和Collection接口的主要特征如下:
1)Collection接口是List和Set接口的父接口,通常不直接使用;
2)List接口实现了Collection接口,允许存放重复对象,按照对象的插入顺序排列;
3)Set接口也实现了Collection接口,但不允许存放重复对象,按照自身内部的排序规则排序;
4)Map接口以键值对key-value存放对象,其中key不可以重复,按照自身内部的排序规则排序。