在程序执行过程中,其值不能被改变的量称为常量,其值能被改变的量称为变量。变量与常量在编写程序中需要经常使用,本节将详细介绍变量与常量的使用方法。

标识符

标识符(identifier)用于命名变量、常量、方法、类、包等实体。

标识符命名规则:

标识符是由字母、数字、下划线“_”、美元符号“$”组成的字符序列。

标识符必须以字母、下划线“_”、美元符号“$”开头,不能以数字开头。

标识符不能是关键字和保留字。

标识符不能包含空格。

例如,$6,name,Class,java,_pwd都是合法的标识符,而2a,class,c++,hello world,a@都是非法的标识符,不符合标识符命名规则。Java编译器会检测出非法标识符并报错。

变量的定义

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

声明变量的语法格式如下:

数据类型 变量名;

如需声明多个相同类型变量时,可使用下面的语法格式:

数据类型 变量名1,变量名2,…,变量名n;

接下来,通过具体的代码学习变量的定义,具体示例如下:

int n,q=1; // 定义了二个int类型的变量,为q赋初值为1

double x, y, z; // 定义了三个double类型的变量

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

(1)变量名必须是一个有效的标识符。

(2)变量名不可以使用Java关键字。

(3)变量名不能重复。

(4)应选择较有意义的单词作为变量名。

变量的类型转换

Java的数据类型在定义时就已经明确了,但程序中有时需要进行数据类型的转换,Java允许用户有限度地进行数据类型转换。数据类型转换方式分为自动类型转换和强制类型转换两种。

1.自动类型转换

自动类型转换也称隐式类型转换,指两种数据类型转换过程中不需要显式地进行声明。Java会在下列的条件成立时,自动做数据类型的转换:

(1)转换的两种数据类型彼此兼容。

(2)目标数据类型的取值范围比原类型大。

类型转换只限该行语句,并不会影响原先定义的变量类型,而且自动类型转换可以保持数据的精确度,不会因为转换而丢失数据内容。

Java支持自动类型转换的类型,如图所示。

图2.1 自动数据类型转换图

自动类型转换示例说明如下:

byte b = 97; // 声明byte型变量值为97

char c = b; // 错误,byte类型不能自动类型转换为char类型

float f = b; // 正确,byte类型能自动类型转换为float类型

double d = ‘c’; // 正确,char类型能自动类型转换为double类型

在Java中,任何基本类型的值和字符串进行链接运算“+”时,基本类型的值将自动类型转换为字符串类型,字符串用String类表示,是引用类型。具体示例如下:

String s = 97; // 错误,不能直接将基本类型赋值给字符串

String str = 97 + “”; // 正确,基本类型的值自动转换为字符串,""代表空字符串

2.强制类型转换

强制类型转换也称为显式转换,指两种数据类型转换过程中需要显式地进行声明。当转换的两种数据类型彼此不兼容,或者目标数据类型的取值范围小于原类型时,而无法进行自动类型转换,此时就需要进行强制类型转换,如例2-1所示。

例2-1 TestTypeCast.java

1 public class TestTypeCast {

2 public static void main(String[] args) {

3 int n = 128;

4 byte b = n;

5 System.out.println(b);

6 }

7 }

程序的运行结果如图所示。

图2.2 例2-1运行结果

图2.9出现了编译错误,提示第4行代码类型不兼容,出现这样错误的原因是将int转换到byte时,int类型的取值范围大于byte类型的取值范围,转换会导致精度损失,也就是用1个字节的变量来存储4个字节的变量值。

对第4行代码进行强制类型转换,修改为下面的代码:

byte b = (byte) n;

程序的运行结果如图所示。

图2.3 例2-1修改后运行结果

当试图强制把取值范围大的类型转换为取值范围小的类型时,将会引起溢出,从而导致数据丢失。图2.10中运行结果为-128,出现这种现象的原因是,int类型占4个字节,byte类型占1个字节,将int类型变量强制转换为byte类型时,Java会将int类型变量的3个高位字节截断,直接丢弃,变量值发生了改变,如图所示。

