本文章嘗試著為變數的種類做一個總整理,以期讓讀者能充分掌握每一種變數的特性。
根據宣告方式來為變數分類
根據宣告方式詳細來區分,Java 的變數有七種,下面的程式碼展示了這七種變數的宣告方式:
class MyClass {
static int a;
int b;
public static void myMethod(int c) {
try {
int d;
} catch (Exception e) {
}
}
MyClass(int f) {
int[] g = new int[100];
}
}
* class variable:宣告在 class 內,method 之外,且使用 static 修飾的變數,例如上面程式碼的 a。
* instance variable:宣告在 class 內,method 之外,且未使用 static 修飾的變數,例如上面程式碼的 b。
* method parameter:宣告在 method 小括號內的變數,例如上面程式碼的 c。
* 狹義的區域變數(local variable):宣告在 method 內的變數,例如上面程式碼的 d 與 g。
* exception-handler parameter:宣告在 catch 小括號內的變數,例如上面程式碼的 e。
* constructor parameter:宣告在 constructor 小括號內的變數,例如上面程式碼的 f。
* 陣列元素(array component):陣列的元素值沒有識別名稱,必須透過陣列和索引值(index)來識別。例如上面程式碼的 g[0]。
根據變數記憶體來分類
根據變數記憶體位置來區分,Java 的變數有兩種,包括了:
* heap variable:佔用的記憶體在 heap 中,這類變數包括了 class variable、instance variable、array component,即前面程式的 a, b, g[0]。這類變數會自動被 JVM 初始化成預設值。
* stack variable:通稱廣義的區域變數(pan-local variable),其佔用的記憶體在 stack 中,這類變數包括了狹義的區域變數、method parameter、exception-handler parameter、constructor parameter,即前面程式的 c, d, e, f。狹義的區域變數不會被 JVM 初始化成預設值,使用者必須自行初始化該變數,但是 parameter 類(包括 method parameter、exception-handler parameter、constructor parameter)會被 JVM 初始化成傳入值。
根據使用方式來為變數分類
根據使用方式,只要分成三類即可,分別是:
* class variable:即上例的 a。
* instance variable:即上例的 b。
* 廣義的區域變數:包含上例的 c、d、e、f。這四者的差別很小,直接歸為一類。
至於「陣列元素」(array component)則不在此三類中,但是「陣列元素」並不常被注意到,為它多分出一類的用處不高。我通常將陣列視為物件,將 array component 視為物件的 instance variable。
分享到:
相关推荐
从蔡学镛的《香鸡排三部曲》中,我们可以提炼出一系列关于IT行业,尤其是程序员职业状态的深刻洞察,以及对台湾社会经济环境的反思。以下是对该系列文章中涉及的关键知识点的深入分析: ### 程序员的社会地位与薪酬...
从给定的文件信息来看,我们探讨的主题是“Java夜未眠—蔡学镛”,一个在IT行业,尤其是Java领域有着深厚造诣的人物。蔡学镛,现任梦工厂首席技术总监兼框架师,以其对Java的深刻理解和独到见解,在业界享有盛誉。 ...
### 蔡学镛软件架构入门 #### 一、软件架构定义及理解 软件架构是软件系统的基础骨架,它定义了软件系统的主要组件及其相互之间的关系。架构是软件设计的一个重要方面,它不仅决定了系统的组织结构,还影响着系统...
蔡学镛在平安科技上课时的课件
本简报由蔡学镛老师制作,旨在分享一种能够让观众保持高度专注的简报设计方法——“不瞌睡的简报设计模式”。此模式融合了尼古丁和咖啡因的概念,寓意通过激发兴趣和活力的方式使简报更加吸引人。 #### 简报三要素...
《PPT制作技巧:不瞌睡的简报设计模式——支付宝蔡学镛》是一本深入浅出地探讨如何创建引人入胜、高效传递信息的PPT作品的专业指南。作者蔡学镛,作为支付宝的知名专家,他在书中分享了自己的经验与见解,帮助读者...
蔡学镛,又被称为Chia Heng Yung,是一位知名的Java技术专家,他撰写了多篇关于Java技术的文章,这些文章可能涵盖了Java的基础知识、进阶特性以及最佳实践。他的文章对于Java开发者来说是宝贵的资源,可以帮助他们...
2012中国软件开发者大会(SDCC2012)的第五场分论坛“编程语言”中,创新工场首席架构师蔡学镛做了题为“认识Google Dart语言”的演讲,深入浅出地帮助研发人员建立了对于Dart的基本了解和判断,并对“Dart是进可攻...
《Java夜未眠》是台湾知名程序员蔡学镛的一部专为Java工程师撰写的著作,旨在深入探讨Java编程语言的方方面面,帮助读者提升技术水平和理解深度。这本书在Java社区中享有较高的声誉,对于想要深入了解Java的开发者来...
在《第五期 蔡学镛软件架构入门第二场 蔡学镛.pptx》这一材料中,作者首先对“软件架构”进行了定义与阐述。软件架构不仅仅是关于代码的组织方式,更是一种高层次的设计思路,它关注的是系统的结构和行为,以及它们...
蔡学镛架构设计方法强调在进行软件架构设计时,应当遵循一系列原则和步骤以简化设计过程、提高设计效率,并确保系统能够应对未来的业务扩展和变化。该方法提出首席架构师在系统架构老化后应当发起重构,以保持架构的...
软件架构入门培训资料,强烈推荐
标题《思考函数式编程》和描述《思考函数式编程》表明本文档是关于函数式编程的探讨。在函数式编程(Functional Programming,简称FP)领域中,主要的知识点包括以下几个方面: 1. 函数式编程基础概念:函数式编程...
现在是IT的时代,工作与生活都离不开IT。许多人都想了解软件原理,甚至编写一些简单的软件。通过《编程ING:人人都能学会程序设计》一书,你就能拥有这样的能力,甚至培养出对编程的兴趣。 本书在编写上采用了心理学...
《蔡明哲-互联网产品原型设计与用户体验》是一本深入探讨互联网产品设计核心领域的书籍教程,专注于提升网站运营的专业性和用户体验。在这个数字化时代,产品设计的重要性不言而喻,一个优秀的产品原型能够有效地...
### 中学生编程(蔡学镛) #### 知识点概览 1. **Red语言介绍** - Red语言概述 - Red语言的特点 - Red语言的应用领域 2. **Red语言环境搭建** - Windows操作系统的环境配置 - macOS操作系统的环境配置 - ...
**分类:** - **外部解释器**:如 REBOL,这是一种通用的脚本语言,可用于多种应用场景。 - **内部解释器**:如 Lua,常被嵌入到应用程序中作为扩展语言。 - **工具包**:如 Git,虽然本身不是脚本语言,但提供了...
蔡舒起-笔试答案-结合面试1 蔡舒起-笔试答案-结合面试1是关于航空公司机票预订系统的设计和开发,结合了面试问题和回答。下面是从该文件中提炼出的知识点: 1. 机票预订系统的设计 在设计机票预订系统时,需要...
10-2019051095-蔡佳宏-个人防火墙配置1