java笔记

接口不申请内存,即不能直接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的一个方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值