A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一 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关键词同步方法来进行解决。


来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端

4 个回复

正序浏览
黄马良 来自手机 初级黑马 2018-1-27 11:04:01
报纸
6666666666666
回复 使用道具 举报
yuxiaoyi 来自手机 中级黑马 2018-1-26 16:14:56
板凳
思路很清晰
回复 使用道具 举报
收藏收藏
回复 使用道具 举报
童鞋,可以的 加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马