学习java的阶段性总结


 

 

this
在Java基础中,this关键字是一个重要的概念,使用this关键字可以完成以下的操作:
    ·调用类中的属性
    ·调用类中的方法或构造方法
        -    在一个构造方法中,调用另一个构造方法时,调用的代码 必须编写在构造方法的第一行。
    ·表示当前对象

static
概述:
static表示“静态”的意思,可以用来修饰乘员变量和成员方法(后续还会学习 静态代码块 和 静态内部类)
static的主要作用在于创建独立于具体对象的域变量或者方法
简单理解:
    被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问,
    并且不会因为对象的多次创建 而在内存中建立多份数据
重点:
1. 静态成员 在类加载时加载并初始化
2. 无论一个类存在多少个对象,静态的属性,永远在内存中只有一份(可以理解为所有对象公用)
3. 在访问时:静态不能访问非静态,非静态可以访问静态!

代码块
普通代码块:
    在执行的流程中 出现的 代码块, 我们称其为普通代码块。

构造代码块:
    在类中的成员代码块, 我们称其为构造代码块,在每次对象创建时执行,执行在构造方法之前。

静态代码块:
    在类中使用static修饰的成员代码块,我们称其为静态代码块,在类加载时执行。每次程序启动到关闭,只会执行一次的代码块。

同步代码块:
    在后续多线程技术中学习

面试题: 构造方法 与 构造代码块 以及静态代码块的执行顺序:
    静态代码块 ---> 构造代码块 ---> 构造方法

 * 继承:
 * 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
 * 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
 * @author 22529
 *    格式:
 *        class 父类{
 *        }
 *
 *        class 子类 extends 父类{
 *        }
 * super:
 *         通过super , 可以访问父类构造方法
            调用super构造方法的代码,必须要写在子类构造方法的第一行
 *         通过super , 可以访问父类的属性
 *         通过super , 可以访问父类的方法

 * 面试题:
 * Java中重载(overload) 与重写(override)的区别
 *     1.发生的位置
 *         重载:一个类中
 *         重写:子父类中
 *     2.参数列表限制
 *         重载:必须不同的
 *         重写:必须相同的
 *     3.返回值类型
 *         重载:与返回值类型无关
 *         重写:返回值类型必须一致
 *     4.访问权限
 *         重载:与访问权限无关
 *         重写:子类的方法权限 必须不能小于 父类的方法权限
 *     5.异常处理、
 *         重载:与异常无关
 *         重写:子类异常范围可以更小,但是不能抛出新的异常

 * final关键字
 *         final用于修饰属性、变量
 *             变量成为了常量,无法对其再次进行赋值
 *             final修饰的局部变量,只能赋值一次(可以先声明后赋值)
 *             final修饰的是成员属性,必须在声明时赋值。
 *             全局常量(public static final)
 * 
 *             常量的命名规范:
 *                 由1或多个单词组成,单词与单词之间必须用下划线隔开,单词中所有字母大写
 *                 例如:SQL_INSERT
 * 
 *         final用于修饰类:
 *             final修饰的类,不可以被继承
 *         final用于修饰方法
 *             final修饰的方法,不能被子类重写

在抽象类的使用中有几个原则: 
· 抽象类本身是不能直接进行实例化操作的,即:不能直接使用关键字new完成。 
· 一个抽象类必须被子类所继承,被继承的子类(如果不是抽象类)则必须覆写(重写)抽象类中的全 部抽象方法。


抽象类和普通类的区别:
1、抽象类必须用public或procted 修饰(如果为private修饰,那么子类则无法继承,也就无法实现其 抽象方法)。默认缺省为 public 
2、抽象类不可以使用new关键字创建对象, 但是在子类创建对象时, 抽象父类也会被JVM实例化。 
3、如果一个子类继承抽象类,那么必须实现其所有的抽象方法。如果有未实现的抽象方法,那么子类也必 须定义为 abstract类

接口和抽象类的区别:
 1、抽象类要被子类继承,接口要被类实现。 
 2、接口只能声明抽象方法,抽象类中可以声明抽象方法,也可以写非抽象方法。
 3、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。 
 4、抽象类使用继承来使用, 无法多继承。 接口使用实现来使用, 可以多实现 
 5、抽象类中可以包含static方法 ,但是接口中不允许(静态方法不能被子类重写,因此接口中不能声明 静态方法)
 6、接口不能有构造方法,但是抽象类可以有


instance  of
作用: 判断某个对象是否是指定类的实例,则可以使用instanceof关键字 
格式: 实例化对象 instanceof 类 //此操作返回boolean类型的数据
                                                                                
注意:
在使用匿名内部类的过程中,我们需要注意如下几点: 
 1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能 继承一个类或者实现一个接口。
 2、匿名内部类中是不能定义构造函数的。
 3、匿名内部类中不能存在任何的静态成员变量和静态方法。
 4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。 
 5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。  6、只能访问final型的局部变量

 

异常是否抛出去,应该站在哪个角度思考?
  如果是因为传参导致异常,应该通过throws将异常抛出去

唯一不执行finally的代码:System
public class Demo {
    public static void main(String[] args) {
        haha();
    }
    public static void haha(){
        try {
            int x = 10;
            int y = 0;
            System.out.println(x/y);
        }catch(Exception e){
            //退出JVM
            System.out.println("出现了异常");
            System.exit(0);
        }finally{
            System.out.println("你好");
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值