静态变量和非静态变量的区别
1、概念的方面:
非静态变量 是因为被对象调用的变量所以又称为对象变量
静态变量 可以被类调用所以又被称为类变量
2、内存的空间方面
非静态变量 堆内存中存储
静态变量 方法区中存储
3、内存的时间上面
非静态:随对象的创建被创建,随对象的回收被回收
静态:随类的加载而加载,随类的结束而结束(时间长)
4、调用者
非静态:只能使用对象
静态:可以使用类名调用,也可以使用对象
工具类:
含义:就是用于服务其他类的一个特殊的工具,相当于一个工具
特点:1、没有成员变量和成员方法;2、不需要创建对象;3、不需要定义构造方法;4、这里面的功能方法都是静态的
定义工具类
定义一个有关于数组的工具类,围绕着数组这个主题进行书写
功能:1、数组的遍历;2、数组中获取最大值;3、数组中获取最小值;4、数组中元素位置的交换;5、数组的反转;6、查找数组中的元素
文档注释
含义:就是帮助我们生成帮助文档的注释
作用:可以对类说明也可以对方法说明
格式:
/**
文档注释
*/
特点:1、可以换行,可以注释多行;2、不可以嵌套
文档注释中的注解:一个特殊的标识 就是一个英文单词,每个单词代表不同的功能;可以被编译器识别。
举例说明:
1、@auther:表示开发人员名称
2、@param:表示参数的意思,后面跟对参数的说明
3、@version:表示当前类的更新版本
4、@return:表示方法的返回值 对返回值进行说明的注释
生成帮助文档
方式一:使用dos命令来生成帮助文档
①:新建一个ArrayTool类,将这个类的代码粘过去
②:找到workspace-->src -->cmd打开黑窗口,输入:javadoc -d ./doc -author -version ArrayTool.java-->生成一个doc文件,打开-->打开index.html
方式二:
右键工程--->export-->java--->javadoc-->选择工程下面的类-->src同目录下有一个doc
查看帮助文档:
原因:我们自己写的工具类不会去使用,但是我们要使用别的工具类,这时候要去阅读人家提供的帮助文档
方式一:在线查阅帮助文档:https://tool.oschina.net/apidocs/apidoc?api=jdk-zh
离线文档的查阅
如何查看一个帮助文档:1、关注该类所持有的构造方法;2、关注该类所持有的方法;3、再看方法时,需要关注三个方面:方法名、参数、返回值
完成需求:1、需求提出;2、可以上网查阅资料【大致思路】;3、再去查阅帮助文档
离线文档--->查看--->索引--->输入类名,回车
Arrays
内容:提供了有关于数组的相关操作
1、binarySearch(int[] arr,int key)-----利用二分查找法来进行元素的查找,有
二分查找法策略:拿我们需要查找的元素跟中间值进行比较,比较完成就可以缩小一半的范围。
查找前提:有序数组
好处:提高查找的效率
2、sort(int[] arr)方法给数组进行升序排序,无返回值
3、toString(int[] arr)以字符串的形式返回数组中的元素,有返回值
4、Equals(int[] arr,int[] arr) 比较的是两个数组中的元素,如果完全一致就返回true,不一致就返回false
继承
含义:将类与类之间建立联系。
格式:使用extends关键字来进行继承。扩展,扩大。
父类:就是Animal类,别名:基类,超类
子类:Cat,Dog 别名:功能层面:派生类
继承的评价:
好处:1、提高代码的复用性,一次编写到处使用;2、提高了代码的可维护性;3、将类与类之间建立联系,更符合我们的思维习惯;4、作为多态的前提。
弊端:耦合性比较高(对父类过于依赖)
开发的原则:高内聚(自身就可以完成很多功能,不需要依赖外界),低耦合;复用性也要提高
继承的注意事项:
1、被private关键字修饰的成员没有办法被子类直接访问,可以通过父类提供公开的方法来访问父类中私有的成员;2、父类的构造方法不能够被子类继承,父类的构造方法适用于父类中对象的构建,给父类中的成员初始化。子类的构造方法是创建子类对象 用于给子类中的成员初始化。我们可以通过一些方式来访问父类的构造;3、不要为了继承而继承,(不符合思维方法
程序员类:工号 ,名称,年龄,工资------父类
项目经理类:工号 ,名称,年龄,工资,奖金
继承的原则:子类 is a 父类
继承的特点:
1、java中的继承只支持单继承(单继承:一个子类只能有一个父类;多继承:一个子类可以有多个父类)避免程序中的不安全性;2、继承关系可以进行嵌套
继承之后成员变量的关系
1、子类和父类中可以有不同的成员变量【常见】:子类中可以访问自己的成员变量,也可以访问父类成员变量
2、子类和父类中可以有相同的成员变量【不常见】:如果出现这种情况,可以就近原则用来区分变量是谁的。子类访问成员变量时会去自身访问。如果想要访问父类中的成员变量需要super关键字
This和super的详细说明
this:表示当前对象的引用
super:表示当前父类的引用
内存图示:
总结:this可以访问子类中的变量,this也可以访问父类中的成员变量
super:可以访问自身类中的成员变量,无法访问子类中的成员变量
成员方法:this可以访问子类和父类中的成员方法;super只能访问父类中的成员方法
构造方法:调用时可以采用this语法和super语法
this() this的构造;super():父类的构造
继承之后构造方法之间的关系
子类在加载信息时要依赖于父类的信息,要将父类的信息加载进方法区
为了保证父类能够先加载进方法区,java中采取了一系列的措施保证父类的构造首先执行。
1、当子类构造方法执行时要先执行父类的空参构造方法。
2、如果子类在构造之前去调用父类中的其他的构造方法那么系统就不会默认调用父类的空参构造。
3、如果子类在构造之前调用了子类中的其他构造就不会再默认去调用父类中的无参构造。
但是其他的子类中的构造还是要去调用父类的构造
1、构造方法不支持递归调用;2、Super和this的语法只能在第一行
总结:加载子类构造之前必须要加载父类的构造。
代码示例:
public class Demo07_继承构造方法之间的关系 {
public static void main(String[] args) {
Zi5 z = new Zi5();
}
}
class Fu6{
int age;
public Fu6(int age) {
this.age = age;
System.out.println("父类的有参构造");
}
public Fu6() {
System.out.println("父类的空参");
}
}
class Zi5 extends Fu6{
public Zi5() {
//super();
//super(666);
this(666);
System.out.println("子类的空参");
}
public Zi5(int age) {
//this();
this.age = age;
System.out.println("子类有参构造");
}
}
输出: