zoukankan      html  css  js  c++  java
  • 基础关键字

    一、staitc修饰函数的局部变量: 特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局 (唯一)
    staitc修饰全局方法和变量: 特点:只能在本源文件使用 可以通过类名.方法名/变量名 直接引用,而不需要new出一个类来(不依赖于类对象的存在而存在,要进行外置声明)

    二、final 可以用来修饰类、方法、变量,分别有不同的意义,(死)
    final 修饰的 class 代表不可以继承扩展,
    final 的变量是不可以修改的,
    final 的方法也是不可以重写的(override)
    final定义的变量值不可变,方法不可覆写,类不可继承

    三、finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 trycatch-finally
    来进行类似关闭 JDBC 连接、保证 unlock 锁等动作
    总结
    1,不要在 finally 中使用 return 语句。
    2,finally 总是执行,除非程序或者线程被中断。

    四、finalize()是Object中的方法,当垃圾回收器将要回收对象,当一个对象被虚拟机宣告死亡时会先调用它finalize()方法,让此对象处理它生前的最后事情(这个对象可以趁这个时机挣脱死亡的命运,用于释放对象占用的资源(比如进行I/0操作))
    finalize 被设计成在对象被垃圾收集前调用,这就意味着实现了 finalize 方法的对象是个“特殊公民”,JVM 要对它进行额外处理。
    finalize 本质上成为了快速回收的阻碍者,可能导致你的对象经过多个垃圾收集周期才能被回收。实践中 因为finalize拖慢垃圾收集,导致大量对象堆积,也是一种典型的导致 OOM 的原因。

    1、有什么机制可以替换 finalize 吗?
    Java 平台目前在逐步使用 java.lang.ref.Cleaner 来替换掉原有的 finalize 实现。Cleaner 的实现利用了幻象引用(PhantomReference),这是一种常见的所谓 post-mortem 清理机制。
    利用幻象引用和引用队列,我们可以保证对象被彻底销毁前做一些类似资源回收的工作,比如关闭文件描述符(操作系统有限的资源),它比finalize 更加轻量、更加可靠。

    五、super和this的区别
    super.父类的成员。。
    this:代表当前的对象

    六、abstract和 interface
    抽象类可以包含抽象方法。 抽象类无法new对象,即无法实例化。抽象类主要是为了被继承而存在的。
    抽象类不能被final修饰。(抽象类存在的目的是为了继承,而最终类不可以被继承。)
    abstract只能作为其他类的基类
    抽象类只能单继承,接口可以多继承;
    抽象类可以包含抽象方法和非抽象方法,接口所有方法方法都是抽象方法(JDK1.8之前);
    抽象类和接口都可以实现多态。

    七、Exception和Error
    Error 都会导致程序(比如 JVM自身)处于非正常的、不可恢复状态,既然是非正常情况,所以不便于也不需要捕获,常见的比如OutOfMemoryError 类都是 Error 的子类
    Exception 又分为可检查(checked)异常和不检查(unchecked)异常
    可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的以部分。
    不检查异常就是所谓的运行时异常,类似NullPointerException、ArrayIndexOutOfBoundsException之类,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不在编译期强制要求

    八、throws和throw
    语法:
    throw :用来抛出一个具体的异常类型,throw (异常对象);
    throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。
    public void doA(int a) throws Exception1,Exception3{......}

    (1)使用位置不同
    throw位于方法体内部,可以作为单独语句使用;
    throws位于方法头部的参数列表后面,不能单独使用;

    (2)内容不同
    throw抛出一个具体的异常对象,而且只能是一个;
    throws声明抛出的异常类,可以同时声明多个;

    (3)作用不同
    throw用于在程序中抛出异常,一旦执行说明一定有异常抛出,由方法体内部语句处理异常;
    throws用于声明在该方法内可能抛出的异常类,如果抛出了异常,由该方法的调用者处理,层层上抛;

    群交流(262200309)
  • 相关阅读:
    iOS中NSString常用操作合集
    iOS利用Runtime自定义控制器POP手势动画(经典)
    iOS学习之UILable上显示不同的字体和颜色
    iOS学习之UICollectionView使用注解
    iOS学习之new与alloc init,[NSArray array] 和 [[NSArray alloc]init] 及 self. 和 _ 的区别
    iOS学习之常用第三方框架总结(经典/必看)
    iOS学习之block总结及block内存管理(必看)
    Http协议与TCP协议理解
    SDImage框架实现原理详解
    iOS NSFileHandle常用操作
  • 原文地址:https://www.cnblogs.com/webster1/p/8653196.html
Copyright © 2011-2022 走看看