大数据预科班9

来源:互联网 发布:mac升级中解压软件损坏 编辑:程序博客网 时间:2024/04/30 06:33

大数据预科班9

复习:

static

  • static--变量、方法、代码块、内部类
  • 静态变量--放于静态区,被所有对象所共享
  • 静态方法--放于方法区中的静态区,在栈内存中执行(代码块+方法)
  • 所有的非静态属性和非静态方法必须由对象来调用
  • 静态不属于对象,属于整个类;
  • 静态代码块,存储在静态区,在本类创建对象或者调用方法的时候被调用,终其一生只执行一次
  • 程序启动时,先加载好核心类库到方法区(有静态属性或静态方法存放在静态区),其次是主函数所在的类,类在第一次使用的时候才会加载,类一旦加载到方法区,就不会在移除

final

  • 修饰变量--常量,基本类型值不可变;引用数据类型中地址不可变,属性值可变
  • 修饰函数--最终方法,可重载,不可重写
  • 修饰类--最终类,不可继承

抽象类

  • abstract
  • 有构造函数,但不能创建对象
  • 抽象方法不能用static、final、private修饰

接口

  • 接口不是类,没有构造函数
  • 所有方法都是抽象方法(JDK1.8以前)--public abstract修饰
  • 属性public static final
  • 模板作用:规范化
  • 接口可以声明对象,但不能创建对象

内部类

  • 含义:定义在类内部的类
  • 作用:封装的第三种形式
  • 方法内部类

1. 定义在方法内的类2. 举例    class Outer{        public void m(){            class Inner1{                public void m(){                    System.out.println("inner");                }            }            System.out.println("outer");        }       }3. 不能在方法外使用4. 作用:封装5. 不能定义静态变量和静态方法,可以定义静态常量6. 外部类不能调用,但是属于外部类7. 不能使用当前方法的变量,可以使用常量8. 内部类可以使用外部类的东西(先后出现顺序)9. 内部类可以继承其他类,实现接口
  • 成员内部类

1. 定义在类内方法外2. 举例    class A{        class B{        }    }3. 创建内部类对象    A a=new A();    A.B b=a.new B();    new A().new B();4. 不能定义静态变量和静态方法,可以定义静态常量5. 可以继承其他类,实现接口
  • 静态内部类

1. 用static修饰的成员内部类2. 与成员内部类差别很大3. eg    class A{        static class B{        }    }4. 创建    A.B b=new A.B();5. 可以定义静态方法和静态方法6. 静态内部类和普通类基本一致7. A.B.m();//驼峰命名法和源代码判断是内部类还是对象(System.out.print())

1. 判断是不是内部类看 $.class中是否有$(A$B.class存在内部类)
所以一般不用$符号命名类,容易引起歧义
2. 判断是不是方法内部类看$后面是否有数字(方法中的类按照顺序依次填数字1,2,3,4...)(A$1B)

  • 匿名内部类

1. 没有名字,只能调用一次2. eg    A a=new A(){    };3. 本质:继承类和实现接口4. {}匿名内部类;习惯上认为eg中的全部5. 普通类也可以写匿名内部类(本质:继承和实现)6. 类:相当于继承类7. 接口:相当于实现接口8. 当匿名内部类定义在方法中时,与方法内部类类似,不能手动定义构造函数(匿名类没有名字)9. 定义在类内方法外与成员内部类类似10. 匿名内部类自定义的方法没啥用,几乎不会定义,除非在其中的方法调用它   

扩展:内部接口

  • 定义在类内的接口或定义在接口中的接口
  • 类内的接口默认是静态的(必须为静态的,要不获取不到)、
  • 接口中允许定义成员内部类,且默认为static
  • 类与接口之间可以互相定义

  • package
  • 导包 import(默认不用导包java.lang核心类库--一个java程序执行之前会自动把这个包下的类自动加载进来)
  • 导包:同一包下所有类,但是不包括子包下的所有类import java.util.*;
  • java.util工具包
  • java.io传输数据
  • java.net网络通讯
  • javax扩展包
  • java.nio并发

垃圾回收机制

  • 针对堆内存的(因为栈中用完就释放了;)
  • 当调用构造函数时,会创建一个对象,因为java中对每种数据类型都明确的给定了大小。
  • 创建对象的时候,会自动计算大小分配内存。所以在内存回收和释放的时候也是由java自己管理
  • C语言(析构函数)
  • String最终成为String数组
  • 一个对象创建的时候是放到新生代的伊甸园区,如果栈中没有引用,那么会在扫描的时候被解析,释放内存;如果经过一次依然释放内存,将会移入新生代的幸存区,幸存区的扫描频率略低于伊甸园区;如果幸存区多次扫描依然没有被释放,会被放入老生代,老生代的扫描频率远远低于新生代,老生代的对象一旦被回收,可能造成程序的卡顿或崩溃。
  • 初代回收--新生代的回收minor GC
  • 完全回收--老生代的回收full GC

类加载器

  • 启动类加载器/引导类加载器
  • 扩展类加载器
  • 系统类加载器(比较活跃)
  • 双亲委派机制

API(Application //Programing Interface)

  • Object
  • String/StringBuilder/StringBuffer
  • Pattern正则表达式
  • 包装类
  • 数学类
  • 日期类
  • 异常
  • 集合/泛型/Comparator/Iterator
  • Map
  • File
  • IO装饰者模式
  • 线程
  • 套接字
  • Juint测试
  • JDk5静态导入、可变参数局、枚举、反射
  • JDK8
  • XML

Object

  • 是所有类的顶级父类(超类)
  • 唯一没有父类的类
  • 重要方法

1. clone克隆并产生一个新对象,地址不一样,属性值一样(protected、需要强转、抛出异常CloneNotSupportedException--所对应的类必须实现Cloneable接口--没有任何的方法和属性,只是标识这个类可被克隆)2. equals判断两个对象是否一致(相等),判断的是直接值(地址);   手动重写equals//先判断两个对象的地址(==)    //判断对象是否为null//判断类型是否一致(对象.getClass)//判断属性值(注:String比较时比较地址和内容)注:==判断的是对应的直接值(地址)3. fanilize通知垃圾回收器回收垃圾对象,但是垃圾回收器不一定执行    System.gc();//底层用fanilize写的4. getClass获取当前对象的实际类型5. hashCode(native称之为本地方法:c语言实现)(散列算法得到一个值,每个对象产生的哈希码是唯一的)(每一个对象的唯一特征)    重写hashCode方法时,当equals值为true时,要求hash码一致,反过来不成立。6. toString方法:当打印一个对象的时候,默认调用的是toString7. wait8. notify

进制

进制缩写全称二进制BinBinary八进制OctOctal十进制DecDecimal十六进制hexHexagondecimal

eclipse快捷键

名称快捷键单行注释与取消ctrl+/多行注释ctrl+shift+/多行注释取消ctrl+shift+\调整代码格式alt+shift+f快速导包ctrl+shift+o错误提示键ctrl+1复制ctrl+alt+up上移alt+up下移alt+down删除ctrl+d......
原创粉丝点击