图2.4 强制转换过程

变量的作用域

变量的作用域是指它的作用范围,只有在这个范围内,程序代码才能访问它。变量声明在程序中的位置决定了变量的作用域。变量一定会声明在一对大括号中,该大括号所包含的代码区域就是这个变量的作用域,下面通过一个示例来分析变量的作用域。如例2-2所示

例2-2 TestScope.java

1 public class TestScope {

2 public static void main(String[] args) {

3 int x = 100; // 定义变量x

4 {

5 int y = 200; // 定义变量y

6 }

7 System.out.println(y); // 访问变量y

8 }

9 }

程序的运行结果如图所示。

图2.5 例2-2编译报错

图2.12出现了编译错误,提示“找不到符号”。报错的原因在于,定义的变量y超出了作用域。将第7行代码放置在第5行代码之后,再次编译程序不再报错,程序的运行结果如图所示。

图2.6 例2-2运行结果

常量

常量就是一个固定的值,是不能被改变的数据。Java程序中使用的直接量称为常量,是在程序中通过源代码直接给出的值,在程序执行过程中都不会改变,也称最终量。

1.整型常量

整型常量是整数类型的数据,可分为二进制、八进制、十进制和十六进制4种,具体表示如下:

二进制:由数字0和1组成,用0b或0B开头的字面值,如0b110、0B110。

八进制:由数字[0, 7]范围内的整数组成,用0开头的字面值,如0110。

十进制:由数字[0, 9]范围内的整数组成的字面值,如110。

十六进制:由数字[0, 9]和字符[A, F]范围内组成,用0x或0X开头的字面值,如0x12、0XAbA。

2.浮点数常量

浮点数就是实数,包含有小数点,可以用标准小数形式和科学计数法形式两种方式表示,具体表示如下:

标准小数:由整数部分、小数点和小数部分构成,如1.5、2.2。

科学计数法:由一个标准式加上一个以10为底的幂构成,两者间用e或E隔开,如1.2e+6、5E-8。

在Java中,分为float单精度浮点数和double双精度浮点数两种类型,单精度浮点数以f或F结尾,双精度浮点数以d或D结尾。不加后缀会默认为double双精度浮点数。

3.字符常量

字符常量有三种形式,具体表示如下:

用单引号括起来的字符。如’a’、‘0’。

转义字符。如’\n’、’\t’、’\0’。

用Unicode值表示的字符,格式是’\uXXXX’,其中XXXX代表一个十六进制的整数。如’\u0000’。

4.字符串常量

字符串常量就是用双引号括起来的字符序列。如"欢迎学习Java"、“A”。

5.布尔常量

布尔常量就是布尔类型的两个值true和false,用于表示真和假。

6.null常量

null常量只有一个值null,表示对象引用为空。

多学一招:转义字符

Java定义了一种特殊的标记来表示特殊字符,这种标记称为转义序列,转义序列由()后面加上一个字符或者一些数字位组成。如\t表示Tab字符的转义符,\u000A表示换行符\n。转义序列中的序列号作为一个整体翻译,而不是分开翻译。一个转义序列被当做一个字符。

常用的转义序列如下:

\b,退格键,Unicode码为\u0008。

\t,Tab键,Unicode码为\u0009。

\n,换行符,Unicode码为\u000A。

\r,回车符,Unicode码为\u000D。

反斜杠\被称为转义字符,它是一个特殊字符。有特殊意义的字符,无法直接表示,需要用转义序列来表示。

‘,单引号字符,Java中单引号表示字符的开始和结束,直接写单引号字符(’),编译器会匹配前两个是一对,会报错,所以需要使用转义字符’。

“,双引号字符,Java中双引号表示字符串的开始和结束,要显示双引号需要使用转义字符”,如"欢迎学习"Java""。

\,反斜杠字符,Java中的反斜杠是转义字符,要显示反斜杠,需要使用转义字符\。

本文来自千锋教育,转载请注明出处。

