
Java基础
文章平均质量分 95
韭菜鲜肉大馄饨
除了死亡所有的离开都是背叛...
展开
-
switch-case 无 break 如何打印
switch-case 无 break 如何打印一、switch-case 无 break 时打印二、switch-case 有 break 时打印一、switch-case 无 break 时打印public class Test { public static void main(String[] args) { int a = 1; switch (a) { case 1...原创 2020-03-16 23:07:20 · 460 阅读 · 0 评论 -
String 和它的 intern()
String 和它的 intern先做道题一、String 字符串编译期常量池字符串常量池intern() 方法(JDK 1.8)字符串分析(JDK 1.8)先用双引号创建字符串,再用一个 new 创建字符串JVM 启动过程中加入常量池的字符串先用一个 new 创建字符串先用两个 new 创建字符串总结先做道题Q1:定义了几个对象?public class Q1 { public s...原创 2020-02-10 00:00:35 · 308 阅读 · 0 评论 -
08 匿名内部类与 lambda —— lambda 表达式背后的字节码原理
08 匿名内部类与 lambda —— lambda 表达式背后的字节码原理问:lambda 表达式是匿名内部类的语法糖吗一、测试匿名内部类二、测试 lambda 表达式核心的 metafactory 定义核心的 metafactory() 函数小结思考题回答问:lambda 表达式是匿名内部类的语法糖吗答案在末尾一、测试匿名内部类public class Test { publi...原创 2019-11-05 05:52:30 · 1600 阅读 · 1 评论 -
第四周总结
第四周学习总结时间:2019 年 01 月 21 日 ~ 2019 年 01 月 25 日一、普通 Thread 和 HandlerThread 有什么区别Thread:程序执行运算的最小单位,操作系统调度的基本单位HandlerThread:继承了 Thread,本质上就是一个 Thread,但其内部包含了 Handler,因此可以在 Thread 启动后,使用 Handler 进行...原创 2019-01-26 22:30:29 · 186 阅读 · 0 评论 -
第五周总结
时间:2019 年 01 月 28 日 ~ 2019 年 02 月 01 日第五周总结一、LayoutInflater 三参方法含义及工作流程二、进程和线程、创建线程方式、线程生命周期3.1 进程和线程3.2 线程的创建有三种方式3.3 线程生命周期三、ScrollView 包裹 ListView 只显示一行的原因及解决方法一、LayoutInflater 三参方法含义及工作流程1.三参...原创 2019-02-02 11:10:58 · 355 阅读 · 0 评论 -
Exception 和 Error 有什么区别
一、对比 Exception 和 Error① Exception 和 Error 都继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或捕获(catch)② Error 是指在正常情况下,不大可能出现的情况,大部分 Error 都会导致程序处于非正常、不可恢复状态,所以对于 Error 即便捕获了很可能也无法处理或恢复,因此也就没必...原创 2019-02-23 15:18:21 · 195 阅读 · 0 评论 -
第十周总结
时间:2019 年 03 月 04 日 ~ 2019 年 03 月 10 日第十周总结一、C 中的常量、常量指针、指针常量二、为什么匿名内部类使用的外部类变量的前面要加 final三、try 或 catch 中 return 值,在 finally 中修改值,最终值的结果是什么四、Binder...一、C 中的常量、常量指针、指针常量常量:不能修改const int num = 100...原创 2019-03-10 23:56:41 · 122 阅读 · 0 评论 -
用 HSDB 来探究多态实现的原理
用 HSDB 来探究多态实现的原理一、启动 HSDB二、关联 JVM 进程多态栗子做个实验三、结论:方法继承的细节以及多态的原理四、趁热打铁,你有这个时间是不是能做两道题?HSDB 全称:Hostspot Debugger,是 JVM 内置的工具,用于深入分析 JVM 运行时的内部状态,工具在 JDK 安装目录下 lib/sa-jdi.jar一、启动 HSDBjava -cp sa-jdi....原创 2019-06-09 22:17:49 · 1242 阅读 · 3 评论 -
字节码角度分析面试题 —— i++、++i 傻傻分不清楚
字节码角度分析面试题 —— i++、++i 傻傻分不清楚一、什么都憋说,先看题二、i++二、++i三、看一道 xue 微难一点的题目四、小结五、最后一题六、回答一、什么都憋说,先看题public class Test { public static void foo() { int i = 0; for (int j = 0; j < 50; j+...原创 2019-06-16 20:31:12 · 356 阅读 · 0 评论 -
字节码角度看面试题 —— try catch finally 为啥 finally 语句一定会执行
字节码角度看面试题 —— try catch finally 为啥 finally 语句一定会执行一、try catch 字节码分析1.1 一个 catch1.2 多个 catch二、finally 字节码分析三、小结四、留道题一、try catch 字节码分析1.1 一个 catchpublic class Test { public void foo() { tr...原创 2019-06-24 23:11:16 · 2092 阅读 · 1 评论 -
01 字节码初体验 —— 从 Hello World 说起
Hello.javapublic class Hello { public static void main(String[] args) { System.out.println("Hello, World"); }}javac把源文件编译成 JVM 可识别的 class 文件javac Hello.javaxxd 查看 class 文件xx...原创 2019-09-30 23:48:21 · 343 阅读 · 0 评论 -
02 字节码原理初步 —— 基于栈的执行引擎
02 字节码原理初步 —— 基于栈的执行引擎一、栈、寄存器二、栈帧(Stack Frame)三、举个 xue 微复杂的栗子未完待续一、栈、寄存器基于栈的指令集移植性更好,代码更紧凑、编译器实现更简单基于寄存器的指令集完成相同功能所需的指令数更少,执行速度更快一些二、栈帧(Stack Frame)栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构栈帧随着方法调用而创建,随着方法结束而...原创 2019-09-30 23:56:54 · 176 阅读 · 0 评论 -
第二周总结
第二周学习总结时间:2019 年 01 月 07 日 ~ 2019 年 01 月 11 日一、DCL 失效class Tt { private static Tt instance; private Tt() {} public static Tt getInstance() { if (null == instance) {...原创 2019-01-12 20:12:08 · 173 阅读 · 0 评论 -
第一周总结
第一周学习总结时间:2019 年 01 月 02 日 ~ 2019 年 01 月 04 日一、Linux 网络 I/O 模型Linux 内核将所有外部设备作为一个文件进行处理,对每个文件的读写操作都会调用内核提供的系统命令,返回一个文件描述符 fd(file descriptor),对一个 socket 的读写也有相应的描述符,称为 socket fd,描述符是一个数字,指向内核中的一个...原创 2019-01-05 19:57:04 · 308 阅读 · 0 评论 -
JVM 运行原理——基础
一、并发编程模型的分类关键:a. 线程之间的通信以何种机制来交换信息,在命令式编程中,线程之间的通信方式有两种:共享内存和消息传递。共享内存并发模型里,线程之间共享程序的公共状态。线程之间通过写-读内存中的公共状态来隐式进行通信消息传递并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信b. 线程之间的同步用于控制不同线程之间操作发生相对顺序的机制共...原创 2018-12-31 21:47:26 · 233 阅读 · 0 评论 -
简述类加载机制
一、什么是类加载机制虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制...原创 2018-07-11 20:28:05 · 4746 阅读 · 0 评论 -
i++ 和 ++i 的区别
一、问题一:执行如下代码,将会输出什么?public class A { public static void main(String[] args) { int i = 0; i = i++; System.out.println(i); int k = 0; k = ++k; Sys...原创 2018-08-15 20:48:30 · 1753 阅读 · 0 评论 -
交换两个 Integer
题目:public static void main(String[] args) { Integer a = 1; Integer b = 2; System.out.println(&amp;amp;amp;amp;amp;amp;amp;quot;before swap: a=&amp;amp;amp;amp;amp;amp;amp;quot; + a + &amp;amp;amp;amp;amp;amp;amp;quot;,原创 2018-09-16 00:48:01 · 419 阅读 · 0 评论 -
代理模式(Proxy Pattern)__动态代理
一、为什么需要动态代理为了解决静态代理一次只能服务一种类型的目标对象的问题二、使用案例测试类:public class DinnerTest { public static void main(String[] args) { //创建真实目标对象 DinnerConsumer dinnerProvider = new DinnerCons...原创 2018-06-30 23:08:34 · 132 阅读 · 0 评论 -
动态代理总结
一、代理模式1.1 什么是代理模式为其他对象提供一种代理,以控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到到中介的作用1.2 动态代理的优缺点优点: a. 职责清晰,只关心实际的业务逻辑,不用关心其他 b. 代理对象在在客户端和目标对象之间祈祷中介作用,保护目标对象 c. 高扩展性...原创 2018-08-04 17:37:45 · 366 阅读 · 0 评论 -
Android 第二十四周
一、设计模式的理解1.1 单一职责原则英文全称是 Single Responsibility Principle,缩写是 SRP 定义:就一个类而言,应该仅有一个引起它变化的原因解决了:类严重耦合,没有扩展性,不够灵活关键词:职责单一指导原则: 两个完全不同的功能不应该放在一个类中 一个类中应该是一组相关性很高的函数、数据的封装 1.2 开闭原则...原创 2018-07-03 00:39:48 · 261 阅读 · 0 评论 -
Android 第一周
课前作业:1. 问题一:当前有一个类 Apublic class A { public synchronized void a() { } public synchronized void b() { }}然后创建两个对象:A a1 = new A();A a2 = new A();然后在两个线程中并发访问如下代码:...原创 2018-04-30 23:58:45 · 131 阅读 · 0 评论 -
面试题-01
一、Java 部分1.如何理解 Java 的多态?其中,重载和重写有什么区别?多态:父类对象的引用指向子类对象引用指向的对象和应用调用的方法在编译期不能确定,在运行期确定除非静态方法外,父类对象的引用访问的都是父类的属性和静态方法父类对象的引用要访问子类的属性和方法,需要向下转型重载:方法参数列表不同方法返回值可以不同(表明不同通过返回值进行方法重载)方法访问修饰符可以不...原创 2018-10-31 22:21:48 · 119 阅读 · 0 评论 -
解析 Java 类加载机制
先来一道面试题class Grandpa { static { System.out.println(&amp;amp;quot;爷爷在静态代码块&amp;amp;quot;); }}class Father extends Grandpa { static { System.out.println(&amp;amp;quot;爸爸在静态代码块&amp;amp;quot;);原创 2018-12-02 22:28:35 · 170 阅读 · 0 评论 -
AOP 入门
一、AOP二、HelloWorld1. 添加 gradle 依赖(module 对应的 build.gradle)implementation 'org.aspectj:aspectjrt:1.9.2'2. 修改 gradle 配置(app 对应的 build.gradle)buildscript { dependencies { classpath ...原创 2018-11-30 23:15:17 · 129 阅读 · 0 评论 -
心中有树
二叉查找树(BST):(二叉搜索树、二叉排序树)左子树上所有的节点的值均小于或等于它的根节点的值右子树上所有的节点的值均大于或等于它的根节点的值左、右子树也分别为二叉排序树优点:查找某个数所需的最大次数等于二叉查找树的高度缺点:多次插入数据后可能导致二叉查找树不平衡,最差情况几乎变成线性结构(此时查找性能大打折扣)红黑树(Red Black Tree)一种自平衡的二叉查找树,除了...原创 2018-12-31 18:43:06 · 272 阅读 · 1 评论 -
两个数值相等的 Integer 不一定相等
问题:a 和 b 相等吗?Integer a = 128;Integer b = 128;System.out.println(&amp;amp;amp;amp;amp;quot;a==b -&amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;quot; + (a == b));答案:a 和 b 不相等 准确来说大小关系不确定,与 VM 的配置(sun.misc.VM)有关正式开原创 2018-06-02 12:56:30 · 575 阅读 · 0 评论