上一篇,我讲了标识符&关键字    这篇我来解释下变量&常量~~~

变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量。理解变量与常量,可以举这样一个例子:

例如,银行中活期存款的利率按5%计算,那么这个数字5%就是常量,而从银行中获得的利息会在不断地变化,此时利息就是变量。

Java程序中的变量、常量与数学中的变量、常量意义是相同的,本节向大家介绍Java中的变量与常量。

常量的概念及使用

Step1.

Step2.

在Java语言中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定,声明语法如下:

final type 标识符

也可以在声明的同时为常量赋值:

final
type 标识符=值

其中关键字final用来指定标识符为一个常量,type表示数据类型,如int、float等。

例如,圆周率的值在程序执行过程中是不会改变的,所以可以将一个标识符定义为一个常量来保存圆周率值,声明方法如下:

final
float PI=3.1415926F    //通过关键字final将PI声明为一个常量,float指定了PI常量的数据类型。

注意:
按照Java编码规范,常量名通常用大写表示,并且要符合“见其名知其意”的规则。 通过final关键字声明的常量,不能再改变其值,否则编译出错。

下面我们来做一个实例:

要求:声明final常量,程序代码如下

  1. public class Noname1 {
  2. public static void main(String[] args) {
  3. final int NUM = 100;
  4. NUM = 20;
  5. }
  6. }

编译这段程序,会出现编译错误,如下图

修改final常量出现的编译问题

变量的概念及命名

Step1.变量的使用是程序设计中一个十分重要的环节。为什么要定义变量呢?简单地说,就是要告诉编译器(Compiler)这个变量是属于哪一种数据类型的,这样编译器才知道需要配置多少空间给它以及它能存放什么样的数据。在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了便于操作,给这个空间取个名字,称为变量名。变量的命名必须是合法的标识符。内存空间内的值就是变量值。在声明变量时可以不赋值,也可以是直接赋予了初值。

声明变量,程序代码如下:

  1. public class Test {
  2. public static void main(String[] args) {
  3. int age; // 声明int型变量
  4. char char1 = 'a'; // 声明char型变量并赋值
  5. }
  6. }

编写以上程序代码,会产生什么样的作用呢?要了解这个问题,就需要对变量的内存配置有一定的认识。笔者用图解的方式,将上例程序代码在内存中的状况表现出来。

由上图得出、、、系统的内存可大略分为3个区域,即系统区(OS)、程序区(Program)、数据区(Data)。当程序执行时,程序代码会加载到内存中的程序区,数据暂时存储在数据区中。假设上述两个变量定义在方法体中,则程序加载到程序区中。当执行此行程序代码时,会在数据区配置空间给这两个变量

说白了,
 就是在内存里面划分一块区域来储存~

在同一个有效范围内,声明的变量名不允许重名,程序代码如下

  1. public class Test {
  2. public static void main(String[] args) {
  3. int jhh, jhh2;
  4. float jhh2; // 编译出错, 局部变量jhh2重复
  5. char hh, hh; // 编译出错, 局部变量hh重复
  6. }
  7. }

Java语言中的标识符是区分大小写的,所以下面的变量名是合法的:

  1. int num,Num; // 声明了两个不同的变量

变量名不能命名为Java关键字:

关键字因在Java语言中有着特殊用途而被保留起来,在声明变量时,不能用做变量名称,在第六篇已经跟大家介绍Java中的关键字

选择有意义的变量名:

根据以上规则可以命名一个合法的变量名,在此基础上,建议同学们尽量以有意义的名称来为变量命名,以便能够起到“见其名而知其意”的目的,使得程序代码更容易阅读,如“name”、“age”等。

变量的有效范围

变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域访问变量,则编译时会出现错误。变量的有效范围决定了变量的生命周期,变量的生命周期是指从声明一个变量并分配内存空间开始,到释放该变量并清除所占用的内存空间结束。进行变量声明的位置,决定了变量的有效范围,根据有效范围的不同,可以将变量分为以下两种。

成员变量:在类中声明,在整个类中有效

局部变量:在方法内或方法内的某代码块(方法内部,“{”与“}”之间的代码)中声明的变量。在代码块声明的变量,只在当前代码块中有效;在代码块外、方法内声明的变量在整个方法内都有效。

解释:

class A { int a;//成员变量 public static void main(String[] args) { int b;//局部变量 } }

创建类Olympics,分别在类体中定义成员变量medal_All,局部变量medal_CN与gold,程序代码如下。由于本实例中定义的变量medal_CN与gold是局部变量,只有在定义的区域内有效,因此编译本实例中会出现错误

代码如下

