我以为我了解了Java中局部变量和全局变量之间的区别,直到今天看到一个示例。在这段代码中,我们尝试将元素添加到方法的链接列表中:

public void addDataPacket(DataPacket data){

PacketQueueElement newElement = new PacketQueueElement(data);

if(firstElement != null){

lastElement.setNextElement(newElement);

lastElement = newElement;

}

else{

firstElement = newElement;

lastElement = newElement;

}

}

我不明白的是,为什么在关闭方法后newElement不会消失?因为这是局部变量,并且未在任何地方的类中定义。这是此类的完整代码:

public class PacketQueue {

/** Das erste Element in der Warteschlange */

private PacketQueueElement firstElement;

/** Das letzte Element in der Warteschlange. */

private PacketQueueElement lastElement;

/**

* Instanziert eine neue Warteschlange.

*/

public PacketQueue(){

this.firstElement = null;

this.lastElement = null;

}

/**

* Fuegt ein neues Paket ans Ende der Warteschlange an.

*

* @param data Das neue Paket

*/

public void addDataPacket(DataPacket data){

PacketQueueElement newElement = new PacketQueueElement(data);

if(firstElement != null){

lastElement.setNextElement(newElement);

lastElement = newElement;

}

else{

firstElement = newElement;

lastElement = newElement;

}

}

/**

* Entfernt das erste Element der Warteschlange und gibt es zurueck.

*

* @return Das erste Element in der Warteschlange

*/

public PacketQueueElement getAndRemoveFirstElement(){

PacketQueueElement element = this.firstElement;

this.firstElement = element.getNextElement();

return element;

}

/**

* Gibt das erste Paket aus dem ersten Element zurueck.

*

* @return Das erste Paket

*/

public DataPacket getFirstDataPacket(){

return this.firstElement.getData();

}

/**

* Entfernt das erste Paket der Warteschlange und gibt es zurueck.

*

* @return Das erste Paket in der Warteschlange

*/

public DataPacket getAndRemoveFirstDataPacket(){

return this.getAndRemoveFirstElement().getData();

}

/**

* Gibt das erste Element der Warteschlange zurueck

*

* @return Das erste Element

*/

public PacketQueueElement getFirstElement(){

return this.firstElement;

}

/**

* Ueberprueft, ob die Wartschlange leer ist.

*

* @return true, wenn sie leer ist

*/

public boolean isEmpty(){

if(firstElement == null){

return true;

}

else{

return false;

}

}

/* (non-Javadoc)

* @see java.lang.Object#toString()

*/

public String toString(){

PacketQueueElement element = this.firstElement;

String s = "";

while(element != null){

s += element + "\n";

element = element.getNextElement();

}

return s;

}

}

先感谢您

java什么是局部与全局变量_Java中的局部VS全局变量相关推荐

  1. java 私有全局变量_java中的全局变量

    知识点,转自网上 首先,java中是没有全局变量这个概念的,java程序中不能像C++那样在类外定义全局变量,因为JAVA当初出现的初衷就是为了安全性和跨平台性, 所以去掉了类似C.C++中的全局变量 ...

  2. java 全局变量_Javascript中的局部变量、全局变量的详解与var、let的使用区别

    前言 Javascript中的变量定义方式有以下三种方式: 1.直接定义变量,var与let均不写: a = 10; 2.使用var关键字定义变量 var a = 10; 3.使用let关键字定义变量 ...

  3. java什么是栈和堆_JAVA中的栈和堆

    JAVA在程序运行时,在内存中划分5片空间进行数据的存储.分别是:1:寄存器.2:本地方法区.3:方法区.4:栈.5:堆. 基本,栈stack和堆heap这两个概念很重要,不了解清楚,后面就不用学了. ...

  4. c语言define定义全局变量,webpack中使用DefinePlugin定义全局变量

    webpack中使用DefinePlugin来传递构建的环境变量给源代码使用 最近在思考如何提供一种前后端开发功能测试既高效又安全的方案,因为对于我平时的项目是前后端同时进行的,后端我已经有了完备的权 ...

  5. java 全局变量线程安全_Java中的线程安全全局变量

    我试图了解 java中的线程安全机制,我需要一些帮助.我上课了: public class ThreadSafe { private Executor executor = new Scheduled ...

  6. java设置全局变量_java中如何实现全局变量

    有时一个项目中会多处涉及到路径,当你把这个项目移植到别的电脑上时就要一一修改这些路径,过程十分繁琐,所以一个全局变量在这时是必不可少的. 遗憾的是java等oo语言并没有全局变量,这怎么办呢?下面介绍 ...

  7. java 多线程全局变量_Java多线程操作局部变量与全局变量

    在这篇文章里,我们首先阐述什么是同步,不同步有什么问题,然后讨论可以采取哪些措施控制同步,接下来我们会仿照回顾网络通信时那样,构建一个服务器端的"线程池",JDK为我们提供了一个很 ...

  8. java常量能改变值吗_java中的常量和变量

    变量 含义:在程序过程中变量的值会发生变化,直白来说就是用来存储可变化的数据 变量的好处:使内存空间的得到重复利用 举个例子: 1 System.out.println(10);2 System.ou ...

  9. java键盘输入字符串静态变量_Java 中为什么样在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?老师说字符串常量和静态变量放在data segment中...

    在上一篇文章中,小编为您详细介绍了关于<C字符串以'\0'结尾的问题?为什么样C语言字符串常量可以当做指针>相关知识.本篇中小编将再为您讲解标题Java 中为什么样在静态方法中可以调用的方 ...

最新文章

  1. CentOS 命令提示符颜色及样式详解
  2. 性能测试中传——lr理论基础(四)
  3. c++ 构造函数析构函数 数据安全_C++知识点 16:构造函数和析构函数的语法
  4. VB6 通过winsock控件数组实现客户端和服务器多对一通信
  5. python有什么隐藏功能_Python的隐藏功能
  6. 大数据分析实战-信用卡欺诈检测
  7. java配置lib_Java环境配置
  8. 每日小记 2017.4.24
  9. 【联合仿真】电机与机械臂的联合simulink仿真
  10. 01.redis初识
  11. avast注册号|好用的avast注册号|没过期avast注册号
  12. caffe 连接 matlab2016b
  13. 表单进阶 单选框 多选框
  14. 计算机用三角函数时如何用弧度制,弧度制 三角函数的简单应用
  15. DNA非编码区突变,DNA外显子突变,DNA内含子突变的区别,什么是DNA突变,什么是基因突变
  16. vc控制计算机关机,192上位机VC MFC实现电脑的重启关机注销功能
  17. WPF 矢量图形编辑软件- Inkscape
  18. 数据库(My SQL 、SQL Server)的数据类型
  19. 将小米SoundMove 无缝接入 ChatGPT
  20. yolact模型DCNv2模块编译错误解决方法

热门文章

  1. matlab 0106,MATLAB控制系统仿真与实例详解.pdf
  2. 蓝宝石RX590GME 8G D5白金版黑苹果免驱成功
  3. Cesium 视锥体绘制,并动态更新朝向
  4. 慎独、主敬、求仁、习劳
  5. 哈工大2020春软件构造实验二实验报告
  6. DataFrame的行列转置
  7. 分布式任务调度系列 - PowerJob
  8. macOS 应用崩溃日志
  9. linux系统工程师----2.linux中内核级加强型火墙的管理
  10. 如何给微信公众号做认证