Java基础回顾——Java语言基础,
Java基础回顾——Java语言基础,
系统在执行代码时,其会先经过词法分析器,就是将编写的代码通过词法分析器将其逐个拆分为标识符、保留字、常数、运算符、界符。在本篇我们就对其进行总结。
常量与变量
在程序运行过程中,其值能够被改变的量称之为变量,其值不能够被改变的量称之为常量。常量与变量的命名都必须使用合法的标识符
标识符与关键字
标识符(用户标识符)
注:提起标识符,我们默认为用户自定义的标识符,其实则不然,关键字也是标识符。
标识符可以简单地理解为一个名字,是用来标识类名、变量名、方法名、数组名等有效字符序列。
Java语言规定:Java标识符由任意顺序的字母、下划线、美元符号($)、和数字组成,且首字符不能为数字,组合成的标识符不能为关键字(保留字)。
编写Java代码命名的规范:
- 类名:通常使用名词,首字母大写,后续单词首字母大写(驼峰式命名)。
- 方法名:通常使用动词,首字母小写,后续单词首字母大写。
- 变量:首字母小写,后续单词首字母大写。
- 常量:全部大写。
- 单词拼接的时候,不是用下划线进行拼接。而是不使用任何符号进行拼连接。
Java关键词(系统标识符)
关键词,有些时候它也被称为保留字,它其实也是一些标识符,它是系统标识符,只不过这些标识符是被赋予了一些特定的含义的。用户不能命名与关键词一致的标识符。否则会出现错误。
关键字 | 含义 | 关键字 | 含义 |
abstract | 表明类或者成员方法具有抽象属性 | instanceof | 用来测试一个对象是否是指定类型的实例对象 |
assert | 断言,用来进行程序调试 | int | 基本数据类型之一,整数类型 |
boolean | 基本数据类型之一,布尔类型 | interface | 接口 |
break | 提前跳出一个块 | long | 基本数据类型之一,长整数类型 |
byte | 基本数据类型之一,字节类型 | native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
case | 用在switch语句之中,表示其中的一个分支 | new | 用来创建新实例对象 |
catch | 用在异常处理中,用来捕捉异常 | package | 包 |
char | 基本数据类型之一,字符类型 | private | 一种访问控制方式:私用模式 |
class | 声明一个类 | protected | 一种访问控制方式:保护模式 |
const | 保留关键字,没有具体含义 | public | 一种访问控制方式:共用模式 |
continue | 回到一个块的开始处 | return | 从成员方法中返回数据 |
default | 默认,例如,用在switch语句中,表明一个默认的分支 | short | 基本数据类型之一,短整数类型 |
do | 用在do-while循环结构中 | static | 表明具有静态属性 |
double | 基本数据类型之一,双精度浮点数类型 | strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754术规范 |
else | 用在条件语句中,表明当条件不成立时的分支 | super | 表明当前对象的父类型的引用或者父类型的构造方法 |
enum | 枚举 | switch | 分支语句结构的引导词 |
extends | 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口 | synchronized | 表明一段代码需要同步执行 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 | this | 指向当前实例对象的引用 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 | throw | 抛出一个异常 |
float | 基本数据类型之一,单精度浮点数类型 | throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
for | 一种循环结构的引导词 | transient | 声明不用序列化的成员域 |
goto | 保留关键字,没有具体含义 | try | 尝试一个可能抛出异常的程序块 |
if | 条件语句的引导词 | void | 声明当前成员方法没有返回值 |
implements | 表明一个类实现了给定的接口 | volatile | 表明两个或者多个变量必须同步地发生变化 |
import | 表明要访问指定的类或包 | while | 用在循环结构中 |
变量
变量的使用是程序设计中最为重要的环节之一。变量的声明是为了告诉编译器这个变量是属于什么类型的数据,应该为该变量分配多大的内存空间,以及这个变量能存放什么样的数据。这个空间就叫做变量,在程序运行中,这个空间里的值是变化的,这个值就叫做变量值。为了便于操作,给这个空间取了个名字,这个名字就是变量名。变量在声明的时候,可以没有赋值,也可以为其赋初值。
对于变量的命名不是任意的,我们应当遵循一些规则:
- 变量名必须是一个有效的标识符。
- 变量名不可使用Java中的关键词。
- 变量名不能重复。
- 应当选择有意义的单词作为变量名,做到见名知意。
常量
在程序运行的过程中,一直不会被改变的量称之为常量。通常被称之为“final 变量”。常量在其有效期内只能被赋值一次。
Java语言中声明变量的时候,除了要指定数据类型之外,还需要使用“final”关键词进行限定,其语法格式:
final 数据类型 常量名称 [= 值]
常量名一般是用大写的字母(这不是必须的,只是习惯性的)
数据类型
在Java语言中有八种基本数据类型和三种引用类型。在该语言中一般使用其来存储数据。
整数类型
整数类型用来存储整数数值,即没有小数部分的数值,可以是正数,也可以是负数。整数类型根据她在内存空间中所占的内存大小的不同,分为byte,short,int,long四种类型。他们的取值范围为: ~-1(n为该数据类型所占的位数)。
注:在给变量赋值的时候,要注意其数值范围,超出相应范围就会出错
浮点类型
浮点类型就是表示有小数部分的数字。在Java语言中浮点数的类型可以分为单精度浮点型(float)和双精度浮点型(double)。它们在计算机内存中所占的位数不同,故具有不同的取值范围。
在默认情况下,一般小数默认为双精度浮点型,若想使用单精度浮点型必须在小数后加“f”或者“F”,另外可以使用“D”或“d”后缀来明确表明这是一个double型。
浮点值属于近似值,所以它在系统中运算的结果可能与实际有些误差。例如
字符类型
1、char型
字符类型(char)是用来存储单个字符,占16位(2个字节)的内存空间。在声明字符型变量的时候,需要用单引号将其表示出来。例如'$'就表示一个美元符号的字符。
同C/C++语言,Java语言也可以将字符当作整数对待。即每个字符都有相对应的ASCII编码值与之对应。比如97就相当于'a'字符
2、转义字符
转义字符是一种特殊的字符变量。其以反斜杠“\"开头,后跟一个或多个字符,转义字符具有特定的含义,不同于字符原有的含义,故称转义。Java中常用的转义字符
转义字符 | 含义 |
\ddd | 1~3位八进制数据所表示的字符,例如\157 |
\uxxxx | 4位十六进制表示的字符,例如\u75fb |
\' | 单引号字符 |
\" | 双引号字符 |
\\ | 反斜杠字符 |
\t | 垂直制表符,将光标移至下一制表符的位置 |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\f | 退页 |
将转义字符赋值给字符变量的时候,与字符值一样需要使用单引号。
布尔类型
布尔类型又称为逻辑类型,只有True和False两个值,分别代表布尔逻辑中的“是”与“非”。布尔值不能与整数类型的值进行转化,布尔类型的值一般出现在程序流程控制中的条件判断中。
在Java虚拟机中布尔值只是用1位的内存空间,但Java的最小分配内存单元为1字节,所以1个布尔值也占1字节的内存单元。
数据类型的转换
类型转换是指将一个值从一种数据类型转换为另一种数据类型的过程。例如,我们可以将字符类型转换为整数类型,也可以将整数类型转换为字符串类型。
在数据类型转换的时候,会出现两种可能:低精度类型向高精度类型进行转换;高精度类型向低精度类型转换。显然前者永远都不会丢失数据的精度,并且总是会成功的。但后者呢,后者那种方式的转换必然会造成信息的丢失,有可能失败。
故此,数据类型的转换存在两种:隐式(自动)转换和显示(强制)转换。
隐式转换
隐式转换一般出现在低精度(低级类型)向高精度(高级类型)的转换,由系统直接完成,程序员无需进行任何操作。例如我们将字符'a'+1,理论上字符型和整形应该是不能相加,但是系统在处理这个问题的时候,它会将字符'a'转换成整型,然后在进行相加。
显示转换
当把变量从高精度(高级类型)向低精度(低级类型)转换时,就必须使用显示转换。但是强制转换可能会造成数据精度的丢失。语法如下:
(要转换成的类型名)要转换的变量
如上个例子所示,我们将字符型'a'强制转换成整型并输出,我们得到了97,这次转换我们数值的精度是没有丢失的。我们知道整形是没有小数部分的,而浮点型是有小数部分的,所以如果我们将一个浮点型的转换成整型的,我们会发现这个数值的精度是会丢失的,至少它将小数部分值直接省略丢失了。
运算符
运算符是一些特殊的符号,主要用于数学函数,一些类型的赋值语句与逻辑比较方面。在Java语言中,系统提供了许多运算符,例如赋值运算符、算术运算符和比较运算符等。
算术运算符:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21(区别详见下文) |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19(区别详见下文) |
自增自减运算符:其都为单目运算符,可以放在变量之前,也可以放在变量之后。但是两种不同的用法可能会造成不同的结果。例如:
我们可以看出结果的确有些不同。它们的区别就是当运算符在前,表示先进行运算,然后再进行赋值;而运算符在后表示先进行赋值然后再进行运算。故此第一个结果和第三个结果都是与其原值相同的,而第二和第四个则不是。
关系运算符:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假(非真)。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)非真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真 |
位运算符:
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是0,则结果为0,否则为1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
逻辑运算符:
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
赋值运算符:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
条件运算符(?:)
条件运算符也被称为三元运算符(唯一的三目运算符)。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
各运算符的优先关系:
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !〜 | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
界符
界符就是限制界限所用的符号,一般以成对出现。例如 "" , '' , {} 等等。
相关文章
- 暂无相关文章
用户点评