变量与常量
2017-11-13 本文已影响28人
程序员丶星霖
变量与常量
@(Java学习)
一、关键字
Java语言中具有特殊用途的词称为关键字。
关键字 | 描述 |
---|---|
abstract | 抽象方法,抽象类的修饰符 |
assert | 断言条件是否满足 |
boolean | 布尔数据类型 |
break | 跳出循环或者label代码段 |
byte | 8-bit有符号数据类型 |
case | switch语句的一个条件 |
catch | 和try搭配捕捉异常信息 |
char | 16-bit Unicode字符数据类型 |
class | 定义类 |
const | 未使用 |
continue | 不执行循环体剩余部分 |
default | switch语句中的默认分支 |
do | 循环语句,循环体至少会执行一次 |
double | 64-bit双精度浮点数 |
else | if条件不成立时执行的分支 |
enum | 枚举类型 |
extends | 表示一个类是另一个类的子类 |
final | 表示一个值在初始化之后就不能再改变了;表示方法不能被重写,或者一个类不能有子类 |
finally | 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码 |
float | 32-bit单精度浮点数 |
for | for循环语句 |
goto | 未使用 |
if | 条件语句 |
implements | 表示一个类实现了接口 |
import | 导入类 |
instanceof | 测试一个对象是否是某个类的实例 |
int | 32位整型数 |
interface | 接口,一种抽象的类型,仅有方法和常量的定义 |
long | 64位整型数 |
native | 表示方法用非Java代码实现 |
new | 分配新的类实例 |
package | 一系列相关类组成一个包 |
private | 表示私有字段,或者方法等,只能从类内部访问 |
protected | 表示字段只能通过类或者其子类访问子类或者在同一个包内的其他类 |
public | 表示共有属性或者方法 |
return | 方法返回值 |
short | 16位数字 |
static | 表示在类级别定义,所有实例共享的 |
strictfp | 浮点数比较使用严格的规则 |
super | 表示基类 |
switch | 选择语句 |
synchronized | 表示同一时间只能由一个线程访问的代码块 |
this | 表示调用当前实例或者调用另一个构造函数 |
throw | 抛出异常 |
throws | 定义方法可能抛出的异常 |
transient | 修饰不要序列化的字段 |
try | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
void | 标记方法不返回任何值 |
volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
while | while循环 |
Java中常用的关键字如下表:
关键字 | 描述 |
---|---|
abstract | 抽象方法,抽象类的修饰符 |
assert | 断言条件是否满足 |
boolean | 布尔数据类型 |
break | 跳出循环或者label代码段 |
byte | 8-bit有符号数据类型 |
case | switch语句的一个条件 |
catch | 和try搭配捕捉异常信息 |
char | 16-bit Unicode字符数据类型 |
class | 定义类 |
const | 未使用 |
continue | 不执行循环体剩余部分 |
default | switch语句中的默认分支 |
do | 循环语句,循环体至少会执行一次 |
double | 64-bit双精度浮点数 |
else | if条件不成立时执行的分支 |
enum | 枚举类型 |
extends | 表示一个类是另一个类的子类 |
final | 表示一个值在初始化之后就不能再改变了;表示方法不能被重写,或者一个类不能有子类 |
finally | 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码 |
float | 32-bit单精度浮点数 |
for | for循环语句 |
goto | 未使用 |
if | 条件语句 |
implements | 表示一个类实现了接口 |
import | 导入类 |
instanceof | 测试一个对象是否是某个类的实例 |
int | 32位整型数 |
interface | 接口,一种抽象的类型,仅有方法和常量的定义 |
long | 64位整型数 |
native | 表示方法用非Java代码实现 |
new | 分配新的类实例 |
package | 一系列相关类组成一个包 |
private | 表示私有字段,或者方法等,只能从类内部访问 |
protected | 表示字段只能通过类或者其子类访问子类或者在同一个包内的其他类 |
public | 表示共有属性或者方法 |
return | 方法返回值 |
short | 16位数字 |
static | 表示在类级别定义,所有实例共享的 |
strictfp | 浮点数比较使用严格的规则 |
super | 表示基类 |
switch | 选择语句 |
synchronized | 表示同一时间只能由一个线程访问的代码块 |
this | 表示调用当前实例或者调用另一个构造函数 |
throw | 抛出异常 |
throws | 定义方法可能抛出的异常 |
transient | 修饰不要序列化的字段 |
try | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
void | 标记方法不返回任何值 |
volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
while | while循环 |
二、标识符
标识符就是用于给Java程序中变量、类、方法等命名的符号。
2.1、使用标识符,需要遵守几条规则:
- 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含@、%、空格等其他特殊字符,不能以数字开头。
- 标识符不能是Java关键字和保留字,但可以包含关键字和保留字。
- 标识符是严格区分大小写的。
- 标识符的命名最好能反映出其作用,做到见名知意。
三、变量
在Java中,变量就是申请内存来存储值,可以通过三个元素描述变量:变量类型、变量名以及变量值。
3.1变量名命名规则
命名规则.jpg- 变量名的长度是没有限制的;
3.1.1变量的初始化
1.先声明,再初始化:
String name;
name="张三";
2.声明和初始化放在同一行:
String name="张三";
3.2命名的好习惯:
- 变量名由多个单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称驼峰式命名法;
- 变量命名时,尽量简短且能清楚的表达变量的作用,做到见名知意。
3.3Java中变量的使用规则
- Java中的变量需要先声明后使用;
- 变量使用时,可以声明变量的同时进行初始化;也可以先声明后赋值;
- 变量中每次只能赋一个值,但可以修改多次;
- main方法中定义的变量名必须先赋值,然后才能输出;
- 虽然语法中没有提示错误,但是在实际开发中,变量名不建议使用中文,容易产生安全隐患,譬如后期跨平台操作时出现乱码等等。
四、数据类型
Java是一种强类型语言,也就意味着必须为每一个变量声明一种类型。Java中有两类数据类型,如下所示:
数据类型.jpg在Java中,基本数据类型变量存的是数据本身;引用类型变量存的是保存数据的空间地址。
4.1、基本数据类型
Java语言提供了八种基本数据类型类型。其中6种数字类型(4种整数型,2种浮点型),1种字符串类型,还有1种布尔型。
- 常用的基本数据类型如下表所示:
[图片上传失败...(image-d675b3-1510536439971)]
4.1.1整型
整型用于表示没有小数部分的数值,允许是负数。Java提供了4种整型,如下表所示:
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -2147483648 ~ 2147483647 |
short | 2字节 | -32768 ~ 32767 |
long | 8字节 | -9223372036854775808 ~ 9223372036854775807 |
byte | 1字节 | -128 ~ 127 |
注意:
- int类型最常用;
- byte和short类型主要用于特定的应用场合;
- 长整型数值有一个后缀L或l(例如10000000000L)。
- 十六进制数值有一个前缀0x或0X(例如0xCAF0)。
- 八进制数值有一个前缀0(例如010就是8)。
- 从Java 7开始,加上前缀0b或0B就可以写二进制数(例如0b1001就是9)。
- 从Java 7开始,还可以为数字字面量加下划线,为了让人更易读,Java编译器会去除这些下划线。
- Java没有任何无符号形式的int、long、short或byte类型。
4.1.2浮点类型
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约+/-3.40282347E+38F(有效位数6~7位) |
double | 8字节 | 大约+/-1.79769313486231570E+308(有效位数15位) |
浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型,如下图所示:
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约+/-3.40282347E+38F(有效位数6~7位) |
double | 8字节 | 大约+/-1.79769313486231570E+308(有效位数15位) |
注意:
- float类型的数值有一个后缀F或f,没有后缀的浮点数值默认为double类型;
- double类型的数值也可以有一个后缀D或d;
- 所有的浮点数值计算都遵循IEEE 754规范;
- 用于表示溢出和出错情况的三个特殊的浮点数值如下:
- 正无穷大(Double.POSITIVE_INFINITY)
- 负无穷大(Double.NEGATIVE_INFINITY)
- NaN(不是一个数字,Double.NaN)
4.1.3char类型
- char类型原本用于表示单个字符;
- char类型的字面量要用单引号括起来;
- char类型的值可以表示为十六进制值,其范围从\u0000到\Uffff。
- 特殊字符的转义序列如下表所示:
转义序列 | 名称 | Unicode |
---|---|---|
\b | 退表 | \u0008 |
\t | 制表 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
" | 双引号 | \u0022 |
' | 单引号 | \u0027 |
\ | 反斜杠 | \u005c |
注意:
- Unicode转义序列会在解析代码之前得到处理;例如:"\u0022+\u0022"并不是一个由引号包围加号构成的字符串。实际上,\u0022会在解析前转换为",所以得到""+"",也就是一个空串。
- 要当心注释中的\u。
-
//\u00A0 is a newline
会产生一个语法错误,因为读程序时\u00A0会替换为一个换行符; -
//Look inside c:\users
会产生一个语法错误,因为\u后面并未跟着十六进制数。
- 在Java中,char类型描述了UTF-16编码中的一个代码单元。
4.1.4boolean类型
boolean类型有两个值:false和true,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。
4.2、引用数据类型
- 引用类型变量由类的构造函数创建,可以使用它们访问所引用的对象。这些变量在声明时被指定为一个特定的类型。变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
- 一个引用变量可以用来引用与任何与之兼容的类型。
- String是一种常见的引用数据类型,用来表示字符串。
4.3类型转换
在Java程序中,不同的基本类型的数据之间经常需要进行相互转换,可以分为自动类型转换和强制类型转换。
4.3.1自动类型转换
自动类型转换需要满足如下特定的条件:
- 目标类型能与源类型兼容,例如:double兼容int,char不兼容int;
- 目标类型大于源类型。
-
数值类型之间的合法转换如下图所示:
数据类型转换.png
- 实心箭头:表示无信息丢失的转换
- 虚心箭头:表示可能有精度损失的转换
4.3.2强制类型转换
- 语法:(数据类型)数值
- 强制类型转换可能会造成数据的丢失。
五、常量
- 常量就是一个固定值,不需要计算,直接代表相应的值。在程序运行过程中不允许改变。在Java中利用关键字final指示常量。
- 语法:final 常量名 = 值;
- 关键字final表示这个变量只能被赋值一次。一旦被赋值之后,就不能再更改了。
- 常量名一般习惯全名使用大写字符。
六、注释
- Java中注释有三种类型:单行注释、多行注释、文档注释。
- 单行注释:以//开头,行末结尾
- 多行注释:以/开头,以/结尾
- 文档注释:以/*开头,以/结尾
- 在Java中,空白行或者有注释的行,Java编译器都会忽略掉。