随笔分类 - Java基础
千里之行,始于足下
摘要:内存区域划分 1.程序计数器:当前线程的正在执行的字节码指示器 2.虚拟机栈和本地方法栈:虚拟机栈存储局部变量表(包括方法入参和布局变量)、操作数栈、方法返回地址(调用者的栈帧,包括return返回和异常返回)等 3.堆:为几乎所有对象实例分配内存的区域 4.方法区:用于存储已被虚拟机加载的类信息、
阅读全文
摘要:1.Thread的终止 首先,不建议使用Thread类的stop方法,因为会强制释放线程使用的资源,例如锁、文件等,会出现令人意想不到的问题。Java中Thread类提供了interupt方法来设置线程的中断标志位使线程停止,但是interrupt方法并不是万能的,只能在有限的情况下中断线程: 线程
阅读全文
摘要:本文基于JKD1.8 1.关键的属性: 2.构造函数 构造函数可以自定义初始化容量和负载因子的大小,其中初始化容量会自动提升为2的n幂次(n 31),提升容量的算法tableSizeFor写的很好 n |= n 1的作用是将n的二进制中第一个1和这个1的右边一位按位与,结果赋值给n;也就是n的非0最
阅读全文
摘要:LinkedList是双向链表结构,链表保存了头结点和尾节点,以及每个节点的前继指针和后继指针;以下是节点的定义: 尾插方法新增节点;只判断了链表是否为空,非空的话向后增加节点,没有数量限制,所以链表的容量可以无线延伸,只受限于内存的大小 remove方法提供了移除链表头结点,尾节点,特定节点,特定
阅读全文
摘要:ArrayList是Java的动态数组集合,主要用于快速读取数组元素,且在读多写少的情况下具有较好的表现;相比于LinedList,更节省空间,因为LinkedList的元素还要多存储前后继节点的指针,相较于ArrayList只存储元素本身有一定的差距,但是ArrayList在使用不当的时候也容易浪
阅读全文
摘要:Java中的异常处理是处理运行时错误的强大机制之一,从而可以保持应用程序的正常流程。 问题: Java异常类的继承关系图 检查异常和非检查异常的区别: java异常处理的内部工作? JVM首先检查异常是否被处理。如果未处理异常,JVM提供执行下列任务的默认异常处理程序: 但是,如果应用程序程序员处理
阅读全文
摘要:Java内部类或嵌套类是在类或接口中声明的类。我们使用内部类在一个地方逻辑地分组类和接口,以便它更可读和可维护。此外,它还可以访问外部类的成员,包括私有数据成员和方法。 内部类的优点: 问题: nested class(嵌套类)和inner class(内部类)的区别于联系 内部类是嵌套类的一部分,
阅读全文
摘要:1. Java抽象类 在java中,带有abstract关键字的类被视为抽象类。它可以拥有抽象方法和非抽象方法(带有方法体) Java中的抽象 抽象是仅仅向用户展示功能而隐藏实现细节的过程。另一种方式是,它只向用户展示基本信息并隐藏内部细节,例如发送短信,用户只需要编辑短信内容而无需知道短信是怎么被
阅读全文
摘要:Java中static关键字主要用于内存管理(是的,你没听错)。我们可以将它应用到变量、方法、代码块、嵌套类以及导入包中。静态关键字属于类,而不是类的实例。 1.静态变量 优点:节省内存 2.静态方法 限制:主要有两个限制 Q&A:为什么Java的main方法是静态的? 因为调用一个静态方法不需要一
阅读全文
摘要:在多线程环境中,volatile能保证共享变量的可见性以及一定程度的有序性。单例模式有多种写法,有线程安全的和非线程安全的,有懒汉式和饿汉式,有利用static关键字修饰变量、方法、代码块、内部类的实现,还有用枚举实现的,今天我们讨论下单例模式里面较为复杂的double check写法,先看下代码:
阅读全文
摘要:编译一次,到处运行;指的是Java语言的跨平台能力,而这种能力主要由Java虚拟机提供的,那Java语言从源代码到可以执行的机器码是怎样编译、运行的呢?Java源代码经过javac编译后生成屏蔽操作系统和硬件的字节码,再经由JVM编译、解释执行。 Java语言对字节码文件提供了三种执行方式: 通过指
阅读全文

浙公网安备 33010602011771号