关键字
有特殊含义的、被保留的、不能随意使用的字符
特点:
1.完全小写的英文字母
2.在增强版的记事本中有特殊的颜色
标识符
在程序中,自定义的内容。如:类名、方法名、变量名等等
命名规则:
1.数字、字母、下划线、$
2.不能以数字开头
3.不能是关键字
命名规范
类名:首字母大写,后面单词首字母大写(大驼峰式)
变量名:首字母小写,后面每个单词的首字母大写(小驼峰式)
方法名:同变量名
常量
在程序运行期间,固定不变的量
常量的分类:
1.字符串常量:凡是用双引号引起来的部分,如:“ABC”、“123”、“Hello”
2.整数常量:直接写上的数字,无小数点 如:123、456、789
2.浮点数常量:直接写上的数字,有小数点 如:2.5、-3.14、0.0
4.字符常量:凡是用单引号引起来的单个字符 (单引号中有且只能有一个字符,不能为空) 如:‘A’ 、‘b’、 ‘9’、 ‘红’
5.布尔常量:只有两种取值 ture 、false
6.空常量:null ,代表无任何数据 (不能直接用来打印输出)
数据类型
基本数据类型
整数型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean
引用数据类型
字符串、数组、类、接口、Lambda
注意事项:
1.字符串不是基本数据类型,而是引用类型
2.浮点型可能只是一个近似值,并非精确的值
3.数据范围与字节数不一定相关,例如floa数据范围比long更加广泛,但时候floa是4 字节,long是8字节
4.浮点数当中默认类型是double,如果一定要使用float类型,需要加上一个后缀F
如果是整数,默认类型是int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀
变量
程序运行期间,内容可以发生改变的量
创建一个变量使用的格式:
数据类型 变量名称; //创建一个变量
变量名称 = 数据值; // 赋值,将右边的数据值,直接交给左边的变量
一步到位的格式:
数据类型 变量名称 = 数据值; //在创建一个变量的同时,立刻放入指定的数据值
注意事项:
1.如果创建多个变量则变量名称不可重复。
2.对于float和long类型来说,其后缀F和L不可省略。
3.如果使用byteh类型或者说short类型,那么右侧的数据值不可超过左侧类型的范围。
4.如果没有进行赋值的变量,不能直接使用;只能先赋值后使用。
5.变量的使用不能超过作用域的范围
【作用域】:从定义变量开始的一行,一直到直接所属的大括号结束为止。
数据类型的转换
当数据类型不一样时,将会发生数据类型转换。
自动类型转换(隐式)
- 特点:代码不需要进行特殊处理,自动完胜
- 规则:**数据范围从小到大 **
强制类型转换(显示)
- 特点:代码需要进行特殊的格式处理,不能自动完成。
- 格式:范围小的类型 范围小的变量 = (范围小的类型) 原本范围大的数据;
注意事项:
1. 强制类型转换一般不推荐使用,可能发生精度损失、数据溢出
2. byte/short/char三种类型都可发生数学运算
3. byte/short/char三种类型在运算时,都会被提升成为ingt类型,然后计算。
4. boolean类型不能发生日数据类型转换
溢出数据
精度损失
当浮点数想整数强制类型转换时,并不是四舍五入,所有的小数位都会被舍弃
数字和字符的对照关系表(编码表)
ASCLL码表: American Standard Code for Information Interchange 美国信息交换标准代码
48 = 0
65 = A
97 = a
Unicode码表:万国码;0-127部分与ASCLL 码表一致
运算符
进行特定操作的符号 如:+、-、*、/
表达式
用运算符连接起来的式子 如:1+1、a+b
四则运算:
加:+
减:-
乘:*
除:/ 对于一个整数的表达式来说,除法用的是整数,整数除以整数,结果仍为整数。
取模(取余数):% 只对于整数的除法来说,取模运算才有余数的意义
注意事项:
- 一旦运算中有不同的数据类型,那么结果将会是数据类型范围大的那种。
四则运算当中的“+”常见的三种用法:
- 对于数值来说,那就是加法。
- 对于字符char来说,在计算之前。char会被提升成为int,然后计算。
char类型字符,和int类型数字,之间的对照关系表:ASCII、Unicode
c.对于字符串String来说(首字母大写,并不是关键字)来说,加号代表的是字符串的拼接。
任何数据类型和字符串进行连接的时候,结果都会变成字符串。
自增运算符:++
自减运算符:–
基本含义:让一个变量涨一个数字1,或者然让一个变量降一个数字1
使用格式:写在变量名称之前,或者写在变量名称之后。 如:++num,num++
使用格式:
- 单独使用:不和其他任何操作混合,自己独立成为一个步骤;
- 混合使用:和其他操作混合,例如与赋值混合,或者与打印操作混合,等。
使用区别:
- 在单独使用的时候,前++和后++没有任何区别,也就是:++num;和num++;是完全一样的。
- 在混合使用的时候,【有重大区别】
如果是**【++前】,那么变量【立刻马上+1 】,然后拿着结果进行使用。【先加后用】
如果是【后++】**,那么首先使用变量本来的数值,【然后再让变量+1】。 【先用后加】
注意事项:
只有变量才能使用自增、自减运算符,常量不可发生改变,所以不能用。
赋值运算符分为:
基本赋值运算符:
就是一个“=”,代表将右边的值赋给左侧的变量。如:int a = 20;
复合赋值运算符:
+=: a += 1 相当于 a = a+1
-=: b -= 2 相当于 b = b-2
*=: c = 3 相当于 c = c3
/=: e /= 4 相当于 e = e/4
%=: f %= 5 相当于 f = f%5
注意事项:
- 只有变量才能使用赋值运算符,常量不能进行赋值。
- 复合赋值运算符其中隐含了一种强制类型转换
比较运算符
注意事项:
- 比较运算符的结果一定是一个boolean值,成立为true,不成立为false
- 如果进行多次判断,不能连着写。
逻辑运算符
与 (并且) && 全都是true,才是true;否则就是false
或 (或者) || 至少一个是true,就是true;全都是false,才是false
非 (取反) ! 本来是true,变成false;本来是false,变成true
与“&&”。或“||”,具有短路效果:如果根据左边的的式子能够判断最终结果,那么右边的代码将不再执行,从而节省一定的性能。
注意事项:
- 逻辑运算符只能用于boolean值
- 与、或需要左右各自有一个boolean值,但是取反只要唯一的一个boolean值即可。
- 与、或两种运算符,如果有多个条件,可以连续写
两个条件:条件A && 条件B
多个条件:条件A && 条件B && 条件C
三元运算符
- 一元运算符:只需要一个数据就可以进行操作的运算符。例如:取反!、自增++、自减–
- 二院运算符:需要两个数据才可以进行操作的运算符。例如:加法+、赋值=
三元运算符:
需要三个数据才可以进行操作的运算符。
格式:
数据类型 变量名称 = 条件判断 ? 表达式A :表达式B;
流程:
首先判断条件是否成立:
如果成立为true,那么将表达式A 的值赋值给左边的变量;
如果不成立为false,那么将表达式B 的值赋给左侧的变量;
二选一
注意事项:
- 必须同事保证表达式A 和表达式B都符合左侧数据类型的要求。
- 三元运算符的结果必须被使用。
方法:
定义方法的格式:
public staric void 方法名称(){
方法体;
}
方法名称的命名规则和变量一样,使用小驼峰。
方法体:也就是大括号当中可以包含任何语句。
注意事项:
- 方法定义的先后顺序无所谓。
- 方法的定义不能产生嵌套包含关系。
- 方法定义好时,不会执行,如需执行,需要调用。
方法的调用格式:
方法名称();
编译器的两点优化:
对于比byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,
那么java编译器将会自动隐含地为我们补上一个(byte)(short)(char).
1. 如果没有超过左侧的范围,编译器补上强转
2. 如果右侧超过了左侧的范围,那么直接编译器报错。
在给变量进行赋值的时候,如果右侧的表达式当中全都是常量,没有任何变量,
那么编译器javac将会直接将若干个常量的表达式计算得到结果。
short result = 5+8; //等号右边全都是常量,没有任何变量参与运算
编译之后,得到的.class字节码文件当中相当于【直接就是】:
short result = 13;
右侧的常量结果数值,没有超过左侧的范围,所以正确。
这称为“编译器的常量优化”
**注意:**一旦表达式当中有变量参与,那么就不能进行这种优化。