Java千百问_03基本的语法(001)_局部变量、类变量、实例变量有什么差别
局部变量、类变量、实例变量有什么差别
在聊局部变量、类变量、实例变量有什么差别之前,我们须要了解一下Java变量。
1、Java变量是什么
在数学世界中,我们知道有常量、变量。
举一个样例。小红和小蓝每一个人都有带了钱,小蓝带了5元,小红的钱比小蓝多10元。对于这样一个场景,我们通常会使用方程式表达:
设小红的钱为x,小蓝的钱为y。当中x,y都是数字。得出方程式:
y=5;
x=y+10;
我们看一下这个过程。首先如果了2个x、y两个变量,然后依据逻辑写出2个为x、y赋值的方程式,方程式中有5、10两个常量。
在程序世界中。相同也有常量、变量。
与数学世界一样。我们会先声明变量(即数学中的如果变量,不同的是须要指定类型,不会占用内存)。然后依据须要为变量赋值(这时会分配内存)。上面的样例用程序写出即:
- int y=5;// 整型
- int x;
- x=y+10;
看了这个样例,能够总结出变量的定义:源于数学,是计算机语言中,能储存计算结果或能表示值的抽象概念。
在Java中。变量大体分为下面4类:类变量、常量、实例变量、局部变量
- public class Test {
- public static int classVar;// 类变量。即静态变量,关键词static
- public static final int constant = 10;// 常量,关键词static,final,是一种特殊的类变量,一定要在声明时赋值
- public int instanceVar;// 实例变量
- public void doTest() {
- int partVar;// 局部变量
- }
- }
明确了变量的概念后,我们分别看看Java中局部变量、类变量、实例变量、常量的差别。
2、类变量(静态变量)是什么:
如上面样例。类变量在类中用statickeyword声明,在随意在方法、构造函数或代码块外部。
类变量在程序启动时被创建,在程序停止时被销毁。
类变量被存储在静态存储器中。
类变量通过调用的类名来訪问。 如:
- public void doTest() {
- Test.classVar;
- }
类变量与对象毫无关系。不管有没有创建对象。创建了多少个对象,一个类变量永远仅仅有一个副本。
3、常量是什么:
常量是标记为finalkeyword的类变量,类变量的特性常量均有,再次列出与类变量的差别。
如上面样例,声明常量时必须赋值,且赋值后不能改变其值。
常量名称一般都须要大写。
类变量被存储在常量存储器中。
4、 实例变量是什么:
如上面样例,实例变量在类中声明,在随意在方法、构造函数或代码块外部。
实例变量在一个对象"new"时创建,在对象被销毁时销毁。
实例变量是对象的一部分。同对象一样存储在堆中。
实例变量通过对象来訪问。假设提供给外部对象的方法使用:
- public void doTest() {
- Test test = new Test();
- test.instanceVar;//须要变量是public才干给外部对象使用
- }
假设提供给对象自己的方法使用:
- public void doTest() {
- this.instanceVar;
- instanceVar;//也能够不加this直接使用
- }
5、 局部变量是什么:
如上面样例,局部变量在方法、构造函数或代码块中声明。
局部变量在进入方法、构造函数或块时创建。退出时被销毁。
局部变量在堆栈级别内部实现。
局部变量能够直接在方法中使用:
- public void doTest() {
- int partVar;// 局部变量
- partVar = 1 + 1;
- }
Java千百问_03基本的语法(001)_局部变量、类变量、实例变量有什么差别的更多相关文章
- Java千百问_03基本的语法(005)_二进制是如何做位运算的
点击进入_很多其它_Java千百问 二进制是如何做位运算的 程序中的全部数在计算机内存中都是以二进制的形式储存的.位运算说白了,就是直接对整数在内存中的二进制位进行操作. 其它运算符看这里:java种 ...
- Java千百问_05面向对象(005)_接口和抽象类有什么差别
点击进入_很多其它_Java千百问 1.接口和抽象类有什么差别 在Java语言中.抽象类abstract class和接口interface是抽象定义的两种机制. 正是因为这两种机制的存在,才赋予了J ...
- Java千百问_05面向对象(011)_引用传递和值传递有什么差别
点击进入_很多其它_Java千百问 1.什么是值传递 值传递,是将内存空间中某个存储单元中存放的值,传送给还有一个存储单元.(java中的存储单元并不是物理内存的地址,但具有相关性) 比如: //定义 ...
- Java千百问_05面向对象(006)_is-a,has-a,like-a是什么
点击进入_很多其它_Java千百问 1.is-a,has-a,like-a是什么 在面向对象设计的领域里,有若干种设计思路,主要有例如以下三种: is-a.has-a.like-a java中在类.接 ...
- JVM存储位置分配——java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配
Java中的变量根据不同的标准可以分为两类,以其引用的数据类型的不同来划分可分为“原始数据类型变量和引用数据类型变量”,以其作用范围的不同来区分可分为“局部变量,实例变量和静态变量”. 根据“Java ...
- Java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配
转自:https://blog.csdn.net/leunging/article/details/80599282 感谢CSDN博主「leunging」的总结分享 ———————————————— ...
- Java 局部变量、实例变量、类变量(静态变量)区别
1. 局部变量: 局部变量是类的方法中的变量: 2. 实例变量: 实例变量也是类中独立于方法之外的变量,不过没有static修饰,也叫 对象变量 3. 类变量(静态变量): 类变量是类中独立于方法之外 ...
- Java中字段、属性、成员变量、局部变量、实例变量、静态变量、类变量、常量
首先看个例子: package zm.demo; public class Demo { private int Id;//成员变量(字段).实例变量(表示该Id变量既属于成员变量又属于实例变量) p ...
- 硬不硬你说了算!35 张图解被问千百遍的 TCP 三次握手和四次挥手面试题
每日一句英语学习,每天进步一点点: 前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 TCP 如初恋. 遥想小林 ...
随机推荐
- DHCP和PXE
继续学习,Let's go!DHCP和PXE都是什么呢?如果非科班出身,可能一脸懵逼,好多东西需要去学习了,真的,继续学吧,付出不一定会有回报,不付出肯定就是等死了,呵呵! 一.DHCP 真正需要手动 ...
- Spring Boot 2 (三):Spring Boot 开源软件都有哪些?
016年 Spring Boot 还没有被广泛使用,在网上查找相关开源软件的时候没有发现几个,到了现在经过2年的发展,很多互联网公司已经将 Spring Boot 搬上了生产,而使用 Spring B ...
- UVA 1596 Bug Hunt (大模拟 栈)
题意: 输入并模拟执行一段程序,输出第一个bug所在的行. 每行程序有两种可能: 数组定义: 格式为arr[size]. 例如a[10]或者b[5],可用下标分别是0-9和0-4.定义之后所有元素均为 ...
- poj 1088 滑雪 DP(dfs的记忆化搜索)
题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 ...
- 32道常见的Java基础面试题
1. 什么是 Java 虚拟机(JVM)?为什么 Java 被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被编译成能被 Java 虚拟 ...
- python标准库笔记
1.python互联网数据处理模块 base64数据编码 二进制数据 encode ASCII字符 ASCll字符 decode 二进制数据 json数据交换格式 轻量的数据交换格式,json暴露的A ...
- nyoj 86 找球号(一)(set,map)
找球号(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0& ...
- 在ubuntu 18.04下装有线守护wg
wg你懂的是什么,下面讲讲我这段时间安装过程,发觉这个软件和CENTOS 7下面不是很合拍,它更适合ubuntu,因为ubuntu仍然用iptables,而CENTOS 早就用了firewalld了, ...
- noip模拟赛 数颜色
分析:高级数据结构学傻了.....一眼看上去觉得是莫队,发现带修改,于是分块,由于写的常数很大,只有70分. 正解很简单,记录下颜色为c的每只兔子的位置,每次二分找这个区间有多少只这种颜色的兔子就可以 ...
- 新vim配置文件
"******************************************************特殊设置************************************ ...