基本语法
1. 标识符的使用
规则
(1)由26个英文字母大小写,0-9,_或$组成;
(2)数字不可以开头;
(3)不可以使用关键字和保留字,但能包含关键字和保留字;
(4)Java中严格区分大小写,长度无限制;
(5)标识符不能包含空格。
规范
(1)包名:多单词组成时字母都是小写:xxxyyyzzz;
(2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz;
(3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz;
(4)常量名:所有字母大写,多单词组成时,单词之间用_连接:XXX_YYY_ZZZ。
注意
在起名字时,为了提高阅读性,要尽量“见名知意”。
2. 变量的使用(重点)
变量的分类
(1)按数据类型分
①基本数据类型: byte、short、int、long、float、double、char、boolean
②引用数据类型:类(字符串在这里)、接口、数组
(2)按声明的位置分(了解)
①在方法体外,类体内声明的变量称为成员变量
②在方法体内部声明的变量称为局部变量
变量类型转换
(1)涉及到的基本数据类型
①整型
<1> byte(1字节,8bit,-128 ~ 127)short(2字节)int(4字节)long(8字节); <2> 通常情况下,我们习惯将整型定义为int型; <3> 定义long型变量时,必须以“l”或“L”结尾; <4> 整型的常量,默认为int型。
②浮点型
<1> float(4字节)double(8字节); <2> float表示的数值的范围要大于long表示的数值的范围; <3> 通常情况下,我们习惯将浮点型定义为double型; <4> 浮点型的常量,默认为double型。
③字符型
<1> char(2字节); <2> 通常情况下,字符型使用一对''; <3> 还有一种常见的赋值方式:char c = 65。
④布尔型
<1> 只能有两种取值:true或false <2> 不能赋值为null等; <3> 常使用在流程控制语句中:条件判断、循环中
关于 boolean 占几个字节,网上众说纷纭。虽然 boolean 表现出非 0 即 1 的 "位" 特性,但是存储空间的基本计量单位是字节,不是位,所以 boolean 至少占 1 个字节。JVM 规范中,boolean 变量当作 int 处理,也就是 4 字节;而 boolean 数组当作 byte 数组处理,即 boolean 数组里的每个元素占 1 个字节。
(2)自动类型转换(只涉及7种基本数据类型,除去了boolean)
规律:byte、short、char ---> int ---> long ---> float ---> double;
特别的:如果是byte、short、char之间做运算,结果都为int;
说明:此时所指的容量,是指数据类型表示的数的范围的大小,而非内存存储空间的大小。
(3)强制类型转换
适用场景:将容量大的数据类型的变量,转换为容量小的数据类型的变量,需使用强制转换符()。
说明:①强制类型转换,看做是自动类型提升的逆过程;②使用强制类型转换可能出现的的问题 --- 精度损失。
(4)String与8种基本数据类型间的运算
- ①String属于引用数据类型中的类;
- ②String类型的变量,使用一对””;
- ③String可以与8种基本数据类型做运算,但只能使用连接运算符:+做连接运算;
- ④运算结果,仍然是String类型。
举例:
String s1 = 123 + "";// int --> String
Int i1 = Integer.parseInt(s1);// String --> int
3. 运算符
- 算术运算符
+ - + - * / % (前)++ (后)++ (前)-- (后)-- + (连接运算符,只适用于String 和其他类型间)
强调:后++/后--的过程分析
举例:
int a = 10;
a = a++;
System.out.println(a); // 结果:10。
// 过程分析:①a++整体 = 10;②a = 11;③a++这个整体赋值给a --> a = 10;(赋值在最后一步)
- 赋值运算符
= += -= *= /=
- 比较运算符(关系运算符)
== != > < >= <= instanceof
说明:比较运算符计算的结果都为boolean型。
- 逻辑运算符
&(且) && |(或) || !(非) ^(异或)
- 位运算符
<< >> >>> & ^ |
面试题:你能否写出最高效的2*8的实现方式?答案:2<<3 或 8<<1
特别说明:
<<:在一定范围内,每左移一位,相当于原有的数值*2;
>>:在一定范围内,每右移一位,相当于原有的数值/2;
>>>:右移以后,最高位不管是正数还是负数,都拿0补。
- 三元运算符
格式:(条件表达式)?表达式1 : 表达式2
说明:要求 表达式1 和 表达式2 的数据类型保持统一
4. 流程控制
- 顺序结构:程序从上到下执行
- 分支结构:if...else、switch...case
- 循环结构:for、while、do...while