学习数据结构的时候,大多数我们使用C或C++来编程,因为C或C++中有指针和地址,有一次上实验课检查学生的实验时候,检查到一同学使用JAVA实现的,当时的第一反应是问他是不是使用JAVA中的容器实现的,因为JAVA中有相应的Stack类,他说不是,所以认真的检查了他的实现,发现其实即使使用JAVA自己去实现这个结构也是很简单的,不过需要弄清楚一些关系,比如对于对象的引用其实质就是C中说的指针实现栈
转载
2023-06-21 14:42:29
48阅读
jvm为每个新创建的线程都分配一个堆栈。堆栈以帧为单位保存线程的状态。jvm对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应
转载
2023-07-29 18:26:52
95阅读
Java中对象、对象引用、堆、栈、值传递以及引用传递的详解 1.对象和对象引用的差别: (1).对象: 万物皆对象。对象是类的实例。在Java中new是用来在堆上创建对象用的。一个对象能够被多个引用所指向。 (2).对象引用: 相似于C++中的地址。通过对象引用能够找到对象。一个引用能够指向多个对象
原创
2021-08-06 13:13:41
543阅读
重点java中是没有指针的,java中只存在值传递, 然而我们经常看到对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。但是不要被这个假象所蒙蔽,实际上这个传入函数
原创
2021-12-28 12:28:58
112阅读
虚拟机栈这一部分真的很重要,内容也比较多,一起来看一下吧。Java虚拟机栈概述栈是管方法的,基本单位是栈帧,一个栈帧就是一个方法,栈只有两个操作:入栈和出栈,执行一个方法,这个代表这个方法的栈帧入栈,作为栈顶,这个方法是当前方法,执行结束,栈帧出栈。栈是线程私有的,生命周期与线程一致。栈中是没有垃圾回收的,但是有OOM(内存溢出)。这是因为栈的大小可以是固定的,也可以是动态的,这个是程序员可以设置
转载
2023-09-20 20:34:57
154阅读
Java值传递: 是针对Java基本类型(int等)数据的传递,在方法执行完以后,形参值的改变不会影响到实参的数据,这个没什么好说的。 Java引用传递: 首先需要明确一点,引用的含义,引用是个通用名词,在C++中表示变量的别名,而在Java中,引用类似于C++的指针,但又不太相同,因为Java的引用并不需要你自己去控制对象的使用周期,由于Jvm自带垃圾回收,所以该引用是是对象在jvm中的内
转载
2023-05-31 17:39:46
223阅读
写在前面的话:Java虚拟机是一门学问,是众多Java大神们的杰作,由于我个人水平有限,精力有限,不能保证所有的东西都是正确的,这里内容都是经过深思熟虑的,部分引用原著的内容,讲的已经很好了,不在累述。当然在这里,不可能所有细节都深层次的分析,只讲到一些比较重要的概念,由于对计算机组成原理理解不深,绝大部分只能采取黑盒理论来分析。 运行时的栈帧结构(什么是栈帧?)  
转载
2023-08-13 14:36:55
125阅读
# Java栈和native栈
在Java中,栈(Stack)是一种用于存储方法调用和局部变量的数据结构。Java栈和native栈是Java虚拟机(JVM)中的两种栈,分别用于存储Java方法和本地方法。
## Java栈
Java栈是JVM中用于存储方法调用和局部变量的数据结构。每个线程在运行时都会创建一个Java栈,用于存储该线程的方法调用和局部变量。Java栈的大小在JVM启动时就确
原创
2023-08-29 13:59:53
138阅读
这里写目录标题栈的概念什么是栈举个栗子栈在应用中的作用具体实现栈接口栈具体实现栈测试 栈的概念什么是栈栈是一个先进后出(First In Last out)的数据结构,出栈(从栈中取出元素)入栈(往栈中存入元素)只能在栈顶进行。举个栗子看了上述的表述是不是云里雾里的,没事我举个例子你就明白了。大家都打过羽毛球吧,装羽毛球的圆筒就能看作是一个栈,它首尾由一个开口和封闭的底部组成。我们打完羽毛球,将
转载
2023-10-14 12:48:04
93阅读
参数传递机制有两种,我们先来看下程序语言中是如何定义和区分值传递和引用传递的:值传递:是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递:是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。我们可以通过下面例子探究一下值传递和引用传递的区别:public class ParamPass1 {
转载
2023-07-17 19:06:59
113阅读
1.值传递: 就是在方法调用的时候,实参将自己的一份拷贝赋给形参,在方法内,对该参数值的修改不影响原来实参。2.引用传递 在方法调用的时候,实参将自己的地址传递的形参,此时方法内对该参数值的改变,就是对该实参的实际操作。下面举例说明例1:基本数据类型public class Test1 {
public static void main(String[] args) {
转载
2024-04-10 12:02:54
160阅读
Java中参数传递类型只有值传递java核心技术卷I里有一个结论我觉得挺有意思的:java中没有引用传递,只有值传递首先看定义:值传递,是指方法接收的是调用者提供的值引用传递,是指方法接收的是调用者提供的变量地址以前学习C++时把参数传递分为值传递和引用传递,国内的不少java教材愿意把对象的传递理解是引用传递,为什么它们会这么说呢?可以看下面一个例子:import java.util.Calen
转载
2023-07-13 13:00:05
57阅读
1、引用类型要理解什么是值传递和引用传递首先必须理解什么是引用类型,之前我也是有着很模糊的概念,感觉懂了,但是实际更深层次的理解还是会出现问题。(1)、什么是引用类型
引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用变量。
在java里面除去基本数据类型和String的其它类型都是引用数据类型,自己定义的class类都是引用类型,可以像基本类型一样
转载
2023-08-19 19:34:31
42阅读
作为一个java开发者,肯定在学习的时候出现一些困惑,比如这个关于java中是值传递还是引用传递,都是一些疑惑点,并且在java笔试题中经常出现关于值传递和引用传递的题目,所以有必要去了解和扩充一下自己的知识点。1.首先用java中基本数据类型做参数传递public class TestDemo {
public static void main(String[] args) {
转载
2024-04-12 09:58:06
14阅读
1. 什么是形参和实参形参: 就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的。实参: 就是实际参数,用于调用时传递给方法的参数。实参在传递给别的方法之前是要被预先赋值的。/**
* @author 一灯
* @apiNote Java传递示例
**/
public class Demo {
public static void main(String[]
转载
2023-07-17 21:20:14
53阅读
文章目录前言一、栈是什么?二、数组栈图解三、数组栈简单实现案例四、代码实现1.测试代码2.代码分析总结 前言栈是一种基础的数据结构,也是java中必须要掌握的一个内容,理解它对我们学习java很有帮助。一、栈是什么?栈是一种运算受限的线性表,简单来讲就是它在普通数组或链表的基础上,给操作它的元素作了一些限定,使得它里面的元素具有先入后出的特点。二、数组栈图解栈由一个数组和一个top指针构成,入栈
转载
2023-11-06 22:08:45
48阅读
什么叫做栈(Stack)呢?这里的栈和jvm的java栈可不是一个东西。。。 栈作为一种数据结构,我感觉栈就类似一种接口,实现的话有很多种,比如用数组、集合、链表都可以实现栈的功能,栈最大的特点就是先进后出,可以想象一下放羽毛球的盒子怎么放进羽毛球和拿出来羽毛球,我们把放进羽毛球的动作就叫做压栈或者入栈(push),拿出羽毛球的动作就叫做弹栈或出栈(pop) 其实在java中已经有个栈的实
转载
2023-09-03 15:03:17
52阅读
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。概述栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构。它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机里面从入栈到出栈的过程。在编译程序代码的时候,栈帧中
转载
2024-01-15 20:36:54
40阅读
目录一、栈Stack1.定义:2.三个常用方法:3.实现基于数组的顺序栈二、队列Queue1.定义2.常用操作:3.分类4.基于链表的基础队列的实现三、栈与队列的互转 1.用栈实现队列(两个栈): 2.用队列实现栈(两个队列):3.用队列实现栈(一个队列) 四、双端队列(Deque)五、循环队列1.定义2.判空与判满3.获取最后一个元素的索引:4.代码实现一、栈Sta
转载
2023-11-23 13:34:35
89阅读
栈的定义1、栈是一个先入后出的有序列表
2、栈是限制线性表中的插入和删除只能在线性表是同一端进行的一种特殊法。插入和删除的一端,为变化的一端
称为栈顶(Top),另一端称为栈底(Bottom).
3、出栈(pop)和入栈(push)的概念栈的创建:第一种:通过数组来创建
利用数组模拟栈:
1、定义一个top来表示栈顶,初始化为-1
2、入栈的操作时,当有数据加入到栈
转载
2023-08-30 00:44:32
61阅读