大数据预科班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
进制
eclipse快捷键
阅读全文
0 0
- 大数据预科班9
- 大数据预科班作业9
- 大数据预科班3
- 大数据预科班4
- 大数据预科班5
- 大数据预科班6
- 大数据预科班7
- 大数据预科班8
- 大数据预科班串讲
- 大数据预科班10
- 大数据预科班11
- 大数据预科班12
- 大数据预科班13
- 大数据预科班14
- 大数据预科班15
- 大数据预科班16
- 大数据预科班17
- 大数据预科班18
- 垃圾收集算法对比
- POJ 1743:后缀数组求 不重叠最长重复子串
- Java实现二叉树的前序、中序、后序以及层次遍历
- Node中http模块详解(服务端篇)
- 变量名命名
- 大数据预科班9
- 【Unity3D】导入FBX模型使用Legacy动画的Scale缩放问题
- gcc编译流程&存储布局&位运算
- 逻辑回归与梯度下降
- 面试系列-HashTable与HashMap的区别
- 3. Longest Substring Without Repeating Characters
- 原码-反码-补码 --数学公式分析
- 第一章 算法在计算中的作用
- 自定义异常,throw,throws和带你去旅行