一、关键字与保留字
关键字
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有的字母都是小写
常见关键字如下面两个表格所示。
保留字
定义:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字。
Java中的保留字:
- cast
- future
- generic
- inner
- operator
- outer
- rest
- goto
- const
二、标识符
定义:Java对各种变量、方法和类等要素命名时使用的字符序列。凡是自己可以起名字的地方都叫标识符。
定义规则
- 由26个英文字母大小写,0-9 ,_或 $组成(字母、数字、 _, $)
- 数字不可以开头
- 不可以使用关键字和保留字,但能包含关键字和保留字
- Java中严格区分大小写,长度无限制
- 标识符不能包含空格
命名规范
包名:多单词组成时所有字母都小写:
xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:
XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:
xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:
XXX_YYY_ZZZ
总原则:见名知意
三、注释
单行注释:
//注释文字
多行注释:
/* 注释文字 */
文档注释:用来生成文档(了解)
文档注释
/**
* 这是一个文档注释
* @version 1.0
* @since 1.8
*/
生成文档命令
javadoc -d 文件夹名 -xx -yy 源文件名.java
javadoc -d c:\\temp -version -since HelloWorld.java
四、变量
定义变量
数据类型 变量名 = 初始值;
数据类型 变量名;
变量名 - 符合标识符的命名规范
初始值 - 给变量的值/变量内存区域中存储的值
初始值一定要和“数据类型”部分兼容变量一定初始化才能使用
按照声明的位置不同分类(了解):
- 成员变量(在方法体外,类体内声明的变量称为成员变量)
- 实例变量(不被static修饰)
- 类变量(被static修饰)
- 局部变量(在方法体内部声明的变量称为局部变量)
- 形参(方法参数列表中定义的变量)
- 方法局部变量(在方法内定义)
- 代码块局部变量(在代码块内定义)
数据类型(重点)
-
基本数据类型 - 8种
整数 byte short int long
浮点数 float double
字符 char
布尔 boolean -
引用数据类型 - 3种
数组
类 class
接口 interface
整数类型
Java的整数型常量默认为
int
型,声明long
型常量须后加l
或L
(首推大写)
byte(1Byte)、short(2Byte)、int(4Byte)、long(8Byte)
long b = 10L;
浮点型
Java的浮点型常量默认为
double
型,声明float
型常量,须后加f
或F
。
通常情况下,应该使用 double 型,因为它比 float 型更精确。
注意:当我们对机器运算结果是小数的值与人直接计算的小数值进行相等判断时要注意机器计算的小数值是近似的。(看项目内解决方法)
float(4Byte)、double(8Byte)
float f = 100.5F
浮点型常量有两种表示形式:
十进制数形式,如:
5.12、512.0f、.512 (必须有小数点)
;科学计数法形式,如:
5.12e2、512E2、100E-2
。
布尔型
boolean
类型适于逻辑运算,一般用于程序流程控制,if
条件控制语句、while
循环控制语句、do-while
循环控制语句、for
循环控制语句;
boolean
类型数据只允许取值true
和false
,1个字节大小,不可以0或非0的整数替代false
和true
,这点和C语言不同。
字符类型
char
型数据用来表示通常意义上字符(2Byte)
字符常量的三种表现形式:
字符常量是用单括号括起来的单个字符,涵盖世界上所有书面语的字符。
一个
char
类型的变量就只能表示一个字符char可以保存int的常量值,但不能保存int的变量值
字符串转字符,就是取字符串第一个字符
char c1 = 'a'; char c2 = '中';
转义字符
使用转义字符
\
来将其后的字符转变为特殊字符型常量。\t :一个制表位,实现对齐的功能 \n :换行符 \\ :一个\ \" :一个" \' :一个' \r :一个回车
char c3 = '\n'; //表示换行
Unicode编码
直接使用Unicode值来表示字符型常量:
\uXXXX
。其中,XXXX
代表一个十六进制整数,对应的字符在Unicode编码表中的值。char c4 = '\u0041'; //表示A
- 计算机中所有的内容都是以二进制形式存在的 0 1
- 表示字符和二进制数字的对应关系的文档就是编码表
char
类型是可以进行运算的。因为它都对应有Unicode码。
五、基本数据类型转换
类型转化 – 一种类型的数据转换成另外一种类型
boolean
类型不可以转换为其它的数据类型
自动数据类型转化
容量小的 ~~> 容量大的
精度低的 ~~> 精度高的
系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
byte、short、char
之间不会相互转换,他们三者在算数运算时首先转换为int
类型。
当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型(基本数据类型转换成字符串)。
运算顺序从左到右。
"ABCD" - 3 + 1 --> "ABCD31" 3 + "ABCD" ---> "3ABCD" 3 + 1 + "ABCD" --> "4ABCD"
强制数据类型转换
自动类型转换的逆过程,使用时要加上强制转换符
()
,但可能造成精度降低或溢出,格外要注意。强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级,项目中有
int a = 1000; //强制类型转换 short s = (short) a; //int x = (int)10*3.5+6*1.5;//编译错误: double -> int int x = (int)(10*3.5+6*1.5);// (int)44.0 -> 44
通常,字符串不能直接转换为基本数据类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型(常用类那一章再讲)
String s = "123"; int n = Integer.parseInt(s); System.out.println(n);
六、运算符
算术运算符
如果
/
两侧都是整数,最后结果为整数;如果有一侧是小数,结果为小数。取余运算中,结果
+-
只与%
前面的数字即被模数正负相关
++
放在前面,先自增,再返回(返回自增后的值)
++
放在后面,先返回(返回自增之前的值),再自增
--
放在前面,先自减,再返回(返回自减后的值)
--
放在后面,先返回(返回自减之前的值),再自减
赋值运算符
- 复合赋值运算:
+=、-=、*=、/=、%=
关系运算
关系运算符的结果都是**
boolean
型,也就是要么是true
,要么是false
**。关系运算符
==
不能误写成=
。
逻辑运算符
逻辑运算符的结果都是**
boolean
型,也就是要么是true
,要么是false
**。逻辑运算符操作的对象一定是**
boolean
**类型与**(
&
或&&
)**:两侧为真,则为真;一侧为假,则为假。
&
左边无论真假,右边都进行运算&&
如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算或**(
|
或||
)**:两侧为假,则为假;一侧为真,则为真。
|
左边无论真假,右边都进行运算||
如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算非**(
!
)**:取反,真的变成假,假的变成真。异或**(
^
)**:强调的是异,两侧相同则为假,两侧不同则为真。
三元运算符
语法:
(条件表达式)? 表达式1:表达式2;
条件表达式为true,运算后的结果是表达式1
条件表达式为false,运算后的结果是表达式2
表达式1和表达式2为同种类型
三元运算符可以转成 if–else 语句
int a = 10; int b = 30; int max = (a >= b) ? a : b ;
运算符优先级
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序,先算谁,再算谁。
- 先算乘除,后算加减,有括号先算括号里面的,在代码中通过括号限定运算顺序
- 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。
上一行运算符总优先于下一行。