• 人生第一篇博客 -- JAVA SE 总结


       之前的博客都是在网上摘摘抄抄的,没有自己来写一篇博客,而且最近由于毕业设计和要找工作忙得焦头烂额的,没时间整理和学习。所以计划完成毕业设计后,重新来整理一下 电脑的文件和网盘的文件,并把之前学过(已经忘记)的知识在重新复习一遍。明天打算去参加华工的招聘会,由于之前的JAVA SE基础基本都忘了,所以重新来过一遍。

      (1)基本数据类型

      byte , short , char , int , long , float , double , boolean

      (2) this ,super 和 static

        this.成员变量  this.成员方法  this.构造函数

        super.成员变量  super.成员方法  super.构造函数

        类名.静态变量  类名.静态方法

      (3)  成员变量放置在堆内存中

        局部变量保存在其所在方法的栈内存中,随着方法的运行结束而结束

      (4)  switch

        jdk7之前 switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型

        jdk1.7后,整形,枚举类,字符串都可以 ,  jdk1.7并没有新的指令来处理switch string,而是通过调用switch中string.hashCode,将string转换为int从而进行判断

      (5) equals与==的区别

         ==是指对内存地址进行比较, equals()是对内容进行比较

      (6) Object的方法

        clone()  toString()  equals()  hashcode()  getClass()  wait()  notify()  notifyAll()

      (7) Java的四种引用

        ①强引用:最普遍的一种引用方式,如String s = "abc",变量s就是字符串“abc”的强引用,只要强引用存在,则垃圾回收器就不会回收这个对象。

        ②软引用:用于描述还有用但非必须的对象,如果内存足够,不回收,如果内存不足,则回收。一般用于实现内存敏感的高速缓存,软引用可以和引用队列ReferenceQueue联合使用,如果软引用的对象被垃圾回收,JVM就会把这个软引用加入到与之关联的引用队列中。

        ③弱引用:弱引用和软引用大致相同,弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。

        ④虚引用:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。系统无法通过虚引用来获取被引用的对象

      (8) 重写equals() : 满足 自反性  对称性  传递性  一致性

      (9)final

        ①final 方法 不能被重写,但是可以被重载

        ②final 变量:基本数据类型 -> 数据值不可变  引用类型 -> 地址值不能变

        ③不可变类:  private final 修饰成员变量

               提供带参数的构造方法

               只提供getter方法,不提供setter方法

               保证引用的引用类型是不可变的

      (10)final 和 abstract 互斥

        final 和static 不能同时修饰方法,但是可以同时修饰内部类

      (11) 抽象类和接口的区别:  

    1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

     

    2、抽象类要被子类继承,接口要被类实现。

     

    3、接口能有抽象方法,默认方法和静态方法(JDK8支持),抽象类能有抽象方法和其他非抽象类的方法

     

    4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

     

    5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

     

    6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

     

    7、抽象类里可以没有抽象方法

     

    8、如果一个类里有抽象方法,那么这个类只能是抽象类

     

    9、抽象方法要被实现,所以不能是静态的,也不能是私有的。

     

    10、接口可继承接口,并可多继承接口,但类只能单继承。

      (12) 内部类  内部类能访问外部类的私有数据,但是外部类不能直接访问内部类的实现细节

        ①静态内部类   可以包含静态成员和非静态成员,只能访问外部类的静态变量,接口只能包含静态内部类

        ②非静态内部类  不能拥有静态成员,子类可以是外部类

        ③局部内部类

        ④匿名内部类

      (13) 枚举类

        ①继承于java.lang.Enum

        ②实例必须在第一行显示列出

        ③构造方法为private

        ④可以包含抽象方法,但是方法前面不加abstract,而且必须提供实现

        ⑤values() 获取所有的枚举值  

         ordinal() 返回枚举值在枚举类的索引值

         compareTo(E e) 比较枚举值的前后顺序

         valueOf(Class class, String name) 返回制定枚举类中指定名称的枚举值

       (14) 对象在内存中的状态

    1、可达状态
    当一个对象被创建后,有一个以上的引用变量引用它。在有向图中可以从起始顶点导航到该对象,那么它就出于可达状态,程序可以通过引用变量来调用该对象的属性和方法。
    2、可恢复状态
    如果程序中某个对象不再有任何引用变量引用它,他将进入可恢复状态,此时从有向图的起始顶点不能导航到该对象。在这种状态下,系统的垃圾回收机制转变回收该对象所占用的内存。在回收该对象之前,系统会调用可恢复状态的对象的finalize方法进行资源清理,如果系统调用finalize方法重新让一个以上的引用变量引用该对象,则该对象会再次编程可达状态;否则,该对象将进入不可达状态。
    3、不可达状态
    当对象的所有关联都被切断,且系统调用所有对象的finalize方法依然没有使该对象变成可达状态后,这个对象将永久性地失去引用,最后变成不可达状态。只有当一个对象出于不可达状态,系统才会真正回收该对象所占用的资源。

      (15) 强制系统回收垃圾的两种方式

        ①System.gc();

        ②Runtime.getRuntime().gc();

      (16) 常用的工具类

        ①Scanner

        ②System.currentTimeMill();

        ③Runtime.exec();

        ④Objects

        ⑤String

          charAt(int index);  获取索引对应的值

          indexOf(int ch);  indexOf(String str);  获取值对应的索引

          lastIndexOf(...);

          compareTo(String string); 返回字符差或者长度差

          concat(String string);

          contentEquals(StringBuffer sb); 比较String和StringBuffer,包含的字符序列相同返回true

          copyValueOf(char[] data);  等价于new String(char[] data)

          substring();

          getBytes();

          toCharArray();

          valueOf(X x);  String str = Integer.valueOf(12);  

        ⑥StringBuffer  

        ⑦StringBuilder

           append(s);

           insert(i,s);

           delete(a,b);

           reserve(s);

        ⑧Math

          pow(a,b);

          floor(a);

          ceil(a);

          round(a);

          sqrt(a);

        ⑨Random  ThreadLocalRandon   伪随机

          Random rand = new Random(send);

          rand.nextInt(a,b);

          ThreadLocalRandom rand = ThreadLocalRandom.current();

        ⑩BigDecimal

          new BigDecimal();

          BigDecimal.valueOf();

          对于浮点数

             new BigDecimal("1.22");

             BigDecimal.valueOf(1.22);

          方法

             add();

             substract();

             multiply();

             divide();

             pow();

             XxxValue();

        ⑩①正则表达式

            Pattern p = new Pattern("\w*");

            Matcher m = p.matcher("abc123456");

          ⑩② NumberFormat

          SimpleDataFormat

      

  • 相关阅读:
    SpringCloud学习第四章-Eureka创建
    SpringCloud学习第三章-springcloud 父项目创建
    Semaphore的简介及应用场景
    红帽学习笔记[RHCSA] 第十课[计划任务Cron与At、逻辑卷管理]
    红帽学习笔记[RHCSA] 第九课[文件归档、硬盘、分区以及自动挂载、Swap、链接]
    红帽学习笔记[RHCSA] 第八课[Nice值、时间同步、RPM与Yum软件安装]
    红帽学习笔记[RHCSA] 第七课[网络配置相关]
    红帽学习笔记[RHCSA] 第六课[进程、服务相关]
    红帽学习笔记[RHCSA] 第五课[用户、权限相关]
    红帽学习笔记[RHCSA] 第四课[用户相关、破解root密码]
  • 原文地址:https://www.cnblogs.com/liuniansishui/p/8678971.html
Copyright © 2020-2023  润新知