Java培训教程分享:变量与常量相关推荐

  1. java培训教程分享:Java中怎样将数据对象序列化和反序列化?

    本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...

  2. java培训教程分享:Java中用户如何自定义异常?

    我们在学习java技术的时候应该有了解过,在java中是定义了很多的异常类的,虽然这些大量异常类可以帮助我们描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况,例如在 ...

  3. java培训教程分享:Java编写软件代码自动提示功能

    本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能,很多零基础和初学java的同学们对这一块还不是很了解,Eclipse for android 实现代码自动提示智能提示功能 ...

  4. Python培训教程分享:有哪些值得使用的爬虫开源项目?

    相信很多同学在学习Python技术的时候,都有学习到Python爬虫技术,爬虫技术在各大互联网公司都是非常常见的,可以帮助我们获取各种网站的信息,比如微博.B站.知乎等,本篇Python培训教程分享为 ...

  5. java培训教程:什么是匿名内部类?怎样创建匿名内部类?

    本期java教程要为大家分享的是关于java中的匿名内部类,相信很多同学在学java技术的时候有了解过,下面我们就来详细的看一下. java培训教程:什么是匿名内部类?怎样创建匿名内部类?匿名内部类是 ...

  6. Java培训教程:”==“和 equals 方法究竟有什么区别?

    在学习java技术过程中,我们会接触到一些变量值的相关知识,本期小编为大家介绍的教程就是关于"=="和 equals 方法究竟有什么区别?来看看下面的详细介绍. Java培训教程: ...

  7. Python培训教程分享:10款超好用的Python开发工具

    学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python ...

  8. UI培训教程分享:UI设计的分类有哪些?

    本期为大家介绍的UI培训教程是关于UI设计分类这块的,在UI设计中,我们常应用到的终端设备可大致分为三类,分别为移动端UI设计.PC端UI设计.其他终端UI设计. UI培训教程分享:UI设计的分类有哪 ...

  9. Python培训教程分享:Python异常机制

    ​ 在学习Python技术的时候,我们经常会遇到一些异常,例如导致程序在运行过程中出现的中断或退出,我们都称之为异常,大多数的异常都不会被程序处理,而是以错误信息的形式展现出来.本期Python培训教 ...

最新文章

  1. CV算法复现(分类算法3/6):VGG(2014年 牛津大学)
  2. 太火!这本AI图书微软强推,程序员靠它拿下50K!
  3. Ubentu下命令行安装chrome浏览器
  4. SpringBoot+MyBatis+Shiro 搭建杂谈
  5. vue 附件上传获取附近内容_vue实现文件上传功能
  6. Publish over FTP发布报错
  7. 利用tensorFlow api 识别手术器械
  8. python blp模型 估计_简述BLP模型
  9. win32汇编--创建窗口程序(RadAsm)
  10. python 小说下载工具_Python制作全网小说下载器
  11. 高级运维工程师面试题(更新中)
  12. Windows下搭配AirSim环境
  13. 蚂蚁的愤怒之源-上篇
  14. C语言与Java的异同
  15. 买华为手机U8825D的体验
  16. Chrome离线安装插件
  17. P2P游戏更新解决方案,P2P游戏更新引擎,P2P大文件分发。
  18. android 10.0 预制不可卸载app(RK 展讯 MTK平台都适用)
  19. [Python] 先读后覆盖写文件
  20. Swift Literal Convertibles

热门文章

  1. 自然语言处理中的语言模型预训练方法
  2. 使用PaddleFluid和TensorFlow训练序列标注模型
  3. 三味Capsule:矩阵Capsule与EM路由
  4. easyui有没有html编辑器,【easyui】kindeditor富文本(html编辑器)的使用
  5. spring-基于xml的aop开发-快速入门
  6. java ,c# 解决安全沙箱问题
  7. Android 加载GIF图最佳实践
  8. Objective-C学习笔记---构造函数和析构函数
  9. 13-NSPersistentContainer性能比较
  10. 【DirectX12】2.示例三角形绘制