接口不申请内存,即不能直接new
数据类型:接口,枚举,数组,字符串
******************************************************************************
字符串的拼接:
+
如果和非字符串拼接时,非字符串被转换成字符串
String对象
不可变
StringBuffer类
是可改变的对象,每当我们用它们对字符串操作时实际上是在一个对象上操作。
可增加和可编写字符的可变序列
线程安全的
StringBuilding类
字符串变量
是可改变的对象
非线程安全的
******************************************************************************
System类提供了arraycopy()方法用于赋值数组
System.arraycopy(源数组,源的起始位置,目标数组,目标的其实位置,要复制的数组元素的数量)
******************************************************************************
封装:
信息隐藏,隐藏对象的实现细节,简化开发;
将方法和属性一起包装到一个单元中,单元以类的形式实现。
隐藏属性。方法或实现细节的过程称为封装。
******************************************************************************
装箱:
基本类型——》引用数据类型
拆箱:
引用数据类型——》基本类型
******************************************************************************
super
1.调用父类构造器的语法:
必须放在构造器的第一行
super(无参); 不写自动调用
super(有参); 必须要写
2.super()方法始终指向调用类的父类构造器
3.子类调用父类的构造器时,必须在子类的构造器的第一行
4.super方法可以在子类中调用父类的构造器以外的其他方法
******************************************************************************
构造器:
每当创建给定类的实例时就调用的方法。
与类同名,但没有返回类型;
java为对象分配内存,初始化实例变量并调用构造器
两种构造器:参数化、隐式构造器。
构造器调用顺序
在实例化子类对象的时候,系统会先调用父类构造器,再调用子类构造器。
要调用父类构造器,使super。
******************************************************************************
访问修饰符
private:自己访问。特例:内部类可以访问外部类的私有变量。
默认:自己访问,同包访问。
protected:自己访问,同包访问,子类访问。
public:所有都可以访问。
******************************************************************************
方法覆盖
super.methodname() 调用父类中的方法
子类的访问控制类型必须大于等于父类。
方法名称和返回类型相同,参数列表相同。
覆盖之后,子类优先调用离自己最近的方法
******************************************************************************
方法重载
在同一个类中,方法名相同,参数类型不同,返回类型可同,可不同
******************************************************************************
方法重写
方法名相同。
******************************************************************************
******************************************************************************
继承
子类和父类是相对的
object只能是父类
******************************************************************************
多态:
把子类的对象赋给父类的类型
Anmial a = new Dog();
造型:
是多态的一个应用,将父类的应用指向子类的对象
虚方法调用:
父类 子类 调用
有 有 子类
有 没有 父类
没有 有 出错
属性的调用:
父类 子类 调用
有 有 父类
有 没有 父类
没有 有 出错
******************************************************************************
去除多态
判断一个对象是否是一个类的类型 instanceof运算符
******************************************************************************
枚举:
public enum Seadon{SPRING,SUMMER,AUTUMN,WINTER}
是用一组有限的符号名称来表示一组属性值
枚举的定义在前面
******************************************************************************
static 静态修饰符
static修饰的方法叫静态方法:可以直接使用类名去访问,叫类方法。
static修士的属性叫静态属性:该属性独立于类是实例,可以直接使用类名去访问,叫类属性。
static修士的代码块叫静态代码块:独立于类的实例,可以先于类的加载而加载。
不能使用super或this关键字
可以调用其他静态方法
只能访问静态数据
静态导入。
import导入类,静态方法和属性
静态区域访问的方法和属性都必须是静态的。
用类名调用静态方法。
静态属性属于类的属性,属性值一变,对象调用的属性也全改变。
******************************************************************************
final 终结修饰符
修饰变量,变量变常量
修饰方法,方法不能被覆盖
修饰类,类不能有子类
******************************************************************************
abstract 抽象修饰符
有抽象方法一定是抽象类。
抽象了不一定有抽象方法。
abstract修饰的方法叫抽象方法
抽象方法必须声明在抽象类中
抽象方法语句:
abstract type methos_name(parameter_list);
abstract修饰的类叫抽象类
抽象类不能被实例化(new);
抽象类的非抽象子类必须实现父类的所有抽象方法;
构造器和静态方法不能使抽象的;
子类实现的抽象方法访问范围必须大于等于父类的访问范围。
多态调用虚方法,必须以抽象为基础。
******************************************************************************
interface 接口:
一个类可以有几个接口,相当于父辈
接口可以继承多个接口。
接口中的方法必须是抽象的,可以不加abstract。
接口只能有常量,不能有属性,不能new
适配器:
是个抽象类
接口和抽象类的区别:
1.两者都不能被实例化(new),都包含抽象方法
2.接口主要描述类有什么功能,是一组对类的需求表述;
抽象类主要是讲这个是什么东西,被之上还是一个类。
3.一个接口继承多个接口,同一个类可以是吸纳多个接口,而抽象类毕竟是一个类,
只能继承一个类,如果这个类继承了一个抽象类,它讲不能再继承其他的类
4.接口只能包含抽象方法,
接口可以继承另外的接口,
******************************************************************************
三个日期
******************************************************************************
异常:
try:
catch:
finally:
调试:
使用控制台窗口
System.out.println();
使用调试器
******************************************************************************
集合:
集合框架:
Collection接口
Collection对象时将多个元素组成一个单元的对象。
集合用于存储、检索和操纵数据。
集合框架是用于表示和操作集合的统一体系结构。
常用的接口:
List接口
此接口使数组大小可变
有序的集合;允许重复
ArrayList继承AbstractList并实现List接口(线程,不安全,效率高)/vector(线程,安全)/LinkedList
Set接口
不允许重复
HashSet/TreeSet
Map接口
存储键/值 映射关系
HashMap/Hashtable/Properties
******************************************************************************
TankWar
子弹集中坦克,坦克消失
在子弹类中写了个方法,判断子弹(在子弹类中得到子弹的区域)和坦克(在坦克类中得到坦克的区域)的碰撞,如果为false,则将不再画坦克。
********************************张双虎**********************************************
1.总结出方法重写的几个要求:
a.首先要有继承。
b.子类方法的签名(方法名,返回值类型,参数列表)完全一致。
c.访问修饰符范围必须大于等于父类。
d.方法体必须重新实现。
2总结出构造方法的要求和作用:
要求:a.方法名和类名完全一致
b.没有返回值类型
作用:a.创建对象
b.初始化对象的属性
子类的构造方法的第一行一定会调用父类的构造方法。
默认情况下会调用父类的无参的的构造方法
如果父类没有无参的构造方法,则必须显示使用super(参数列表)调用父类的构造方法。
多态:
同一种类型的不同表现形态
静态多态:
通过方法重载实现的
在调用方法时,实际上调用的是不同的方法
在文件编译时已经确定有不同的表现形态
动态多态(运行时多态):
一定要有继承/接口实现
一定有方法重写
创建子类对象复制给父类对象
按照父类对象调用。但是别重写的方法表现出来的却是子类的形态。
在编译时无法确定运行时的表现形态,只有在运行的时候才能确定知道方法的表现形态。
final修饰的量不可更改
final修饰的方法为最终方法,不能重写。可以被继承。
final修饰的类为最终类,不能被继承(扩展)。
final修饰的类,默认 方法也是final。
常量(名字要大些):
public static final(顺序可以改变) 数据类型 常量名 = 初始值;
String 能不能被扩展/继承。不能, String类是final修饰的。
static 可以修饰变量,方法,静态块,类
static修饰的所有内容都是属于类的
static修饰的变量,是属于类的。所有类的对象都指向同一个变量。
在类加载时静态变量已经被创建(即没有对象也已经存在了)。静态变量可以使用类名直接调用
static修饰的方法,是属于类的。可以使用类名直接调用。main方法是静态的。
static方法是否可以重写/覆盖 不能被重写/覆盖,可以重新定义。 可以被继承
需要类来调用
static方法中不能使用非静态的变量/对象。除非该量/对象是在静态方法中声明的量。
非静态的量必须创建对象才在内存中存在
静态方法可以用类调用。
static方法中不能调用非静态量或者方法。this和super
原因:静态方法可以使用类名直接调用,非静态方法和量必须要用对象调用,静态方法在调用时类对象可能没有创建,那么非静态方法和量都没法使用。
static方法中不能出现this和super;
this是当前对象,super是当前对象的父类,但是可能运行时对象未被创建。
static块 静态块
在类加载时执行。只执行一次(JVM启动到停止,执行一次)。最早执行的程序,往往用来做初始化的工作。
static块的其他要求和static方法要求一致。
普通代码块 创建对象时执行
Object
equals 重写
toString 重写
finalize GC
面试:final、finally和finalize有什么关系
没什么关系
final 是个修饰符
finally 是异常处理的关键字
finalize 是Object的一个方法
java笔记
最新推荐文章于 2024-04-22 21:20:57 发布