2.1 关键字 & 保留字
被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词)
2.2 标识符
凡是自己可以起名字的地方都叫标识符。
通常有:类名、变量名、方法名。。。。包名、接口名、。。。
规则:(必须按照如下的规则执行,一旦某规则不符合,编译运行时就会出问题)
由26 个英文字母大小写,0-9 ,_或 $ 组成数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java 中严格区分大小写,长度无限制。
标识符不能包含空格。
命名的习惯:(如果不遵守,实际上程序编译运行也不会出问题)
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个
单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
2.3 变量
1.变量的分类
1)存在的位置的不同:成员变量(属性、Field)(存在于类内部,方法体的外部)
和局部变量(方法体的内部、
构造器的内部、代码块的内部、方法体或构造器的形参部分)
2)数据类型的不同:
基本数据类型(8 种)
整型:byte(1 个字节)、short、int(默认值类型)、long(后缀是 l 或 L)。
浮点型:float(后缀是 f 或 F)和 double(默认值类型)。
布尔型:boolean (只有两个值:true 和 false,绝对不会取值为 null)
字符型:char(1 个字符)
引用数据类型:类(比如:String 字符串类型)、接口、数组
2.如何声明:
变量的类型 变量的名字 初始化值(显式的初始化、默认初始化)
int i;
i = j + 12;
boolean b = false;
String str = “wxkj”;
Customer c = new Customer();
3.变量必须先声明后使用
4.使用变量注意:
变量的作用域:一对{ }之间有效
初始化值
5.自动类型转化&强制类型转化(重点)(不包含 boolean 型,及 String 型)
1)强制类型转化时,可能会损失精度。
2.4 进制
十进制
二进制
八进制
十六进制
1.进制之间的转化:
会将-128 到 127 范围内的十进制转化为二进制 & 能将一个二进制数转换为十
进制数(延伸:十进制、二进制、八进制、十六进制)
2.对于几类基本类型的数据的某个具体值,能够用二进制来表示。同时,如果给
出一个数据的二进制,要能够会
转化为十进制!
正数:原码、反码、补码三码合一。
负数:原码、反码、补码的关系。负数在计算机底层是以补码的形式存储的。
2.5 运算符
算术运算符
赋值运算符
比较运算符(关系运算符)
逻辑运算符
“&”和“&&”的区别:&:当左端为 false 时,右端继续执行
&&:当左端为 false 时,右端不再执行
“|”和“||”的区别:|:当左端为 true 时,右端继续执行
||:当左端为 true 时,右端不再执行
位运算符
<< >> >>> & | ^ ~
三元运算符
1.三元运算符与 if-else 语句的联系
1)三元运算符可以简化 if-else 语句
2)三元运算符一定要返回一个结果。结果的类型取决于表达式 1 和 2 的类
型。(表达式 1 和 2 是同种类型的)
3)if-else 语句的代码块中可以有多条语句。
2.6 流程控制
条件判断:
if(表达式 1){
//执行语句
}else if(表达式 2){
//执行语句
}else{
//执行语句
}
1.一旦执行条件判断语句,有且仅有一个选择“路径”里的代码块被执行。
2.如果多条表达式间是“互斥”关系,彼此是可以调换顺序。
如果多条表达式间存在“包含”关系,一定要将范围小的表达式写在范围大的
表达式对应的语句的上面。
3.选择判断语句可以“嵌套”
4.若执行语句只有一句,那么对应的一对{}可以省略。
选择结构:switch-case
1.结构
2.表达式可以存放的数据类型:int byte short char String 枚举
3.表达式存放是数值或者说是离散的点所代表的常量,绝对不是取值范围。
3.default 是可选的。default 的位置也不是固定的,当没有匹配的 case 时,执行 default
4.break 在 switch-case 中的使用。当执行到某条 case 语句后,使用 break 可以跳
出当前的 switch 语句。
如果此 case 中没有 break,那么,程序将依次执行下面的 case 语句,直至程序
结束或者遇到 break。
【switch-case 与 if-else if-else 的联系】
1.表达式是一些离散的点,并且取值范围不是很大,要求是 int byte short char
String 枚举类型之一。
建议使用 switch-case。执行效率更高
2.如果表达式表示的是范围(或区间)、取值范围很大,建议使用 if-else if-else
循环结构:①初始化条件②循环条件部分③循环体部分④迭代部分
1.for 循环
for(①;②;④){
③
}
执行顺序:①-②-③-④-②-③-④-…-②-③-④-②截止
//死循环:
for(;;
//要循环执行的代码。
}
2.while 循环
①
while(②){
③
④
}
//死循环:
while(1>0){
//要循环执行的代码
}
注意:for 循环和 while 循环之间可以相互转化!
3.do-while 循环
①
do{
③
④
}while(②);
//程序至少执行一次!
掌握:1.会使用 for 循环和 while 循环
2.能够实现 for 循环和 while 循环的相互转化。
循环可以相互嵌套
例题 1.九九乘法表;
例题 2.输入 1-1000 之间的所有质数
2.7 关键字:break & continue
break
1.使用范围:循环结构或 switch-case 结构中。
2.在循环结构中:一旦执行到 break,代表结束当前循环。
continue
1.使用范围:循环结构
2.在循环结构中:一旦执行到 continue,代表结束当次循环。
相同点:如果 break 或 continue 后面还有代码,那么这些代码将不会被执行。所以当有代码,编译会出错!
如何使用标签,实现结束指定“层次”的循环。(理解)
例题:
class Test{
public static void main(String[] args){
for(int i = 1 ;i <= 100;i++){
2.8 数组
1.如何创建一维数组
1)数组的声明: int[] i ; String[] str; Animal[] animal;
2)数组的初始化:
①动态初始化:i = new int[4]; //i[0]开始,至 i[3]结束。默认初始化值都为 0;
i[0] = 12;i[1] = 34;…
②静态初始化:str = new String[]{“山西”,“维信科技”,“java1085 班”};
//也是先有默认初始化赋值,然后显示的初始化,替换原来的默认初始化值//对于引用数据类型来说,默认初始化值为 null。
//对于基本数据类型来说: byte、short、int :0 long :0L float : 0.0F double :
0.0 char :’\u0000’ boolean : false 引用类型:null
2.数组元素的下角标从 0 开始。
- float[] f = new float[]{1.2F,3.4F,5.6F};
double[] d = new double[4]; d[1] = 3.4;…
4.数组的长度: .length;
5.数组的遍历:(习惯使用 for 循环)
for(int i = 0 ;i < f.length;i++){
System.out.print(f[i] + “\t”);
}
6.常见的异常:
1)ArrayIndexOutOfBoundsException :数组下标越界异常 下标从 0 开始,到
length-1 结束。如果下角标的取值不在此范围内,将报此异常
2)空指针异常(NullPointerException)
2.二维数组
①动态初始化:
—> int[][] i = new int[3][]; i[0] = new int[2]; i[1] = new int[3]; i[1] = new int[4];
—>String[][] str = new String[2][4];
② 静态初始化:
int[][] i = new int[][]{{1,2,3},{3,4},{0}};
2)遍历(补充完整)
7.数组常用的算法:最大值、最小值、和、平均数、排序(涉及数据结构中各种排序算法)、复制、反转。
8.Arrays:操作数组的工具类
Array.sort(数组类型形参); 可以对形参部分的数组进行排序,默认是从小到
大的顺序。