  1. public class On_1
  2. {
  3. private int medal_All = 800; // 放在这样算是一个成员变量
  4.  
  5. public void China() {
  6. int medal_CN = 100; // 方法的局部变量
  7. if (true) { // 代码块
  8. int gold = 50; // 代码块的局部变量
  9. medal_CN += 50; // 允许访问
  10. medal_All -= 150; // 允许访问
  11. }
  12. gold = 100; // 编译出错
  13. medal_CN += 100; // 允许访问
  14. medal_All -= 200; // 允许访问
  15. }
  16.  
  17. public void Other() {
  18. medal_All = 800; // 允许访问
  19. medal_CN = 100; // 编译出错, 不能访问其他方法中的局部变量
  20. gold = 10; // 编译出错
  21. }
  22. }

要避免在程序开发中出现这样的问题,就要很好地掌握成员变量与局部变量的定义和作用范围。

局部变量放在块 或者 方法里面 。。。只能在局部使用, 超出范围就不行了。

区别:

1.成员变量在类中,局部变量在方法中

2.声明成员变量时可以不初始化(被final修饰且没有static的必须显式赋值),而局部变量必须手动初始化

3.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可 以定义成final型

4.成员变量存储在堆,局部变量存储在栈

5.存在时间不同

JAVA_SE基础—— 7.常量&变量   到这里算是结束了    不会的,或者有问题的,或者有同学想和我交流的,可以加我QQ654249738 或者 留言——ThesCript_j

JAVA_SE基础——7.常量&变量的更多相关文章

  1. JAVA_SE基础——2.环境变量的配置&测试JDK

    哈喽,利用晚上的空余时间再写篇心的~~~  谢谢大家 前一篇文章 JAVA_SE基础--JDK&JRE下载及安装http://blog.csdn.net/thescript_j/article ...

  2. PHP 基础语法 常量 变量

    PHP基础语法 标记 当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php 和 ?>,这告诉 PHP 开始和停止解析二者之间的代码.此种解析方式使得 PHP 可以被嵌入到各种 ...

  3. iOS开发零基础--Swift基础篇--常量&变量的定义

    什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 常量和变量的使用注意: ...

  4. JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

    黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...

  5. JAVA_SE基础——26.[深入解析]局部变量与成员变量的差别

    黑马程序猿入学blog ... 假设这章节非常难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上差别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在 ...

  6. C#基础总结之一变量常量-if嵌套语句-witch结构-类型转换

    //Console.WriteLine("Hello World"); //打印显示 //Console.ReadLine(); //接收输入的值 //Console.ReadKe ...

  7. Swift语言指南(一)--语言基础之常量和变量

    原文:Swift语言指南(一)--语言基础之常量和变量 Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swif ...

  8. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  9. Java编程基础——常量变量和数据类型

    Java编程基础——常量变量和数据类型 摘要:本文介绍了Java编程语言的常量变量和数据类型. 常量变量 常量的定义 一块内存中的数据存储空间,里面的数据不可以更改. 变量的定义 一块内存中的数据存储 ...

随机推荐

  1. WPF自学入门(五)WPF依赖属性

    在.NET中有事件也有属性,WPF中加入了路由事件,也加入了依赖属性.最近在写项目时还不知道WPF依赖属性是干什么用的,在使用依赖项属性的时候我都以为是在用.NET中的属性,但是确实上不是的,通过阅读 ...

  2. canvas练手项目(一)——选取图片

    今天无事可做,在春意盎然的下午突发奇想想做一个关于图片处理的在线网页应用.不要问我为什么做这个,因为我想做!关于这个项目,我想基于canvas来实现,canvas是个好东西,我一直很喜欢,就是我没有做 ...

  3. freemind中内容变成html转义字符解决方法

    在使用freemind的时候,没有正常关闭,导致原来的内容变成下面这样: <html> <body> <p> <b>查询所有</b> < ...

  4. maven工程 java 实现文件上传 SSM ajax异步请求上传

    java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ...

  5. node.js连接MySQL操作及注意事项

    node.js作为服务端的js运行环境已经出现了有几年了,最近我有个朋友也在做这方面的开发,但是也是刚刚接触,遇到了很多坑.前几天他们在操作数据库的时候出现了点问题,后来我们一起看了看,其实都是nod ...

  6. sdk安装

    转自:https://www.cnblogs.com/smyhvae/p/4390905.html   安装sdk:(包解压到哪里就是sdk的安装目录 P.S.安装目录不能有空格,要是之前有空格换了目 ...

  7. handsontable 合并单元格

    <!DOCTYPE html> <html> <head> <title>handsontable demo</title> <met ...

  8. python计算机基础-Day1

    计算机基础-Day1 一.计算机基础 首先Python是一门编程语言 语言: 那什么是语言?语言就是一种事物与另一种事物沟通的介质. 所以说编程语言是程序员跟计算机沟通的介质,那么为什么要跟计算机沟通 ...

  9. Js基本函数 2017-03-20

    自定义函数:  Var  y = xxx (参数) xxx. yyy():表示引用这个类的方法:如document.write() xxx.yyy: 表示引用这个类的属性: 如:atrr.lenth ...

  10. python全栈开发-Day5 集合

    python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...