1、java = jvm + 库
2、jvm = 数据类型+内存管理和GC+指令解析+函数调用+多线程+JIT
3、数据类型= 原子类型 + 引用 + 数组
4、动态运行:栈 = PC + 线程栈
每一帧 = 一个调用深度= 局部变量表+操作数栈
5、一个指令执行的例子:
public static float circumference(float r)
{
float pi = 3.14f;
float area = 2 * pi * r;
return area;
}
字节码如下:
00 ldc #4 栈顶 3.14
02 fstore_1 局部数据区 pi
03 fconst_2 栈顶
04 fload_1局部数据区--》栈顶
05 fmul弹出栈2个数据,结果压栈
06 fload_00号变量(传入的参数r)压栈
07 fmul弹出并运算
08 fstore_2存入area
09 fload_2局部--》栈顶
10 return弹出传给调用者
6、类(Class)和对象(Object)
1》Class= 常量池+(static)域、方法、实例或类变量占空间大小
2》Method=操作数栈和局部变量表大小,方法字节码数组
3》常量池:字面量、字符串引用
4》指令 new putstatic和getstatic;putfield和getfield;instanceof和checkcast;ldc
5》runtime需要维护所有的Class和所有的Object
7、方法调用
invokestatic invokespecial包括构造函数、私有方法和通过super
关键字调用的超类方法。
invokeinterface invokevirtual
invokedynamic
XXreturn
核心是找到字符串对应的方法区,之后进行解释执行
8、数组的实现
1》数组类由Java虚拟机在运行时生成。数组的类名是左方括号([)+数组元素的类型描述符;数组的类型描述符就是类名本身。例如,int[]的类名是[I,int[][]的类名是[[I,Object[]的类名是[Ljava/lang/Object;,String[][]的类名是[[java/lang/String等等。
2》指令
newarray
anewarray
multianewarray
XXaload和XXastore
arraylength
9、库
1》JNI: 注册和调用本地函数
2》异常:需要native记录java调用栈的信息
3》Main之前的初始化(System类的native初始化)
相关推荐
15. **Java虚拟机(JVM)**:了解JVM的工作原理,如类加载、内存管理和垃圾回收,有助于优化程序性能。 这份18天的Java笔记涵盖了这些核心概念,通过逐天学习,你可以逐步构建起对Java语言的全面理解。每章节都可能...
Java程序需要在Java虚拟机(JVM)上运行,这意味着只要有相应平台的JVM,Java程序便可以在不同的操作系统上执行。 在开发步骤方面,笔记介绍了编写源文件(.java)、编译源文件为字节码文件(.class)以及在虚拟机...
10. **JVM和内存管理**:了解Java虚拟机(JVM)的工作原理,包括类加载、内存区域(堆、栈、方法区等)以及垃圾回收机制,对于优化程序性能和避免内存泄漏至关重要。 通过"Java Studty.rar"中的资料,初学者可以...
高级java笔试题 ...自己动手写Java虚拟机,张秀宏 Spring 技术内幕:深入解析 Spring架构与设计原理(第2版) 数据库 MySQL技术内幕:Innodb 存储引擎第二版,姜承尧 Redis 设计与实现 操作系统: Linux 私
- 夸平台性:通过Java虚拟机(JVM),Java程序可以在不同的操作系统上运行,实现"Write Once, Run Anywhere"。 - 内存管理:Java自动进行内存管理,包括垃圾回收机制(GC),程序员无需手动释放内存。 - 代码安全...
10. **JVM**:了解Java虚拟机的工作原理,包括类加载机制、内存区域、垃圾收集算法和调优策略。 11. **网络编程**:理解TCP/IP协议,了解Socket编程,能够编写简单的网络通信程序。 12. **数据库操作**:熟悉SQL...
Java的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere),这得益于它的Java虚拟机(JVM)技术。本学习笔记主要针对Java初学者,旨在帮助他们理解和掌握Java编程的基础知识,以及如何解决编程过程中...
Java的运行环境是Java虚拟机(JVM),这使得Java程序可以在任何安装了JVM的系统上执行。 二、Java环境搭建 学习Java首先需要安装Java Development Kit(JDK)。JDK包含Java编译器(javac)、Java运行工具(java)...
JVM(Java虚拟机)是运行Java字节码的平台,JRE(Java运行时环境)包括JVM和Java核心类库,而JDK(Java开发工具包)则是包含JRE和开发工具的集合。JDK是编程人员用来开发Java程序的工具集合,JRE是运行Java程序的...
它的跨平台特性(Write Once, Run Anywhere)得益于Java虚拟机(JVM),使得Java代码能在任何支持JVM的设备上运行。 该资源包的核心部分是韩顺平老师的PPT教程,它通常会涵盖以下几个关键章节: 1. **Java基础**:...
10. **Java虚拟机(JVM)**:了解JVM的工作原理,包括类加载、内存管理(堆、栈、方法区等)、垃圾回收等,有助于优化程序性能。 11. **Java Swing与JavaFX**:这两是Java的图形用户界面(GUI)开发库,提供丰富的...
它的设计哲学是“一次编写,到处运行”,这意味着编写的代码可以在不同的平台上运行,无需重新编译,这得益于Java虚拟机(JVM)。 在Java基础部分,你将学习到以下关键知识点: 1. **环境配置**:安装Java ...
Java的源代码以`.java`为扩展名,编译后生成`.class`字节码文件,由Java虚拟机(JVM)执行。 在数据方面,Java提供了多种数据类型,包括基本类型(如整型int、浮点型float、字符型char等)和引用类型(如类、接口...
Java源代码首先被编译成字节码,然后由Java虚拟机(JVM)解释执行。这种设计使得Java程序可以在任何支持Java的平台上运行,无需针对特定平台进行重新编译。 【Java平台】 Java平台由Java虚拟机(JVM)和Java应用...
在学习方法上,强调实践和理解,鼓励学生少做笔记,更多地倾听、思考和动手实践。课程考核方式结合了平时表现和期末考试,书面考试与上机实验相辅相成,确保学生不仅理论知识扎实,也具备实际操作能力。 课程内容...
课程的学习方法强调实践,鼓励学生多听、多动手,而不是仅仅做笔记。考试会综合考虑平时成绩和上机实验表现,确保学生不仅理解理论知识,还能实际操作。 通过深入学习Java语言程序设计,学生不仅可以掌握编程基础,...
学习Java时,建议采用实践为主的方法,少做笔记,多听讲,多动手实践。课程考核通常结合平时表现和考试,书面考试与上机实验并重。对于初学者,理解Java的技术基础,掌握Java程序的编写、编译和运行流程,以及如何...
Java平台的核心是Java虚拟机(JVM),它允许Java程序在任何支持JVM的设备上运行,无需重新编译。Java API是Java平台的重要组成部分,包含了大量的类库,为开发者提供了构建图形用户界面、网络通信、数据库连接等功能...
2. **JVM**:理解Java虚拟机的工作原理,如类加载机制、内存模型(堆、栈、方法区等)、垃圾回收机制、性能优化策略等。 3. **设计模式**:单例、工厂、观察者、装饰器、代理、适配器等常见设计模式的使用场景和...
Java虚拟机(JVM)是JRE的一部分,它负责执行字节码。 标准类库是Java的一个重要特点,它提供了大量的预定义类和接口,用来执行各种常见任务,如输入/输出(I/O)、字符串处理、数据结构、网络编程和并发编程。学习...