c++将文件中的内容读出并赋值给int变量_变量与常量的理解!

标识符和关键字

1. 标识符

标识符可以简单的理解为一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。如图1所示

e3d3552ab6191191ebdbaf96e09af43a.png

图1 Java文件中的标识符和关键字

Java语言规定标识符由任意顺序的字母、下划线(_)、美元符号($)和数字组成,并且第一个字符不能是数字。标识符不能是Java中的保留关键字。

下面是合法标识 name user_age $page

下面是非法标识符:4word String User name

Java语言使用Unicode标准字符集,最多可以标识65535个字符,因此,Java语言中的字母不仅包括通常的拉丁文字a、b、c等,还包括汉字、日文以及其他许多语言中的文字。

关键字是Java语言中已经被赋予特定意义的一些单词。不可以把这些字作为标识符来使用。数据类型中提到的int、boolean等都是关键字,Java中的关键字如表1所示:

定义变量

变量可以理解为日常生活中的一个容器,例如箱子,它可以装衣服、金银首饰、图书、旅行用品等,关键时刻还可以藏人,总之变量的内容是可以改变的。变量的使用是程序设计中一个十分重要的环节,经常被使用,例如,如图1所示。

8112dcae0a8fd60fd534706d589d51e4.png

图1 Java文件中变量的使用

为什么要定义变量呢?简单的说,就是要告诉编译器(compiler)这个变量是属于哪一种数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。在程序运行过程中,空间内的值是变化的,所以称为变量。为了便于操作,给这个空间取个名字,称为变量名,内存空间内的值就是变量值。如图2所示。

7f5528c7cdda9e38375abb0b2bdf2687.png

图2 变量值与变量名的区别

变量的命名必须是合法的标识符。在声明变量时可以不为其赋值,也可以直接赋初值。

声明变量,实例代码如下:

int age; //声明int型变量

char char1 = 'r'; //声明char型变量并赋值

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

01023948cf397738d5f0b3489e68098e.png

图3 变量占用的内存空间

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

对于变量的命名并不是任意的,应遵循以下几条规则。

l 变量名必须是一个有效的标识符。

l 变量名不可以使用Java中的关键字。

l 变量名不能重复。

l 应选择有意义的单词作为变量名。

声明常量

在程序运行过程中一直不会改变的量称为常量(constant),通常也被称为“final变量”。常量在整个程序中只能被赋值一次。在为所有对象共享值时,常量是非常有用的。

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

final 数据类型常量名称[=值]

声明常量,实例代码如下

final doublePI = 3.1415926D; //声明double型常量PI并赋值

final booleanBOOL = true; //声明boolean型常量BOOL并赋值

当定义的final变量属于“成员变量”,则必须在定义的时候就设定它的初值。否则将会有编译错误。下面的实例可看出变量与常量的区别。

在项目中创建类Part,在类体中创建变量age与常量PI。在主方法中分别将变量与常量赋值,通过输出信息可测试变量与常量的有效范围。

public classPart { //新建类Part

staticfinal doublePI = 3.14; //声明常量PI,此时PI如不对其进行赋值,则会出现错误提示

staticint age= 23; //声明int型变量age,并进行赋值

publicstatic voidmain(String[] args) { //主方法

finalint number; //声明int型常量number

number = 1235; //对常量进行赋值

age= 22; //再次对变量进行赋值

//number= 1236; //错误的代码,因为number为常量,只能进行一次赋值

System.out.println("常量PI的值为:" + PI); //将PI的值输出

System.out.println("赋值后number的值为:" + number); //将number的值输出

System.out.println("int型变量age的值为:" + age); //将age的值输出

}

}

运行结果如图1所示。

6ffe82d2925807e2fa841630d4839027.png

图1 的运行结果

变量的有效范围

由于变量被定义出来后,只是暂存在内存中,等到程序执行到某一个点后,该变量会被释放掉,也就是说变量有它的生命周期。因此变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域访问变量则编译时会出现错误。在程序中,一般会根据变量的有效范围,将变量分为“成员变量”和“局部变量”。

1.成员变量

在类体中所定义的变量被称为成员变量。成员变量在整个类中都有效,所以成员变量也称作全局变量。

成员变量的有效范围是整个类的代码段,也就是在类体中的任何位置都可以使用该变量。

声明成员变量,并在不同方法中为成员变量赋值,代码如下:

publicclass Temp {

intnum=0;

floatprice=3.50f;

publicvoid method1(){ // 方法1访问变量num和price

num=1;

price=12.55f;

}

publicvoid method2(){ // 方法2也可以访问变量num和price

num=num*10;

price=price*0.5f;

}

}

类的成员变量又可分为静态变量和实例变量两种。

l 静态变量

静态变量的有效范围是整个类,并且可以被类的所有实例共享。可通过“类名.静态变量名”的方式来访问静态变量。静态变量的生命周期取决于类的生命周期,当类被加载时,为类中的静态变量分配内存空间,当卸载类时,释放静态变量占用的空间,静态变量被销毁。类加载时,就为静态变量分配内存空间,之后无论创建了多少类的实例,都不会再为静态变量分配内存空间,这些实例会使用同一个静态变量。

l 实例变量

实例变量与类的实例对应,它的有效范围是整个实例。每创建一个类的实例,都会为当前实例分配实例变量的内存空间。所以实例变量的生命周期取决于实例的生命周期,实例被创建时,为实例变量分配内存空间,当销毁实例时,释放实例变量占用的内存空间。

声明静态变量和实例变量,实例代码如下:

publicclass Temp {

intx = 45; //定义实例变量

staticinty = 90; //定义静态变量

}

2.局部变量

在方法体中定义的变量就是一种局部变量,局部变量只在当前代码块(即花括号之内)中有效。局部变量的生命周期取决于声明位置的代码块,超出这个代码块的范围就不能在使用代码块内的局部变量。

就拿方法类说,方法内声明的变量、包括参数变量都属于局部变量,当方法被调用时,Java虚拟机为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将会销毁,然后Java的垃圾回收机制会在某一时刻清理该内存空间。

变量的有效范围如图1所示:

bfe7d078f3b9ce44301270d6c2234f41.png

图1 变量的有效范围

在项目中创建类ValClass,分别定义名称相同的局部变量与成员变量,当名称相同时成员变量将被隐藏。

public class ValClass{ //新建类

staticString words = "成员变量"; //定义成员变量words

publicstatic voidmain(String[] args) { //主方法

String words = "局部变量"; //定义局部变量words

System.out.println("words变量现在是:" + words); //将words的值输出

}

}

运行结果如图2所示。

6b37ab31e4b47182226e3587b240952c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值