java
柳白之道
专注于Android技术开发,深入源代码解析
展开
-
ArrayList面试八问,你都会了吗
背景:我们经常会在网上看到一些面试题,比如HashMap数据结构、Handler实现原理、binder进程通信等等。但是很多文章都是深入分析,缺少对每个环节问题点提问,比如这块为什么要这么设计。面试官也不会问完一个问题就结束,也会逮着追问,直到问到你不会。特别是大厂都喜欢一步步深入提问,来考察你对知识点掌握的深度。本文计划从ArrayList切入,尽可能覆盖面试过程中涉及ArrayList的所有问题点。问题和解答尽量精简易懂,每个人视角不一样,如果大家有遇到文章中没有提到的问题点,可以留言或私信指出。原创 2022-04-16 09:00:00 · 929 阅读 · 3 评论 -
阿里巴巴Java开发手册要点备注
1. 【强制】POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型Boolean isDeleted;的属性,它的方法也是isDeleted(),RPC框架在反向解析的时候,“以为”对应的属性名称是deleted,导致属性获取不到,进而抛出异常。2. 【强制】long或者Long初始赋值时,使用大写的L,不能是小写的l,小写容易跟数字1混原创 2017-10-09 18:43:46 · 409 阅读 · 0 评论 -
Java的内存泄漏和垃圾回收机制
JAVA会产生内存泄露吗?首先,答案是肯定的。Java虽然有垃圾回收器,但依然存在泄漏。Java内存泄漏跟C/C++内存泄漏的概念不一样:C/C++的内存泄漏是指Malloc了一些资源,最后没有free掉,内存没有回收,这个是真正意义上的内存黑洞;而Java的泄漏指,Java对象的存在对程序已经没有意义,但是对象在程序周期内一直存在,这个可能会导致Java的内存泄漏。总结原因,大概原创 2014-10-21 19:27:04 · 743 阅读 · 0 评论 -
抽象类中的属性初始化方式
抽象类中的属性初始化方式一、声明同时直接初始化int c=5;二、在构造函数中初始化Test(){c=5}注:其他方式会导致程序编译错误,如:Syntax error on token "c", VariableDeclaratorId expected after this token原创 2014-10-18 15:05:24 · 3723 阅读 · 2 评论 -
堆和栈的区别以及衍生出来的栈的效率为什么比堆高
栈与堆都是Java用来在Ram中存放数据的地方。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)。 存在栈中的数据可以共享。栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。堆是一个运行时数据区,类的(对象从原创 2014-10-18 20:27:23 · 1235 阅读 · 0 评论 -
ClassLoader—观察程序运行时类加载的过程-verbose:class
在空白处右键选择Run Configurations在虚拟机参数中输入“-verbose:class”-verbose:gc查看虚拟机中内存回收情况-verbose:jni查看本地方法调用的情况原创 2014-09-28 15:40:23 · 7379 阅读 · 0 评论 -
JAVA中的Random()函数解析
在软件开发中有时会遇到使用随机数的情况(部分验证码就是采用random生成的随机数)。之前只知道怎么使用,一直没想过random的原理。前几天就记着去网上查一下这个问题,今天正好有时间,就从网上查阅了一些资料。Java中包含两类Random,一种是java.util.Random中的,采用的是伪随机(有规则的随机),相同种子数的Random对象,相同次数生成的随机数字是完全相同的。此R原创 2014-09-25 14:48:02 · 819 阅读 · 0 评论 -
初识Java反射机制
JAVA中,一切皆是对象Java反射机制就是在程序运行中,可以获得任意一个类的属性和方法。对 Class.forName("com.mysql.jdbc.Driver.class"),相信大家都不会陌生,直到学习Java反射机制,才恍然大悟,原来数据库连接中用到的这句活原来就是Java反射机制。获取Class对象有三种方式:一、Class c=Class.forName原创 2014-09-27 15:29:38 · 871 阅读 · 0 评论 -
HashMap和Hashtable的区别
1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。2.hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。3.hashMap允许空键值,而hashTable不允许。原创 2014-09-16 11:47:45 · 779 阅读 · 0 评论