一 static 关键字
(1)static静态的概述
当我们在定义类时会定义相应的属性和方法。而这些属性和方法都是需要通过创建本类个体对象来进行调用的。假如该类的某个属性或方法是该类所有的对象共同拥有的,为了减少代码块的重复性,这时我们就可以通过static关键字来修饰这个属性和方法。static它是静态修饰符,一般用来修饰类中的成员。被static修饰的成员变量或方法属于类,而不再属于这个类的某个对象。其最终的效果是该属性(或方法)被该类的所有对象共享。
(2)静态的优缺点
优点:对对象的共享数据提供单独空间进行存储,没有必要每一个对象都存储一份,节省空间;可以直接被类名调用,不用在堆内存创建对象,使用便捷;
弊端:访问出现局限性。(静态虽好,但只能访问静态)
二 代码块
代码块主要有局部代码块,构造代码块,静态代码块三种;
(1)局部代码块
局部代码块是定义在方法或语句中;以”{}”划定的代码区域,存在于方法中,其作用是控制变量的生命周期(作用域);
(2)构造代码块
构造代码块是定义在类中成员位置的代码块;优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作,每创建一个对象均会执行一次构造代码块。
(3)静态代码块
静态代码块是定义在成员位置,使用static修饰的代码块;它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
该类不管创建多少对象,静态代码块只执行一次。可用于给静态变量赋值,用来给类进行初始化。
三 继承
(1)继承的概述
在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。在形成这一关系体系时,需要使用extends关键字。
继承的使用场景:当多个类有共同的成员变量和成员方法时,这时可以将这些共同点抽取到另外一个类中(父类),再让多个类去继承这个父类,我们的多个类就可以获取到父类中的成员了。
(2)继承的特点
在Java中,类只支持单继承,不允许多继承,但允许多层继承;
方法的重写:在子父类当中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法;
方法重写的应用场景:当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能;
(3)继承的优缺点
A:优点
提高了代码的复用性
提高了代码的可维护性
B:缺点:
类的耦合性增强了;
开发的原则:高内聚低耦合
内聚:就是自己完成某件事情的能力
耦合:类与类的关系
四 抽象类
(1)抽象类的概述
有的时候,某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明并使用abstract修饰,不抽取方法主体。那么此方法就是一个抽象方法;拥有抽象方法的类就是抽象类。
(2)抽象类的概述
抽象类的特点:
抽象方法只能在抽象类里面;
抽象类和抽象方法必须被abstract修饰;
抽象类不能创建对象(不能实例化);
抽象类中可以有非抽象的方法;
抽象类和类的关系也是继承;
一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类。
五 多态
(1)多态的概述
多态是继封装、继承之后,面向对象的第三大特性。
现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。
Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。
(2)多态成员的特点
成员变量:编译看左边,运行看左边;
成员方法:编译看左边,运行看右边;
静态方法:编译看左边,运行看左边;
(3)多态的优缺点
优点:提高程序可维护性,提高代码的可扩展性;
缺点:无法直接访问子类特有的成员;
六 内部类
将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。
内部类主要有三种:成员内部类,局部内部类,匿名内部类;
(1)成员内部类
定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问;
成员内部类可以使用的修饰符: private, public, procted, final, static, abstract ;
(2)局部内部类
局部内部类,定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访问;
(3)匿名内部类
匿名内部类即没有名字的内部类;作用:匿名内部类是创建某个类型子类对象的快捷方式。
七 Object类和日期相关类
(1)Object类
Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。
在Object类众多方法中,需着重了解equals方法与toString方法;
toString方法返回的结果是内存地址,在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此需要重写它。
equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。
在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。
(2)日期相关类
日期相关类中主要有Data类和Calendar类;
Data类:
表示特定的瞬间,精确到毫秒,他可以通过方法来设定自己所表示的时间,可以表示任意的时间;
Calendar类:
Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
八 Collection集合类
在最顶层的父接口Collection中一定定义了所有子类集合的共同属性和方法,因此我们首先需要学习Collection中共性方法,然后再去针对每个子类集合学习它的特有方法;集合体系如下图所示:

集合的体系结构:
由于不同的数据结构(数据的组织,存储方式),所以JAVA为我们提供了不同的集合;
但是不同德集合他们的功能都是相似,不断的向上提取,将共性抽取出来,这就是集合体系结构形成的原因。
常见的数据结构有:数组,链表,栈,队列;
数组的特点:查询快,增删慢;
链表的特点:查询慢,增删快;
栈 :先进后出;
队 列:先进先出;
九 Map集合类
查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。
A:Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储
B:Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
C:Collection中的集合称为单列集合,Map中的集合称为双列集合。
需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
十 异常
(1)异常的概述
什么是异常?Java代码在运行时期或编译时期发生的问题就是异常。
在Java中,把异常信息封装成了一个类。当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置、原因等)。
在Java中使用Exception类来描述异常。它的父类是Throwable。Throwable是Java 语言中所有错误或异常的超类,即祖宗类。在Throwable类中,能够发现与异常Exception平级的有一个Error,它是Throwable的子类,它用来表示java程序中可能会产生的严重错误。解决办法只有一个,修改代码避免Error错误的产生。
(2)异常的处理
异常的处理方式主要有两种:JVM默认处理方式和try...catch方式处理异常;
JVM默认处理方式:如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行并且还终止了程序,异常后面的代码将不在执行;
try...catch方式处理异常:捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。
十一 IO流
(1)File类
File类是File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象,这样就可以实现对文件或文件夹进行相关的操作;
其主要功能有:删除功能,判断功能,获取功能;相关方法可以查阅API文档;
(2)字符流与字节流
IO流按数据流向来分可以分为输入流和输出流;再根据数据类型来细分又可以分为字符流(Reader和Writer)和字节流(InputStream和OutputStream);
字符流在对文本文件进行简单的操作时较为快速便捷,但不能对相关的图片,声音等文件进行操作,此时只能用字节流来进行相关的操作;
十二 编码表
编码表:把计算机底层的二进制数据转换成我们能看到的字符
ASCII
GB2312---GBK
Unicode所有的字符都占2个字节
UTF-8长度可变的码表
ANSI:本地编码表gbk
Java中的字符串默认使用的ANSI(gbk)
乱码:编码保持前后一致即可解决
十三 多线程
(1)多线程的概述
A:进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。
B:线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
C:简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程
什么是多线程呢?即就是一个程序中有多个线程在同时执行。
多线程与单线程相比,单线程效率低,但安全性较高,而多线程则是效率高,安全性相对较低;
(2)多线程的实现
线程的实现主要有两种方式:继承Thread类和实现Runnable接口;
继承Thread类由于采用的是继承,因此会产生较大局限性,为了解决这一大弊端,因此基本上都采用实现Runnable接口来完成多线程功能;
(3)多线程的安全性解决办法
在上面说过,多线程的特点是效率高,安全性较低,为了解决安全性低这一弊端,JAVA语言提供了synchronized关键词同步方法来进行解决。
|