java复习总结2

静态方法

与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。

其实之前我们一直写的 main 方法就是静态方法。

静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。

如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。

在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。

静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

静态初始化块

Java 中可以通过初始化块进行数据赋值。

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用

static 修饰初始化块,就称为静态初始化块。

注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

面向对象特性

面向对象三大特性:封装,继承,多态

封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,

而是通过该类提供的方法来实现对隐藏信息的操作和访问

优点:1只能通过规定的方法访问数据2隐藏类的实例细节,方便修改和实现

java中包的作用:管理java文件 解决同名文件冲突

包的使用:可以通过import关键字,在某个文件使用其他文件中的类。

java中,包的命名规范是全小写字母拼写

java中的访问修饰符

访问修饰符:可以修饰属性和方法的访问范围

访问修饰符总结

访问修饰符     本类      同报      子类   其它

private       是

默认          是        是

protected      是       是       是

public         是        是       是     是

java中的this关键字

this关键字代表当前对象

this.属性  操作当前对象的属性

this.方法 调用当前对象的方法

封装对象的属性的时候,经常会使用this关键字

java中的内部类

内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。

内部类的主要作用如下:

1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据

3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

内部类可分为以下几种:

成员内部类

静态内部类

方法内部类

匿名内部类

java中的静态内部类

静态内部类是 static 修饰的内部类,这种内部类的特点是:

1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问

2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

java中的方法内部类

方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

注意:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

内部类不能有自己的成员方法和成员变量

继承

继承是类与类的一种关系,是一种"is a"的关系

java中的继承是单继承

继承的好处:子类拥有父类的所有属性和方法(不能使用private修饰)

实现代码复用

语法规则:

class 子类 extends 父类

方法的重写

如果子类对继承父类的方法不满意,是可以重写父类继承的方法的

当调用方法时会优先调用子类的方法

语法规则:

返回值类型

方法名

参数类型及个数

都要与父类继承的方法相同,才叫方法的重写

继承的初始化顺序

1 初始化父类在初始子类

2 先执行初始化对象中属性,在执行构造方法中的初始化

final关键字

使用final关键字做标识有“最终的”含义

final可以修饰类、方法、属性和变量

final修饰类,则该类不允许被继承

final修饰方法,则该方法不允许被覆盖(重写)

final修饰属性

则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)

或在构造方法中赋值(但是只能选择其中的一个)

final修饰变量,则该变量的值只能赋一次值,即变为常量

super关键字

在对象内部使用,可以代表父类对象

应用:子类的构造过程当中必须调用其父类的构造方法。

如果子类的构造方法中没有显示调用父类的构造方法,

则系统默认调用父类无参的构造方法。

如果显示的调用构造方法,必须在子类的构造方法的第一行。

如果子类构造方法中即没有显示调用父类的构造方法,而父类又没有无参的构造方法则编译出错,。

Object类

Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承

Object类

Object类中的方法,适合所有子类。

1   toString()方法

在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)

可以通过重写toString()方法表示出对象的属性

2   equal()方法

比较的是对象的引用是否指向同一块内存地址

一般情况下比较两个对象时比较他的值是否一致,所以要进行重写

多态

对象的多种形态

1 引用多态

父类的引用可以指向本类的对象

父类的引用可以指向子类的对象

2 方法多态

创建本类对象时,调用的方法为本类方法

创建子类对象时,调用的方法为子类重写的方法或者继承的方法

多态中的引用类型转换

1 向上类型转换(隐式/自动类型转换),是小类型到大类型的转换

2 向下类型转换(强制类型转换),是大类型到小类型

3 instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

java中的抽象类

语法定义:抽象类前使用abstract关键字修饰,则该类为抽象类

应用场景:

1 在某些情况下,某个父类只是知道其子类应该包含怎样的方法

,但无法准确知道这些子类如何实现这些方法。

2 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,

从而避免了子类设计的随意性。

作用:限制规定子类必须实现某些方法,但不关注实现细节

使用规则

1 abstract定义抽象类

2 abstract定义抽象方法,只有声明,不需要实现

3 包含抽象方法的类是抽象类

4 抽象类中可以包含普通的方法,也可以没有抽象方法

5 抽象类不能直接创建,可以定义引用变量

java中接口

接口概念

接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。

类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心

这些类的内部数据,也不关心这些类里必须提供某些方法。

接口就是用来被继承、被实现的,修饰符一般建议用public,

注意:不能使用private和protected修饰接口

常量

接口中的属性是常量,即使定义时不添加public static final 修饰符,系统也会自动加上

方法:

接口中的方法只能是抽象方法,总是使用,即使定义时不添加public abstract修饰符,系统也会自动加上

使用接口:

一个类可以实现一个或多个接口,实现接口使用implements关键字。java中一个类只能继承一个父类,

是不够灵活的,通过实现多个接口可以做补充。

如果要继承父类,继承父类必须在实现接口之前

使用接口:

接口在使用过程当中,还经常与匿名内部类配合使用

匿名内部类就是没有名字的内部类,多用于关注实现而不关注实现类的名称

UML

概念

Unified Modeling Language(UML)

又称统一建模语言或标准建模语言

是一个支持模型化和软件系统开发的图形化语言

为软件开发的所有阶段提供模型化和可视化支持

