java基础知识梳理

java基础知识梳理

    • 数据类型
        • 8种基本数据类型
        • 装箱拆箱和缓存池技术
    • String对象
    • 传递规则
    • 面向对象支持
        • 关键字
        • 抽象类与接口
        • 重写与重载
        • Object类
    • 反射
        • class对象
        • 反射机制
        • 优点
        • 缺点
    • 异常机制
    • 注解

数据类型

8种基本数据类型

  • 整型:byte(8) short(16) int(32)long(64)
  • 浮点型:float(32)double(64)
  • 字符型:char(16)
  • 布尔型: boolean(1)

装箱拆箱和缓存池技术

  • 装箱:将基本数据类型变为包装数据类型,例如Integer i= 1,除此之外还可以使用Integer.valueOf()函数进行装箱
  • 拆箱:将包装数据类型转换为基本数据类型,例如int 1 = i +1,虚拟机自动使用intValueOf()函数进行拆箱
  • 缓存池:对于整型和字浮型数据,虚拟机会在堆(1.7)中创建一个含有[-128,127]范围内对象的的Integer对象池,当使用valueOf()时,虚拟机会在对象池中搜索对应的对象并返回它的引用,因此在使用valueOf()创建整型对象时可能会返回同一个对象。但是虚拟机不会创建浮点数的对象池。

String对象

String对象是不可变的,在String内部是用一个由final修饰的char数组实现的,直接使用双引号声明出来的String对象会直接存储在常量池中。如果是使用new String()生命的对象可以使用intern()方法主动将字符串放到常量池

为什么要这样设计?
1.这样字符类型就可以作为hashMap的key
2.可以提升使用String的效率
3.可以保证线程安全

传递规则

在函数的参数列表中采用的是值传递而不是引用传递,即传递的是指针的copy

面向对象支持

关键字

  • private 使用private关键字声明的方法或参数只能在当前类访问
  • protect 使用protect关键字声明的方法或者参数只能由其子类或者当前类访问
  • public 使用public关键字声明的方法或者参数能被所有地方访问

抽象类与接口

抽象类:方法可以不必全部实现,只能继承一个
接口:方法必须全部实现(1.7支持有默认实现),能继承多个

重写与重载

重写:重写父类的方法
重载:和当前方法名字相同但是参数列表不相同

Object类

  • hashcode 获得当前类的hash值,默认实现是返回当前对象的地址
  • equals 判断两个实例是否相等,如果要将实例放在hash表结构中,则需要同时重写hashcode方法,具有equals相同,hashcode的值也相同
  • clone 复制当前对象,被protect修饰,不能直接调用必须先继承类并重写这个方法,而且要实现cloneable接口不然会抛出异常
  • toString 默认是打印出类的标识符,格式是:类名@hashcode
  • getClass 返回当前对象对应的类的信息
  • notify 随机唤醒在相应等待队列的一个线程
  • notifyAll 唤醒在相应等待队列的所有线程并让他们竞争资源
  • wait 时当前线程等待

反射

class对象

java基础知识梳理_第1张图片
图中可以得出以下几点:

  • Class 类的实例对象表示正在运行的 Java 应用程序中的类和接口。也就是jvm中有很多的实例,每个类都有唯一的Class对象。
  • Class 类没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机自动构造的。也就是说我们不需要创建,JVM已经帮我们创建了。
  • Class 对象用于提供类本身的信息,比如有几种构造方法, 有多少属性,有哪些普通方法

反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射可以根据类的信息在运行时动态的加载类。Classjava.lang.reflect一起对反射提供了支持。reflect类库主要包含了以下三个类:

  • Field:可以使用get和set方法读取和修改Field对象相关字段
  • Methed:可以使用invoke方法调用与Method对象关联的方法
  • Constructor:可以使用它创建新的对象

反射的使用:https://blog.csdn.net/lililuni/article/details/83449088

优点

  • 可拓展性:通过全限定名加载对象,可以加载来自外部的用户自定义类
  • 可以可视化开发环境:IDE可以通过反射机制获取类之间的结构
  • 方便调色与测试

缺点

  • 性能开销较大,JVM无法对反射类进行优化
  • 安全性不行
  • 会导致内部方法被暴露

异常机制

java异常指在程序运行时可能出现的一些错误,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,中断了正在执行的程序的正常指令流。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常
原文:https://blog.csdn.net/qq_15349687/article/details/82811581
java基础知识梳理_第2张图片

  • try-catch-finally 对于try-catch-finally语句:先执行try 块中的代码,如果正常运行没有发生异常则执行完后执行finally 代码块中的代码;如若在try 中发生异常且被catch 捕捉到则执行catch 中的代码块,然后执行finally 块中的代码;

注解

注解时附加在代码中的一些元信息,用于一些工具编译、运行时进行解析和使用,起到配置说名的功能。

你可能感兴趣的:(基础知识)