java基础
wmtmw
之前的博客:https://wmtmw.github.io/
展开
-
泛型(代码示例待补充)
基本概念 泛型的本质是个参数化的类型,将参数的类型作为一个参数,在运行时决定(?)。 在没有泛型之前,容器返回的类型都是Object类型,因此根据实际情况,降返回值强转为期望的类型。引入泛型之后,容器中的存储类型在声明时就可以确定,因此对容器的操作不需要进行类型转换。 使用泛型一方面可以增加代码的可读性,降低程序出错的可能性,也提高了程序的运行效率。 ArrayList list = new ArrayList(); list.add('a'); Integer object = (Integer)list原创 2020-09-01 17:46:03 · 147 阅读 · 0 评论 -
基本数据类型与其包装类的区别
以int 和Integer为例 int 为基本数据类型,直接存数值 Integer为引用数据类型(当作一个类看) int a; //默认初始化为0 Integer b; //默认初始化为null 初始化: int a = 1; Integer b = new Integer(1); 由于有了自动装箱和拆箱,也可以写: //装箱 Integer b = 1; //拆箱 int num = b; 泛型定义时不支持int。 List list = new ArrayList<>(); √ Li原创 2020-09-01 17:22:24 · 75 阅读 · 0 评论 -
static关键字
可以修饰变量,方法,代码块,内部类,导入包。 随着类的加载而加载,静态变量、静态方法是与类关联,可以通过类直接调用类的静态变量和静态方法,不需要创建对象。 在类加载的准备阶段,为静态变量分配内存并且设置初始值(此时是默认初始值,0,null之类的)。分配的这部分内存不会随着创建对象个数的增加而改变。概念上,静态变量所使用的内存都应该在方法区中进行分配,JDK8之后类变量和Class变量一起存放在JAVA堆区。 在类加载的初始化阶段,初始化静态变量的值。 静态变量的初始化可以在声明处进行初始化,也可以在静态代原创 2020-06-15 22:14:34 · 60 阅读 · 0 评论 -
final关键字
final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可被继承 final属性不可变 指引用不可变,只能指向初始化时指向的对象。因此被final修饰的变量必须被初始化。 初始化: 定义时初始化 final成员变量可以在初始化块中初始化,但不可以在静态初始化块中初始化 静态final成员变量可以在静态初始化块中初始化 在类的构造器中初始化,但静态final成员变量不可以在构造方法中初始化。 final方法 当一个方法被声明为final时,该方法不允许任何子类重写该方法,但子类可以原创 2020-06-15 22:03:56 · 218 阅读 · 0 评论 -
java内部类
内部类:定义在另一个类中的类 内部类可以访问所在外部类的数据 外部类不可以被protected,private修饰,但内部类可以,这样可以实现对外隐藏 java类是单继承的,使用内部类可以实现多继承,每个内部类可以继承一个类,多个内部类就有多继承 内部类的分类 静态内部类和非静态内部类 区别: 静态内部类可以有静态成员,非静态内部类不能有静态成员。 静态内部类可以访问外部类的静态变量,不可以访问外部类的非静态变量(这个很容易理解,静态变量加载的时间早于非静态变量) 静态内部类的创建不依赖于外部类,而转载 2020-06-15 21:52:03 · 61 阅读 · 0 评论 -
java作用域
成员变量(方法)的四种作用域 public 对其他所有类都可见 protected 用于继承关系,其子类及子类的子类可见,同一包下的其他类可见 private 私有的,只有当前类具有对该成员变量或方法的访问权限 default 可以被同一包下的类访问 ...原创 2020-06-15 21:02:50 · 84 阅读 · 0 评论 -
synchronized
synchronized(this|object)以及synchronized修饰非静态方法是对象锁 synchronized(类.class)以及修饰静态方法是类锁。 同一个类的不同对象的对象锁不是一把锁 同一个类的同一对象的对象锁,同一个类的同一对象的类锁以及同一个类的不同对象的类锁,分别是同一把锁。 类锁和对象锁是独立的,互不干扰。 判断方法间是否是同步的,关键是判断获取的是否是同一把锁!原创 2020-05-19 17:51:54 · 132 阅读 · 0 评论 -
Java内存模型和volatile
硬件效率与一致性 CPU执行计算任务,需要从内存中读取和写入数据,但计算机存储设备和CPU的运算速度有几个数量级的差距。 在内存和CPU之间增加一层或多层高速缓存作为CPU和内存之间的缓冲(高速缓存的读写速度接近处理器)。 在多核处理器系统中,多个处理器任务都涉及同一块主内存区域时,可能会发生各缓存不一致的现象。 引入缓存一致性协议:MSE、MESI、MOSI等。 为了使处理器内部运算单元被充分利用,处理器可能会对输入代码进行乱序执行优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果原创 2020-05-19 11:48:50 · 87 阅读 · 0 评论