java基础知识索引

  • 一些关于java的题目
  • 面向对象
  • java内存
    • 常量池
    • 分析内存的工具
  • java基本数据类型
  • java 数组
  • java 字符串
    • String
  • java 集合
    • List
    • LinkedList
    • Map
    • 排序
  • java 并发
  • java 并发容器
  • java异常
  • java IO
    • 底层
    • 传统IO
    • NIO
  • 反射

java学习路线

一些关于java的题目

根据这些题目可以查漏补缺。
【面试题】Java开发岗位面试题归类
你应该知道的JAVA面试题

面向对象

(豁然开朗)《面向对象分析与设计》读书笔记
PS:每个对象都可以看做一个独立的有限状态自动机

【知乎】用一句话说明面向对象思想?

【知乎】对于卡内基梅隆大学计算机系删除基础课程中的面向对象编程课程,如何理解他们提到的「面向对象编程既是反模块化的又是反并行的」?
PS: 有答案从图灵机角度解释了并行

java内存

介绍Java中的内存泄漏

  • 内存角度 + 对象生命周期
  • Java 的 String类的substring()方法。

常量池

Java常量池的大概理解
Java常量池的面试题 (Integer缓存数值【-128-127】)

分析内存的工具

jprofiler
jconsole
jmap
jstat

java内存泄漏的定位与分析

java基本数据类型

[java中基本类型占用字节数](1字节 = 8 bits)(http://blog.csdn.net/witsmakemen/article/details/8974200/)
整型
Int: 4 字节
Short: 2字节
Long: 8字节 ( 长整型 )
Byte: 1字节

浮点型
Float: 4字节
Double: 8字节

字符型
char: 2字节

boolean型
boolean:1字节

java 数组

【数组复制】java语言复制数组的四种方法

java 字符串

探秘Java中的String、StringBuilder以及StringBuffer

  • final 关键字
  • String 不变
  • StringBuffer = StringBuilder + synchronized

String

Java-String类的常用方法总结

String类为什么是final的

定性(java中将String定为基本类型,与下面安全结合)
安全(不可变意味着并发时是安全的)
效率(无多态,不用查虚函数表)

【知乎】在java中String类为什么要设计成final?

java 集合

java集合框架:(图片来源)
java基础知识索引_第1张图片

List

LinkedList

Java集合—LinkedList源码解析

接口继承
双向循环链表

Map

Java集合—HashMap源码剖析
java源码分析之HashMap(评论区解释了为何 hash位置分配采取按位与的问题(为何与 lengh -1 相与))

排序

【Java学习笔记】<集合框架>对字符串进行长度排序
java Collections.sort()实现List排序的默认方法和自定义方法

java 并发

详细分析Java中断机制
Java线程之 InterruptedException 异常
线程池怎么做到线程重用?

java 并发容器

Java集合—ConcurrentHashMap原理分析
【方腾飞】聊聊并发(四)——深入分析ConcurrentHashMap
Java线程(七):Callable和Future

java异常

【较为简洁】Java异常分类

java IO

【知乎】 java中的io 流到底怎么理解?

底层

java基础知识索引_第2张图片

  • JVM是在用户空间的,所以其IO需要经过内核去访问物理资源。
  • 一个java程序打开IO,实际上通知内核去进行相应的IO设备传输,也就是说在IO读取的状态在内核中保存着,这就造成了一个问题。如果在程序中你不去关闭IO,那么内核中IO的状态始终是记录打开的状态(可能会有一定的自检机制),这就造成了给人一种资源被占用的假象。这也说明了,为何我们在java操作IO,操作数据库的时候需要控制关闭(因为java无法自动整理内核层面的东西)。(参考:《深入理解计算机系统》)

Java I/O底层是如何工作的?(参照:《深入理解linux内核》)
IO 的底层实现问题

传统IO

Java RandomAccessFile用法

  • 写入基本类型 & 读出基本类型】(在java中不同的数据类型占用不同数量的字节,所以将基本类型放入文件中时,形成不同的解析单元,比如说char可能占用了2位,而int占用了4位,因为单位不同,所以解析时需要人为干预)
  • 写入同一种基本类型】假如在写入文件的时候,都是字符串类型,并且指定了编码方式(如UTF-8),那么解析的时候,便可以按照规则(UTF-8的编码规则)进行解析(规律太明显,可批量解析)。
  • java基本类型字节数】JAVA基本数据类型所占字节数是多少?(32位系统)
  • 多线程写文件

NIO

攻破JAVA NIO技术壁垒

  • Buffer
  • Channel
  • Selector

反射

【知乎】学习java应该如何理解反射?
PS:结合JVM对反射进行深入的讨论

你可能感兴趣的:(java,--,基础)