一、注释
为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释。注释不会出现在字节码文件中,即Java编译器编译时会跳过注释语句。 在Java中根据注释的功能不同,主要分为单行注释、多行注释和文档注释。
单行注释: 使用“//”开头,“//”后面的单行内容均为注释。
多行注释: 以“/*”开头以“*/”结尾,在“/*”和“*/”之间的内容为注释,我们也可以使用多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用。
文档注释: 以“/**”开头以“*/”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)
/**
* Welcome类(文档注释)
* @author 指定Java程序的作者
* @version 指定源文件的版本
* @deprecated 不推荐使用的方法
* @param 方法的参数说明信息
* @return 方法的返回值说明信息
* @see “参见”,用于指定交叉参考的内容
* @exception 抛出异常的类型
* @throws 抛出的异常,和@exception同义
*/
public class Welcome{
//单行注释
public static void main(String[] args/*行内注释*/){
System.out.println("Hello World!");
}
/*
多行注释
多行注释
多行注释
*/
}
二、标识符和关键字
1.分隔符
java语言里的分号(;)、花括号({})、方括号([])、圆括号(())、空格、圆点(.)、都具有特殊的分割作用,因此被统称为分隔符。
1)分号
Java语言里对语句的分割不是使用回车来完成的,Java语言采用分号(;)作为语句的分割,因此每个Java语句必须使用分号作为结尾。Java程序允许一行书写多个语句,每个语句之间以分号隔开即可,一个语句也可以跨多行,只要在最后结束的地方使用分号结束即可。
2)花括号
花括号的作用就是定义一个代码块,一个代码块指的就是“{”和“}”所包含的一段代码,代码块在逻辑上是一个整体。对Java语言而言,类定义部分必须放在一个代码块里,方法体部分也必须放在一个代码块里。除此之外,条件语句中的条件执行体和循环语句中的循环体通常也放在代码块里。
3)方括号
方括号的主要作用是用于访问数组元素,方括号通常紧跟数组变量名,而方括号里指定希望访问的数组元素的索引。
4)圆括号
圆括号是一个功能非常丰富的分隔符:定义方法时必须使用圆括号来包含所有的形参声明,调用方法时也必须使用圆括号来传入实参值;不仅如此,圆括号还可以将表达式中某个部分括成一个整体,保证这个部分优先计算;除此之外,圆括号还可以作为强制类型转换的运算符。
5)空格
Java语言使用空格分割一条语句的不同部分。Java语言是一门格式自由的语言,所以空格几乎可以出现在Java程序的任何地方,也可以出现任意多个空格,但不要使用空格把一个变量名隔开成两个,这将导致程序出错。
Java语言中的空格包含空格符(Space)、制表符(Tab)和回车(Enter)等。
除此之外,Java源程序还会使用空格来合理缩进Java代码,从而提供更好的可读性。
6)圆点
圆点(.)通常用作类/对象和它的成员(包括成员变量、方法和内部类)之间的分隔符,表明调用某个类或某个实例的指定成员。
2.标识符
标识符是用来给变量、类、方法以及包进行命名的。Java语言支持Unicode 6.2.0字符集,因此Java语言的标识符可以使用Unicode 6.0.0所能表示的多种语言的字符。
标识符需要遵守一定的规则:
- 标识符必须以字母、下划线_、美元符号$开头。
- 标识符其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
- Java 标识符大小写敏感,且长度无限制。
- 标识符不可以是Java的关键字。
标识符的使用规范
- 表示类名的标识符:每个单词的首字母大写,如Man, GoodMan
- 表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,我们称之为“驼峰原则”,如eat(), eatFood()
- 表示常量的标识符:全部字母大写,如PI,MAX、MIN
3.Java关键字
Java语言中有一些具有特殊用途的单词被称为关键字(keyword),当定义标识符时,不要让标识符和关键字相同,否则将引起错误。
关键字 | 关键字 | 关键字 | 关键字 | 关键字 |
---|---|---|---|---|
abstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | defauit | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
三、数据类型
1.数据类型分类
Java语言是强类型(strongly typed)语言,强类型包含两方面的含义:①所有的变量必须先声明、后使用;②指定类型的变量只能接受类型与之匹配的值。这意味着每个变量和每个表达式都有一个在编译时就确定的类型。类型限制了一个变量能被赋的值,限制了一个表达式可以产生的值,限制了在这些值上可以进行的操作,并确定了这些操作的含义。
强类型语言可以在编译时进行更严格的语法检查,从而减少编程错误。
声明变量的语法非常简单,只要指定变量的类型和变量名即可。如下
type varName = 初始值;
Java语言支持的类型分为两类:基本数据类型(Primitive Type)和引用类型(Reference Type)。
基本数据类型包括boolean类型和数值类型。数值类型有整数类型和浮点类型。整数类型包括byte、short、int、long、char,浮点类型包括float和double。
提示:char代表字符型,实际上字符型也是一种整数类型,相当于无符号整数类型。
2.基本数据类型
1)整型
通常所说的整型,实际指的是如下4种类型。
byte:一个byte类型整数在内存里占8位(1个字节),表数范围:-128(-2的7次方)~127(2的7次方-1)。
short:一个short类型整数在内存里占16位(2个字节),表数范围:-32768(-2的15次方)~32767(2的15次方-1)。
int:一个int类型整数在内存里占32位(4个字节),表数范围:-2147483648(-2的31次方)~2147483647(2的31次方-1)。
long:一个long类型整数在内存里占64位(8个字节),表数范围:(-2的36次方)~(2的36次方-1)。
Java种整数值有4种表示方式:十进制、二进制、八进制和十六进制,其中二进制的整数以0b或0B开头;八进制的整数以0开头;十六进制的整数以0x或者0X开头,其中10-15分别以af(此处的af不区分大小写)来表示。
2)字符型
字符型通常用于表示单个的字符,字符型值必须使用单引号(')括起来。Java语言使用16位的Unicode字符集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,因此Java程序支持各种语言的字符。
字符型值有如下三种表示形式。
直接通过单个字符来指定字符型值,例如'A'、'9'、'中'。
通过转义字符表示特殊字符型值,例如'\n'、'\t'等。
直接使用Unicode值来表示字符型值,格式是'\uXXXX',其中XXXX代表一个十六进制的整数。
由于计算机底层保存字符时,实际是保存该字符对应的编号,因此char类型的值也可直接作为整型值来使用,它相当于一个16位的无符号整数,表数范围是0-65535。
提示:char类型的变量、值完全可以参与加、减、乘、除等数学运算,也可以比较大小——实际上都是用该字符对应的编码参与运算。
3)浮点型
Java的浮点类型有两种:float和double。Java的浮点类型有固定的表数范围和字段长度,字段长度和表数范围与机器无关。
double类型代表双精度浮点数,float类型代表单精度浮点数。一个double类型的数值占8字节、64位,一个float类型的数值占4字节、32位。
4)布尔型
布尔型只有一个boolean类型,用于表示逻辑上的“真”或“假”。在Java语言中,boolean类型的数值只能是true或false,不能用0或者非0来代表。其他基本数据类型的值也不能转换成boolean类型。
boolean类型的值或变量主要用作旗标来进行流程控制,Java语言中使用boolean类型的变量或值控制的流程主要有如下几种。
- if条件控制语句
- while循环控制语句
- do循环控制语句
- for循环控制语句
除此之外,boolean类型的变量和值还可以在三目运算符(?:)中使用。
3.基本类型的类型转换
在Java程序中,不同的基本类型的值经常需要进行相互转换。Java语言所提供的7种数值类型之间相互转换,有两种类型转换方式:自动类型转换和强制类型转换。
1)自动类型转换
Java所有的数值型变量可以相互转换,如果系统支持把某种基本类型的值直接赋给另一种基本类型的变量,则这种方式被称为自动类型转换。当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换;否则就需要强制转换。
2)强制类型转换
强制类型转换,又被称为造型,用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
如图所示,黑色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。
四、运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。Java语言使用运算符将一个或多个操作数连缀成执行性语句,用以实现特定功能。Java语言中的运算符可分为如下几种:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、类型相关运算符。
1.算术运算符
Java支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算:加、减、乘、除和求余等。Java中常用的算术运算符如下图。
算术运算符 | 名称 | 举例 |
---|---|---|
+ | 加法 | 5+12=17 |
- | 减法 | 25-10=15 |
* | 乘法 | 3*8=24 |
/ | 除法 | 24/6=4 |
% | 求余 | 24%7=3 |
++ | 自增1 | int i=5;i++ |
-- | 自减1 | int i=5;i-- |
注意:++和--属于单目运算符,运算符可出现在变量的左边或者右边,运算符在左边表示先运算后赋值,运算符在右边表示先赋值后运算。
2.赋值运算符
赋值运算符用于为变量指定变量值,与C类似,Java也使用=作为赋值运算符。通常,使用赋值运算符将一个直接量值赋给变量。具体如下图。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=3;b=2; | a=3;b=2; |
+= | 加等于 | a=3;b=2;a+=b; | a=5;b=2; |
-= | 减等于 | a=3;b=2;a-=b; | a=1;b=2 |
*= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
/= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
%= | 模等于 | a=3;b=2;a%=b; | a=1;b=2; |
3.位运算符(难点)
Java支持的位运算符有如下7个。
&:按位与。
|:按位或。
~:按位非。
^:按位异或。
<<:左位移运算符。
>>:右位移运算符。
>>>:无符号右移运算符。
4.比较运算符
比较运算符用于判断两个变量或常量的大小,比较运算的结果是一个布尔值(true或false)。Java支持的比较运算符如下图。
比较运算符 | 名称 | 举例 | 结果 |
---|---|---|---|
> | 大于 | a=5;b=2;a>b; | true |
< | 小于 | a=5;b=2;a | false |
>= | 大于等于 | a=5;a>=3; | true |
<= | 小于等于 | a=5;b=2;b<=a; | true |
== | 等于 | a=5;b=2;a==b; | false |
!= | 不等于 | b=2;b!=2; | false |
5.逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体如表所示。
运算符 | 用法 | 含义 | 说明 | 实例 | 结果 |
---|---|---|---|---|---|
&& | a&&b | 短路与 | ab全为true时,计算结果为true,否则为false。 | 2>1&&3<4 | true |
|| | a||b | 短路或 | ab全为false时,计算结果为false,否则为true。 | 2<1||3>4 | false |
! | !a | 逻辑非 | a为true时,值为false;a为false时,值为true。 | !(2>4) | true |
| | a|b | 逻辑或 | ab全为false时,计算结果为false,否则为true。 | 1>2|3>5 | false |
& | a&b | 逻辑与 | ab全为true时,计算结果为true,否则为false。 | 1<2&3<5 | true |
^ | a^b | 异或 | 当ab相同时,计算结果为false,否则为true。 | 2>1^1>2 | true |
6.三目运算符
三目运算符只有一个( ? : ),三目运算符的语法格式如下:
(expression) ? if-true-statement : if-false-statement;
三目运算符的规则是:先对逻辑表达式expression求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false,则返回第三个操作数的值。
7.运算符的优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[] | 从左向右 |
2 | !、+(正)、-(负)、 ++、-- | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +(加)、-(减) | 从左向右 |
5 | <<、>>、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | &(按位与) | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右到左 |
14 | =、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>= | 从右到左 |
①、该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
②、结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。