Java基础
文章平均质量分 89
xiaoru5127
这个作者很懒,什么都没留下…
展开
-
Java语法-反射、注解(及APT)、泛型、动态代理
反射获取Class//法一,对象.getClass,不适用于int等基础类型Class clazz = new Person().getClass//法二,.ClassClass clazz = Person.Class//法三,包名try { Class clazz = Class.forName("com.android.test.Person");} catc...原创 2018-07-24 18:08:19 · 1880 阅读 · 0 评论 -
Java虚拟机--类加载机制
类文件结构Class文件是一组以8位字节为基础的二进制流,中间没有添加任何分隔符。Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种结构只有两种数据类型:无符号数和表。 无符号数属于基本的数据类型,以u1、u2、u4、u8来分别代表1个字节、2个字节、4个字节、8个字节的无符号数,无符号数可以描述数字、索引引用、数量值或者按照utf-8编码构成的字符串值。 整个Class文件本原创 2017-08-13 23:28:20 · 279 阅读 · 0 评论 -
Java虚拟机--自动内存管理机制
Java虚拟机内存分布虚拟机栈:Java方法的内存模型,即每个方法的执行都会创建一个虚拟机栈帧,方法的执行过程就是栈帧的入栈出栈,每个栈帧用于存储局部变量表、操作数栈、动态链接、方法返回地址和一些额外的附加信息(运行期会有JIT优化,但我们理论上认为这部分所需内存编译期可知);线程独立;StackOverflowError和OutOfMemoryError 局部变量表:存储编译期可知的...原创 2017-08-13 00:23:54 · 259 阅读 · 0 评论 -
Java高并发:多线程概览
多线程概览线程的状态流转图 小记:java线程的优先级范围:0~10,值越大优先级越高,默认5可运行状态的线程还需要获得CPU的时间片后才能运行ThreadLocal:每个线程有一个localValue存储ThreadLocal=>Object键值对,ThreadLocal.put数据的时候把自身作为key与value保存到localValue,get的时候在从local...原创 2017-08-02 14:45:27 · 223 阅读 · 0 评论 -
Java常见算法概览
概述java集合框架大致可以分为以下几个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections;Arrays和Collections是用来操作数组、集合的两个工具类)。 基本组成数组链表:单向链表,双向链表,循环单向链表,循环双向链表 class Entry<E> { Entr原创 2017-07-24 17:54:03 · 308 阅读 · 0 评论 -
Java虚拟机--Java内存模型与线程
并发编程模型线程之间的通信机制有两种:共享内存和消息传递消息传递的并发模型(同步隐式进行) eg:主内存中有变量x=0;线程A和线程B都会对它进行自增操作。线程A先对x做自增操作,此时线程A会将主内存中的x=0复制一份到本地内存并进行自增x=1。当线程A与线程B通信的时候,线程A会首先把本地内存中的x刷新到主内存中,完成隐式同步。共享内存的并发模型(同步显式进行,程序员需显式指定代码原创 2018-07-19 09:58:51 · 180 阅读 · 0 评论 -
Java虚拟机--编译期/运行期优化与高效并发
测试原创 2018-07-19 09:59:35 · 134 阅读 · 0 评论 -
Java基本类型和数据结构
基本类型精度丢失和溢出: 精度丢失一般发生在浮点型存储数值或类型强制转换的时候。我们知道计算机存储数值实际存储的是二进制,举个粟子double r1 = 1 - 0.99;double r2 = 2 - 0.99 result的值是0.010000000000000009,r2的值为1.01,因为0.99转换成二进制的时候就已经精度丢失了。小数二进制和十进制的转换方法,类似...原创 2018-07-20 13:52:09 · 8983 阅读 · 1 评论