java

1.代码块

在类中或方法当中 使用{}括起来的一段代码 就称它是一个代码块
1.局部代码块: 直接定义在方法内部 的代码块, 在调用方法的时候执行。
2.初始化代码块: 直接在类当中定义代码块,初始化代码块在运行时,还是要把它放到构造方法当中
3.静态代码块:在初始化代码块前面加上一个static,在加载字节码时就会自动调用,在主方法之前执行的。只执行一次。

2.类加载

类在什么时候去加载:当第一次使用该 类对象的时候,去加载到JVM, 只加载一次,下一次直接从内存当中使用了(加载时执行static)

3.字段初始化问题

1.静态字段初始化:是在静态代码块当中初始化
2.非静态的字段初始化:它是在构造器当中做的初始化

4.final关键字

修饰字段 : 不能再去修改该字段
修饰方法 : 子类就不能再去覆盖该方法
修饰类:该类就不能再去被继承
final 修饰字段时, 字段是没有初始值 ,必须得要自己手动设置初始值
final 修饰变量,就代表是一个常量 命令规则 :所有的字母都大写MAX_VALUE
final 可以在局部代码块当中使用
如果final修饰的是基本数据类型 ,那么值不能再去修改了
如果final修饰的是一个引用类型 ,那么地址不能再去修改

5.static

static 修饰符
如果你在字段和方法前添加了static,那么它的字段和方法它就属于类
特点:
1.static修饰的内容,是随着类的加载而加载的。
当JVM把字节码加载到虚拟机当中,static他修饰的成员会自动的加载到内存当中。(方法区)
2.static修饰的内容,优先于对象的存在。
3.static修饰的内容,被该类型的所有对象所共享
4.static修饰的内容,可以直接使用类名来调用。

6.包装类的缓存设计

//比较是地址 每new 都会创建一个新的地址
Integer i1 = new Integer(100);
Integer i2 = new Integer(100);
System.out.println(i1==i2);//false

//包装类当中缓存设计 在 -128-127之间
Integer i3 = Integer.valueOf(123);
Integer i4 = Integer.valueOf(123);
System.out.println(i3==i4);//true

//缓存的范围只有-128 到 127 超过这个范围 就不会使用缓存 ,直接创建新的地址
Integer i5 = Integer.valueOf(130);
Integer i6 = Integer.valueOf(130);
System.out.println(i5==i6);//false
new Character(‘a’);//[0 127] 缓存范围

7.抽象类

在方法 前面添加了一个关键字abstract
特点:
1.抽象方法是没有方法体
2.抽象方法必须得要定义在抽象类当中 或 接口 (在类前面添加上了一个abstract
3.抽象方法不能是私有的private,不能使用final修饰 不能同时使用static
子类必须得要去覆盖此方法
在定义的时候不要方法 体了。

抽象类当中 的注意点:
1.抽象类是不能直接创建对象的。
2.抽象类当中,可以有抽象方法 ,也可以有非抽象方法(普通方法:给子类调用的)
3.子类没有去覆盖抽象方法 ,把子类也变成抽象类
4.构造方法不能定义为私有化(抽象方法必须得要让子类继承之后,才能实现内部的方法体。
子类继承的话,先去调用父类的构造方法
5.抽象类不能使用final来去修饰
其实是一个不完整类。需要做为一个父类,子类才能完成对应 的功能 。

抽象类与普通的类有什么区别?
普通类你有的(方法 ,字段,构造器),抽象类都有
抽象不能创建对象。抽象类可以包含抽象方法,也可以包含非抽象方法

8.接口(Interface)

什么是接口
表示一种规范,按照规范来,具有了某一种能力。
java接口也是表示一种规范,使用抽象方法来去定义一组功能,
必须要实现者给提供方法的实现。
接口的定义
interface 接口名称 {

接口也会生成对应的字节码
class 类名{

接口它其实是一个特殊的抽象类 内部的abstract可以省略不写
如果没有在方法 前面添加abstract 会在编译时自动的添加上
如:void transData();
字节码:public abstract void transData();

接口当中的注意点
1.接口是没有构造器,接口是不能创建对象。
2.接口当中定义变量,都是全局的静态常量
如:String name = “my”;
字节码:public static final String name;
3.接口当中 定义的方法 都是公共的抽象的方法
如:void transData();
字节码:public abstract void transData();
4.接口可以多继承
interface 接口名称 extends 继承的接口名, 继承的接口名
接口继承的时候,不会去覆盖父接口的方法
类是不能多继承
5.覆盖的时候,子类的方法权限要比父类大,或者一样大,不能比它小

接口的实现
类名 extends 其它的类 (只能继承一个类) implements 其它的接口(接口可以实现多个)
如:class Cat extends Animal implements Iwalkable{}
在实现类当中必须得要去覆盖接口当中定义的方法, 实现的方法必须得是public

9.接口与抽象类区别

相同点
1.都是被其它类实现或者被继承
2.都不能实例化
3.都可以定义抽象方法 ,定义的抽象方法子类都必须得要覆盖。

不同点
1.接口是没有构造器,抽象类当中是有构造器。
2.抽象类可以包含普通方法和抽象方法,接口当中只能有抽象方法,不能有普通方法(带有方法体)
3.接口当中默认成员变量,public static final 变量;
4.方法 :接口当中默认方法 public abstract 方法 名;

10.内部类

内部类可以分为四种
1.实例内部类:直接定义在类当中的一个类,在类前面没有任何一个修饰符
2.静态内部类:在内部类前面加上一个static
3.局部内部类:定义在方法的内部类
4.匿名内部类:属于局部内部的一种特殊情况

静态内部类:在内部类前面加上static
1.静态内部类是不需要创建外部对象
Outter.Inner in = new Outter.Inner();
2.在静态内部类当中 ,是没有外部类引用
3.静态内部类,是可以访问外部类的静态成员
4.访问静态内部类当中的静态成员 Outter.Inner.color
5.静态内部当中可以定义静态成员,也可以定义非静态成员

实例内部类(创建实例内部类对象当中,会有一个外部类的引用):
属于对象的内部类,不属于类的,不使用static修饰的内部类
想要使用内部类,必须得要先创建外部类
在内部类当中可以访问外部类当中的成员
在内部类当中,不能有静态的成员
外部类是不能直接访问内部当中的成员

局部内部类
定义在方法当中的内部类
1.不能使用一些修饰 public private …
2.局部内部只能在定义的方法当中使用
3.局部内部类当中是不能包含静态变量
4.局部内部类当中可以包含局部变量,使用的局部变量的本质 是final 常量

匿名内部类
就是一个没有名字的局部内部类
匿名内部类 是没有构造器 一个文件对应一个类

匿名内部类 只使用一次的时候来去使用
new 父类的构造器 或 接口(){
内部写的代码(在new时候就会自动执行)

匿名内部类必须得要有父类才, 或者是实现了接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值