常用UML图

用例图

用例图能够以可视化的方式,表达系统如何满足所收集的业务规则,以及

特定的用户需求等信息。

序列图

序列图用于按照交互发生的一系列顺序,显示对象之间的这些交互。

类图

UML类图、业务逻辑和所有支持结构一同被用于定义全部的代码结构。

时间: 2024-10-07 14:09:35

java复习总结2的相关文章

java复习整理之集合

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.ios培训..Net培训</a>.期待与您交流!------ java复习整理之集合: Collection:集合中的最顶层接口,提供了一些操作集合的共性方法添加:boolean add(E e)boolean addAll(Collection<? extends E> c)删除:void

Java复习第一天---Javascript的基本知识点

1.HelloWord: 2.基础语法: 3.嵌入HTML 借助window.onload事件在整个窗体载入完毕之后运行程序代码 4.事件驱动: 5.DOM操作 5.1 查找元素节点 5.1.1 依据id值 方法:document.getElementById(id值) 获取到的是一个元素节点 var bj = document.getElementById("bj"); alert(getText(bj)); 5.1.2 依据标签名 方法:document.getElementsBy

Java复习第四天---IO流

File类测试 //根据指定的文件名和路径创建File对象 File file = new File("myFile.txt"); //file.exists();检测文件是否存在 boolean exists = file.exists(); System.out.println(exists); //按照file对象指定的路径和文件名创建一个新的文件 file.createNewFile(); exists = file.exists(); System.out.println(e

Java复习第二天---JavaSE基础

[1]以下关于 JVM 的叙述,哪些项正确? A.JVM 运行于操作系统之上,它依赖于操作系统 B.JVM 运行于操作系统之上,它与操作系统无关 C.JVM 支持 Java 程序运行,它能够直接运行 Java 字节码文件 D.JVM 支持 Java 程序运行,它能够直接运行 Java 源代码文件 扩展名为.java的是源代码文件(文本文件):开发时编写代码的文件 扩展名为.class的是字节码文件(二进制):系统运行时执行的文件 [2]下列选项中正确的表达式是: A.byte b = 128; 

java 复习001

java 复习001 比较随意的记录下我的java复习笔记 ArrayList 内存扩展方法 分配一片更大的内存空间,复制原有的数据到新的内存中,让引用指向新的内存地址 ArrayList在内存不够时默认是扩展为1.5倍 + 1个 ArrayList,LinkedList,Vector 区别 Vector内存扩展和ArrayList一样,不过Vector是默认扩展为2倍 Vector支持线程的同步,因此牺牲了访问性能 ArrayList,Vector都是使用数组实现,插入删除效率低 Linked

java复习汇总之面试篇

这些个人感觉都是基础,希望看的园友不要喷. 1.什么是servlet线程安全,如何解决? 2.spring事物管理,在项目中你是怎么管理事物的? 3.java中的有几种线程? 4.java有几种锁? 5.怎么理解java中的多态,项目中何时用到抽象类? 6.如何处理js,sql注入? 7.struts2拦截器的原理? 8.如何理解spring AOP? 11.java中常用的集合,在项目中用到时,有什么需要注意的? 12.如果优化项目中sql,为什么要那样优化? 13.java性能优化? 14.

Java复习第三天---集合框架的相关知识

集合框架总览: Collection 接口常用方法 //1.add()向集合中添加数据 c.add(apple01); c.add(apple02); c.add(apple03); c.add(apple04); c.add(apple05); //2.isEmepty()检测当前集合是否为空 boolean empty = c.isEmpty(); System.out.println("is empty:"+empty); //3.size()返回当前集合的长度 int size

Int与Integer(Java复习一)

最近一直在复习java,写一下其中自己的疑惑点.第一个讲Int和Integer. 首先,应该明确的式Int是数据类型,Integer是封装Int的一个类. 八大数据类型,java都有封装.boolean->Boolean;char->Character;byte->Byte;short->Short;int->Integer;long->Long;float->Float;double->Double; 后者就成了类. 区别一: 在比较两个数大小的时候两者就

java复习预科知识-Markdown学习

java复习预科知识-Markdown学习 写在前面 1.最近深感在家学习效率低下,java基础不太稳固,因此趁放假在家,也无法走动,闲来无事,借写博客进行复习.2月份争取一天一更,每篇博客仅探讨一个小的技术点. 2.Markdown语法并不属于java语法,但是现在几乎所有的博客网站都支持该语法,关于该语法的介绍就不做介绍了,本套系列博客都是基于该语法进行编写,并发布在博客园网站内.百度上搜孤傲的咸鱼,欢迎各位读者关注. 1."标题"语法 # 表示一级标题 => h1标签 ##

Java复习——枚举与注解

枚举 枚举就是让某些变量的取值只能是若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译阶段就控制程序的值,这一点是普通变量无法实现的.枚举是作为一种特殊的类存在的,使用的是enum关键字修饰 枚举常量 枚举常量默认都是使用static final修饰的,所以语法建议使用大写,一个枚举类在第一次被实例化的时候,这些常量就会被创建,这些常量都是枚举类子类的对象 public enum WeekDay{ //每一个枚举的元素(枚举常量)就是一个枚举类子类的对象,是使用static fina