第一部分 基本语法
1.关键字与标识符
1.1 关键字
关键字是Java语言中有特殊含义的词语,它包括了:
定义数据类型的关键字:class, enum, void, byte, short, int, long, float, double, char, boolean, interface;
定义流程控制的关键字:if, eles, while, do, switch, case, for, break, continue, default, return;
定义访问权限的关键字:private, protected, public;
类、函数、变量修饰符:abstract, final, static, synchronized;
类或者对象专用的关键字:extends, implements, new, this, super, instanceof;
异常处理的关键字:try, catch, finally, throw, throws;
其他关键字:package, import, native, strictfp, transient, volatile, assert.
1.2 标识符
标识符是用户位变量、方法、类编写的名称,标识符的命名有以下几点要求:
合法字符包括26个英文字母,数字,下划线“_”和“$”符号;
数字不可以放在开头,不可以使用关键字,不能包含空格;
大小写敏感。
此外,按照惯例以及为了代码美观,标识符的命名最好遵循以下规范:
包名:所有字母小写;
类名、接口名:所有单词首字母大写;
变量名、方法名:第一个字母首字母小写,之后大写;
常量名:所有字母大写。
2.Java的数据类型
Java的数据类型主要分为两类:内置数据类型、引用数据类型。
2.1 内置数据类型
主要分为八种,不同类型分配的存储空间不同:
byte:8位,有符号,(-128~127);
short:16位,有符号,(-32768~32767);
以上两种通常是在大型数组中代替int类型,以节约存储空间。
int:32位,有符号,(-231~-231-1),通常整数变量为int类型;
long:64位,有符号;
float:单精度浮点数,32位;
double:双精度浮点数,64位,是浮点数的默认类型;
boolean:1位,表示ture或者false,默认值位false,不可以用0来代替false;
char:16位,unicode字符,(\u0000~\uffff);
2.2 引用数据类型
类似于C++的指针,这一类型的变量都指向一个对象,可以说对象、数组、接口都是属于引用数据类型的。字符串是String类的一个对象,因此属于引用类。
3.Java的运算符
运算符和C语言基本上一致,不过因为总是忘记,所以特别记录以下几个方面:
“/”运算的两种情况,一是整数除,若两个除数都是整数,则结果直接去掉小数部分;二是小数除,如果两个除数中有小数,则输出完整的浮点数结果。
赋值符“=”当两边数据类型不一致时会进行数据转换,+=、-=之类的运算赋值符同理。
instanceof 是一种比较运算符,用于检查对象是否是某一类的实例。
三元运算符 ()?A:B; 这个式子中如果括号内表达式位true则跳转到A,反之则跳转到B。
4.Java流程控制
4.1 if-else
4.2 switch-case
switch表达式中的值必须是:byte, short, int, char, enum, String。
case中的值必须是常量。
4.3 for循环
与C语言基本类似:for(初始化;循环条件;迭代){循环体}。
4.4 while循环
与C语言基本一致。
4.5 do-while循环
4.6 break与continue的使用
break执行时直接终止当前语句块的执行,continue执行时跳过当前一次的执行。
第二部分 数组
1.数组概述
数组在内存中开辟一整块连续的空间,系统通过数组首地址与下标索引访问指定的元素。数组本身属于引用数组类型,但是数组元素可以是基本数据类型和引用数据类型。数组的长度一旦确定就不能修改。
2.数组使用
2.1 声明方式:
type[] var or type var[];
在声明数组时不能指定其长度。数组初始化主要分为两种方式:
动态初始化,首先在声明数组时为元素分配空间,然后再为元素赋值:
静态初始化,在定义数组的同时就为数组元素分配空间并赋值。
以上定义了一个String类型的数组,也即元素为引用类型的数组。
数组的长度是固定的,通过arr.length访问数组的长度。
2.2 多维数组
多维数组的声明方法:
多维数组arr[n] []可以看作是n个一维数组,每个一维数组的长度可以不相同,多维数组在声明时,必须要指定第一个维度的大小。
2.3 Array类
Java内部包含了一个Array类库,提供了许多方便的处理数组的方法。
void sort(Type array[]):将数组升序排序,使用了双pivot快速排序算法;
boolean equals(Type a[],Type b[]):判断两个数组是否相等;
String toString(Type array[]):将数组中的数字按照[a1,a2,a3,…]的顺序转化为字符串;
int binarySearch(int[] a,int key):对排序后的数组进行二分法检索指定的值。