java学习日记2

ArrayList:

长度动态,存储类型只能存储引用数据类型

要用基本数据类型应该选用其对应的包装类

import java.util.ArrayList;
//创建集合对象
ArrgyList<引用数据类型> list=new ArrayList<引用数据类型>();
//JDK7:
ArrgyList<引用数据类型> list=new ArrayList<>();

Static:

static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。

静态变量:被该类所有对象共享;不属于对象,属于类;随着类的加载而加载,优先于对象存在

调用方式:类名调用;对象名调用

静态方法:多用在测试类和工具类中,javabean类中很少会用

调用方法:同上

注意:

静态方法只能访问静态变量和静态方法

非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法(不能调用实例对象,因为静态随类的加载而加载,非静态要等对象加载,而此时还没有对象可以调用)

静态方法中是没有this关键字 (this表示当前方法调用者的地址,由虚拟机赋值)

继承:

java继承不支持多继承,但支持多层继承

Java中所有的类都直接或者间接继承于Object类。

方法的传递会从父类传递虚方法表下来,子类调用时候可以直接查看,提高效率,虚方法:非private、非static、非final

继承中:

成员变量访问特点:

就近原则(如果有关键字,this的话在全局找,super在父类找),成员方法也是就近原则

方法重写:@Override标记重写函数,如果有错误会有红色波浪线标记

1.重写方法的名称、形参列表必须与父类中的一致。

2.子类重写父类方法时,访问权限子类必须大于等于父类(暂时了解∶空着不写<protected < public)

3.子类重写父类方法时,返回值类型子类必须小于等于父类

4 . 重写的方法尽量和父类保持一致。

5.私有方法不能被重写。

6.子类不能重写父类的静态方法,如果重写会报错的。

(5.6只有被添加到虚方法表的才能重写)

构造方法的访问特点:

父类中的构造方法不会被子类继承。

子类中所有的构造方法默认先访问父类中的无参构造,再执行自己。

子类构造方法的第一行语句默认都是: super(),不写也存在,且必须在第一行。

如果想调用父类有参构造,必须手动写super进行调用。

多态:

同类型的对象,表现出的不同形态。

表现形式:父类类型 对象名称=子类对象

前提:

有继承关系、有父类引用指向子类对象,要有方法重写

变量调用:编译看左边,运行也看左边。

编译看左边: javac编译代码的时候,会看左边的父类中有没有这个变量,如果有,编译成功,如果没有编译失败。运行也看左边: java运行代码的时候,实际获取的就是左边父类中成员变量的值。

方法调用:编译看左边,运行看右边。

编译看左边: javac编译代码的时候,会看左边的父类中有没有这个方法,如果有,编译成功,如果没有编译失败。运行看右边: java运行代码的时候,实际上运行的是子类中的方法。

弊端:不能调用子类的特有方法(因为编译是先看父类) 可以强制转换回子类型

a类名 instanceof 类名 (变量名) 判断是否是该类,返回值是boolean,追加变量名可以直接强制转化一个新的出来

包:

Final:

修饰方法:表明该方法是最终方法,不能被重写

类:最终类,不能被继承

变量:叫做常量,只能赋值一次

如果是引用数据类型,地址不变,里面的属性值可以变化

权限修饰符:

构造代码块:

写在成员变量中的代码块

可以把多个构造方法中重复的代码抽取出来,

执行时机:我们在创建本类对象的时候会先执行构造代码块再执行构造方法

一般不会用,有需要可以调用自身的构造方法去访问重复的代码,也就是只要在其中一个写就行

静态代码块:

格式:static{}

特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发、只执行一次使用场景:在类加载的时候,做一些数据初始化的时候使用。

抽象类:

关键字abstract

抽象方法:将共性的行为(方法)抽取到父类之后。由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。

抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

抽象类和抽象方法的注意事项:

抽象类不能实例化(不能创建对象)

抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类可以有构造方法

抽象类的子类:要么重写抽象类中的所有抽象方法;要么是抽象类

接口:

作为一种规则,对行为的抽象。

接口中成员的特点:

成员变量:只能是常量

默认修饰符:public static final

没有构造方法

成员方法:只能是抽象方法(jdk7以前只能是)

默认修饰符:public abstract

接口新特性:

就是说接口中有新的方法,可以先不重写,先拿来用,需要了再重写。

静态方法不能被重写;实现类中同名的要用对象调用,接口中的用接口调用。

减少接口中重复的代码,同时又不会让外类调用;

静态私有方法给静态方法服务的

1.接口代表规则,是行为的抽象。想要让哪个类拥有一个行为,就让这个类实现对应的接口就可以了。

2.当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。

设配器设计模式:

内部类:

内部类和外部类是分开的2个字节码文件

在一个类的里面再定义其他类

成员内部类:

写在成员位置的,属于外部类的成员。

成员内部类可以被一些修饰符所修饰,比如: private,默认,protected,public,static等

jdk16以前成员内部类不能定义静态变量

获取成员内部类对象:

1:在外部类中编写方法,对外提供内部类的对象

2.直接创建:外部类名.内部类名 对象名 =外部类对象.内部类对象

eg:

outer.Inner oi = new outer( ).new Inner();

内部类是private :外面不能之间创建,可以在外部类中提供创建。

直接创建:父类多态,因为在外new的时候没法说明内部类存在

内部类调用外部类同名变量:

外部类名称.this.变量

静态内部类:

用static修饰;静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象。

局部内部类:

1.将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。

2.外界是无法直接使用,需要在方法内部创建对象并使用。

3.该类可以直接访问外部类的成员,也可以访问方法内的局部变量。

匿名内部类:

可以写在成员位置,也可以写在局部位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃芒果的蘑菇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值