java
文章平均质量分 77
na_tion
601194865@qq.com
展开
-
java基础--06--Unsafe类
Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存。Java中的Unsafe类为我们提供了类似C++手动管理内存的能力。 Unsafe类,全限定名是sun.misc.Unsafe,从名字中我们可以看出来这个类对普通程序员来说是“危险”的,一般应用开发者不会用到这个类。 一、unsafe的主要功能 二、Unsafe常用功能 (1)CAS (2)线程通信park/unpark (3)内存屏障 详细参考:Java中的Uns原创 2021-09-13 14:27:36 · 150 阅读 · 0 评论 -
java基础--05--反射
一、反射简介 一个类的字节码文件通过类加载器加载到jvm的堆中最终会生成一个该类的Class对象【注意:同一个类加载器+同一个class文件,只有一个Class对象(类的命名空间)】,而且通过该类的所有实例对象都可以得到这个Class对象,反过来说通过Class对象我们也可以实例化对象。通过Class对象实例化对象就是所谓的反射。 二、反射的基本使用 我们既然得到了一个类的Class对象,这个Class对象中肯定包含了该类的属性和方法的所有信息,换句话说就是可以调用里面的各种方法(公共方法和私有方原创 2021-04-19 16:39:24 · 97 阅读 · 0 评论 -
java基础--04--集合框架--01--总述
一、集合引入 数组、集合都用于对多个对象进行存储,数组特点及缺点如下1.1、1.2,故引入集合 1.1 数组特点 长度确定 类型确定 有序、可重复 1.2 数组缺点 长度不可修改 删除、插入等操作效率不高 无序、不重复的无法满足 数组与集合的区别如下: 数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据。 数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象(基本数据类型存在集合中须转为包装类)。 二、集合框架 Ja原创 2021-04-11 19:46:22 · 88 阅读 · 0 评论 -
Java基础--02--面向对象
一、面向对象三大特征--封装、继承、多态 封装 继承 多态 what 该隐藏的隐藏,该暴露的暴露 继承父类的属性、方法 一个行为多个表现形式 why 高内聚,低耦合 避免代码重复,提高程序可维护性 消除耦合 how private 单继承 方法重写 protected 多重继承 接口 public 被多个子类继承 抽象类 缺省 继承常用于模板,接口常用于规.原创 2021-04-11 17:31:59 · 120 阅读 · 0 评论 -
Java基础--03--String
一、String底层结构 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { private final char value[]; ... JDK8及之前,String类的当前实现是将字符存储在char数组中,每个字符使用两个字节(16位)。 实践发现,字符串是堆的主要组成部分(占比25%)+大多数字符串对象只包含拉原创 2021-03-27 20:27:57 · 227 阅读 · 0 评论 -
java8新特性学习笔记2--函数式接口
二、函数式接口 2.1 概念 (1)一个函数式接口有且只有一个抽象方法; (2)默认方法不是抽象方法,因为它们已经实现了; (3)重写了超类Object类中任意一个public方法的方法并不算接口中的抽象方法; (4)不写@FunctionalInterface注解,且满足如上3个条件的接口,也是函数式接口,注解只是告诉编译器进行检查。 2.2 函数式接口例子 public interface Comparable<T> { public int compareTo(T o原创 2020-12-14 19:08:02 · 96 阅读 · 0 评论 -
java8新特性学习笔记1--lambda表达式
一、lambda表达式 1.1 形式 (Integer a1, Integera2)->{Integer.compare(a1,a2)} (Integer a1, Integera2):lambda形参列表 ,相当于接口中抽象方法形参列表 -> : lambda操作符 {Integer.compare(a1,a2)}:lambda方法体,相当于接口中抽象方法的实现方法体 labmda表达式本质:接口的匿名实现类 labmda表达式目的:简化代码 1.2 lambda形参原创 2020-12-14 18:22:14 · 119 阅读 · 0 评论 -
java基础--04--集合框架--03--HashMap--put
(1)key对应的类须重写hashCode()与equals()方法,否则key中值相同时,仍会添加(key重复) package com.fupng3.collectionpack; public class Person { String name; int age; public Person() { } public Person(String name, int age) { this.name = name; th原创 2020-12-10 01:52:12 · 180 阅读 · 0 评论 -
java基础--04--集合框架--02--HashMap初始化/定位桶位置/扩容源码分析--jdk1.8
一、初始化 1.1 默认初始化 //默认初始化仅指定加载因子,首次put元素时,会使用resize()开辟16(2的4次幂)个长度的空间 public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted } 1.2 指定容量初始化 public HashMap(int initialCapacity) { this(init原创 2020-12-09 15:06:55 · 512 阅读 · 0 评论 -
Java基础--01--数据类型/方法/数组
一、Java基本数据类型 1.1一般的整型变量默认为int,所以long型需要加L或l;一般的浮点型变量默认为double,所以float型需要加F或f; 1.2 自动类型转换 (a)byte->short->int->long->float->double可自动类型转换;反方向须强制类型转换 1.3 char型2个字节长度,为什么可以表示汉字? char型只能表示unicode编码范围在\u0000至\uffff之间的汉字,超过2个字节的无法表示,如“????”原创 2020-12-01 22:07:03 · 242 阅读 · 0 评论