Java 变量与常量详解 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
maiziedu
V2EX    程序员

Java 变量与常量详解

  •  1
     
  •   maiziedu 2016-12-01 18:44:23 +08:00 1863 次点击
    这是一个创建于 3243 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。

    在 java 实际开发中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。

    变量

    变量代表程序的状态。程序通过改变变量的值来改变整个程序的状态,或者说得更大一些,也就是实现程序的功能逻辑。为了方便的引用变量的值,在程序中需要为变量设定一个名称,这就是变量名。例如在 2D 游戏程序中,需要代表人物的位置,则需要 2 个变量,一个是 x 坐标,一个是 y 坐标,在程序运行过程中,这两个变量的值会发生改变。由于 Java 语言是一种强类型的语言,所以变量在使用以前必须首先声明,在程序中声明变量的语法格式如下:

    数据类型 变量名称;

    例如: int x ;

    在该语法格式中,数据类型可以是 Java 语言中任意的类型,包括前面介绍到的基本数据类型以及后续将要介绍的复合数据类型。变量名称是该变量的标识符,需要符合标识符的命名规则,在实际使用中,该名称一般和变量的用途对应,这样便于程序的阅读。数据类型和变量名称之间使用空格进行间隔,空格的个数不限,但是至少需要 1 个。语句使用“;”作为结束。

    也可以在声明变量的同时,设定该变量的值,语法格式如下:

    数据类型 变量名称 = 值;

    例如: int x = 10 ;

    在该语法格式中,前面的语法和上面介绍的内容一致,后续的“=”代表赋值,其中的“值”代表具体的数据,注意区别“==”代表为判断是否相等。在该语法格式中,要求值的类型需要和声明变量的数据类型一致。

    在程序中,变量的值代表程序的状态,在程序中可以通过变量名称来引用变量中存储的值,也可以为变量重新赋值。例如:

    int n = 5 ;

    n = 10 ;

    在实际开发过程中,需要声明什么类型的变量,需要声明多少个变量,需要为变量赋什么数值,都根据程序逻辑决定,这里列举的只是表达的格式而已。

    常量

    常量的作用

    常量代表程序运行过程中不能改变的值。常量在程序运行过程中主要有 2 个作用:

    1. 代表常数,便于程序的修改(例如:圆周率的值)

    2. 增强程序的可读性(例如:常量 UP 、 DOWN 、 LEFT 和 RIGHT 分辨代表上下左右,其数值分别是 1 、 2 、 3 和 4 )

    常量的语法格式

    常量的语法格式和变量类型只需要在变量的语法格式前面添加关键字 final 即可。在 Java 编码规范中,要求常量名必须大写。

    则常量的语法格式如下:

    final 数据类型 常量名称 = 值;

    final 数据类型 常量名称 1 = 值 1 , 常量名称 2 = 值 2 ,……常量名称 n = 值 n ;

    例如:

    final double PI = 3.14 ;

    final char MALE=‘ M ’, FEMALE=‘ F ’;

    在 Java 语法中,常量也可以首先声明,然后再进行赋值,但是只能赋值一次,示例代码如下:

    final int UP ;

    UP = 1 ;

    Final :

    final 用于声明属性(常量),方法和类, final 这个关键字的含义是“这是无法改变的”或者“终态的”;

    那么为什么要阻止改变呢?

    java 语言的发明者可能由于两个目的而阻止改变:

    1).效率问题:

    jdk 中的某些类的某些方法,是不允许被用户覆盖的,设计者可能认为,所用方法已经是最好的方法,用户私自覆盖,或是由于疏忽而覆盖,就会影响 JVM 或是系统的系能;

    2). 设计所需:

    众所周知,有些情况必须使用 final 关键字,比如方法中的匿名内部类的参数传递

    [修饰变量] :

    final 成员变量表示常量,只能被赋值一次,赋值后值不再改变。

    [修饰方法] :

    final 方法不能被子类方法覆盖,但可以被继承。

    [修饰类] :

    final 类不能被继承,没有子类, final 类中所有方法都是 final 的。(如 String 类)

    原文链接: http://www.maiziedu.com/wiki/java/variable/

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2538 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 11:01 PVG 19:01 LAX 04:01 JFK 07:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86