Java List接口及实现类
Java中的List接口是java.util包下集合框架的一部分,它是Collection接口的直接子接口。List接口定义了一个有序的、可变的元素序列,并且允许重复元素。它提供了对元素进行索引访问的能力,以及通过索引位置添加、删除和修改元素的方法。 以下是List接口的一些关键特性: 有序:列表中元素的顺序是明确的,可以通过索引(从0开始)来确定每个元素的位置。 可变大小:列表的长度可以动态地改变,允许在运行时添加或删除元素。 允许重复:与Set不同,List允许存储重复的对象。 索引操作:提供了get(int index)方法获取指定索引处的元素,set(int index, E element)方法替换指定索引处的元素,add(int index, E...
Java标准
Java标准 JDK是实现Java标准的工具包,标准相当于接口,JDK是具体实现 JDK有Oracle JDK, OpenJDK等等 java版本eg:Java8和JavaSE,javaEE关系
final关键字
final关键字 修饰类,方法,方法内参数,变量 修饰类:表示类不可变,不可被继承,类中的方法隐式的添加final 修饰方法:表示方法不可以被重写 修饰方法参数: 表示参数不可变,当参数要在内部类中使用,参数需要final修饰 修饰变量: 表示变量不可变 当修饰的变量为基本类型(int, float等)时,变量值无法修改 当修饰的变量为引用时(String, Object等),变量的引用无法改变,引用的值是可以改变的 空白final: 声明final类型的变量时,未给变量付初值 只要确保变量在使用前被初始化即可(一般用构造器中初始化)
java学习路线
学习Java的路线有很多,但是大多数人都建议从Java SE基础开始,然后学习MySQL、JDBC和Java Web1。在学习过程中,一定要理论结合实践,不要只看书,一定要多动手看代码、写代码2。可以通过看书和视频结合的方式学习,视频会更生动,不会那么枯燥2。 在掌握了基础知识后,可以学习一些更高级的技术,比如Maven、Spring、SpringMVC、MyBatis、Redis、SpringBoot和SpringCloud等3。在学习过程中,可以参考一些项目实战,以便更好地理解和应用所学知识。
JVM
Java虚拟机(JVM, Java Virtual Machine)是Java语言的核心组件,它是一个抽象的计算机,专门为执行Java字节码而设计。Java源代码经过Java编译器编译后生成与平台无关的字节码文件(.class文件),这些字节码可以在任何安装了Java运行环境(JRE)的设备上运行,这是因为不同的平台上都有对应的JVM实现来解释或即时编译这些字节码。 JVM的主要作用和特征包括: 跨平台性: JVM为Java程序提供了跨平台的能力。开发者只需要编写一次Java代码,就可以在任何支持Java的系统上运行,这得益于JVM对不同操作系统和硬件架构的支持以及统一的字节码格式。 类加载机制: JVM通过类加载器(ClassLoader)将.class文件从硬盘加载到内存中,进行验证、准备、解析和初始化等步骤,使得类可以被JVM识别并使用。 内存管理: JVM内部有自己的一套内存模型,包含方法区、堆、栈、程序计数器和本地方法栈等多个区域。JVM负责自动管理内存分配与回收,尤其是垃圾收集机制(Garbage...
JVM学习指南
...
JVM性能调优
JVM性能调优主要涉及内存管理、垃圾回收、线程管理和编译优化等方面,以下是一些常见的调优策略: 内存配置与调整: -Xms 和 -Xmx 参数用于设置JVM堆内存初始大小和最大大小,合理设置可避免频繁的内存扩容和缩容带来的性能损耗。 -Xmn 设定年轻代大小,调整新生代、老年代的比例有助于优化垃圾回收效果。 -XX:PermSize 和 -XX:MaxPermSize (在Java 8及以前版本中)或者 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize(Java 8及以后版本)控制元空间/永久代的大小。 垃圾回收调优: 选择合适的垃圾收集器,比如G1、ZGC、Shenandoah等,并根据应用特点调整其相关参数,如 -XX:+UseG1GC 等。 调整年轻代晋升阈值 -XX:NewRatio 和 -XX:SurvivorRatio,优化对象在各代间的分布。 对于并发标记扫描(CMS)垃圾收集器,可以调整 -XX:CMSInitiatingOccupancyFraction 来设定触发并发收集的堆占用率。 线程优化: 合理设置...
Java虚拟机(JVM)内存模型
Java虚拟机(JVM)内存模型,也称为Java内存模型(Java Memory Model, JMM),是Java程序在运行时数据存储和交互的抽象模型。它定义了线程如何共享和交互内存区域中的变量,以及如何确保并发环境下的内存一致性。 JVM内存主要分为以下几大区域: 堆内存 (Heap) 堆是所有线程共享的一块内存区域,主要用于存放对象实例。所有的对象都在堆中分配内存。 当一个对象不再被任何引用指向时,垃圾回收器会对其进行回收以释放内存。 根据对象生命周期的不同,堆内存通常又细分为新生代、老年代等区域,并采用不同的垃圾回收策略进行管理。 方法区 (Method Area/元空间 Metaspace) 方法区同样是一个各个线程共享的内存区域,存储已经被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 在Java 7及以前版本,方法区有时被称为“永久代”,但在Java 8及之后,HotSpot VM移除了永久代,将类元数据存放在本地内存的元空间中。 虚拟机栈 (Java...
Java虚拟机(JVM)的生命周期
Java虚拟机(JVM)的生命周期涵盖了从启动到退出的整个过程,包括以下几个主要阶段: 启动 (Startup) JVM的启动通常是由用户执行一个Java应用程序开始的,例如通过命令行输入java [类名]或调用API启动。 启动过程中,操作系统创建一个新的进程,并加载特定实现的JVM实例。引导类加载器(Bootstrap Class Loader)首先加载核心Java类库(如rt.jar),然后根据指定的主类(包含main()方法的类)找到并加载这个类。 JVM初始化内存区域和子系统,如堆、栈、方法区等。 类加载与初始化 (Class Loading and Initialization) 当JVM需要使用某个类时,类加载机制会启动,按照双亲委派模型加载对应的字节码文件(.class文件)到方法区中。 类的生命周期包括:加载(查找并读取类的二进制数据)、验证(确保类信息符合JVM规范且不危害虚拟机安全)、准备(为静态变量分配内存并初始化默认值)、解析(将符号引用转换为直接引用)、初始化(执行类初始化代码,即static块和静态字段赋值)。 程序执行...
字节码与执行引擎
Java虚拟机(JVM)字节码与执行引擎是Java平台实现“一次编写,到处运行(Write Once, Run...