一,基本常识
1.1. 编译相关命令
javac
编译Java文件javac -encoding
编译Java文件,指定编码方式javadoc -d mydoc -author -version 1.java
生成Java Doc
1.2. 关于源文件
注释:
//单行注释
/* 多行注释 */
/** 文档注释 @author @version @param */
源文件以.java结尾,其中可以有多个class,但只有一个public class 且与文件名相同。 class中可以有静态main()方法,其格式固定。 注意识别关键字(关键字都是小写)
1.3. 关于标识符命名规范
标识符(可以自己命名的),对变量,方法,类,接口的命名等。 数字不可开头,区分大小写,不可含空格。 只能包含 A~Z,a~z,0~9,_,$ 包名:全小写,xxyyzz 类名,接口名:首字母大写 XxYyZz 变量,方法名:首字母小写,后面大写,xxYyZz 常量名:所有字母大写,且用 ‘_’ 连接,XX_YY_ZZ
二,数据类型及运算
2.1基本数据类型
2.1.1. 基本数据类型说明:
byte(1byte) , short(2byte) , int(4byte) , long(8byte)(L) 二进制表示(0B),十进制表示,八进制表示(0),十六进制表示(0x) float(4byte)(F) double(8byte) char(2byte) boolean(true or false);
2.1.2. 引用数据类型:
class
自定义类interface
自定义接口String
自定义字符串数组
自定义数组
2.1.3. 基本数据类型注意事项
字符串与基本数据类型之间的运算只能是连接运算 变量格式:数据类型 变量名 = 初始化值 隐式转换:byte,short,char==>int==>long==>float==>double,此逆过程需强制转换。 不同进制之间的转换方式:2进制,八进制,十进制,16进制。(计算机内部以补码形式存储)
2.2 运算
2.2.1算数运算符及其优先级:
优先级 运算符 1 () 2 +,- 3 ++,–,! (自运算) 4 *,/,%(取余,最后符号跟被模数相同) 5 +,- 6 >>,>>>,<< (位移运算) 7 <,>,>=,<= (比较运算) 8 ==,!= (比较运算) 9 & 10 ^ 11 | 12 && 13 || 14 ? :(返回值类型与后面两表达式类型一致) 15 =
2.2.2 关于运算的几点注意事项
java中传递机制:值传递
如array2=array1//把array1的栈空间地址值 传递给栈空间的array2 逻辑运算符:&,&&,|,||,!,^ 位运算符:&,|,~(反码),^(异或),>>,>>>(无符号右移),<< 比较运算符:== > < <== instanceof(类关系判定运算) 对于“==”符号的使用:
对于基本数据类型 ,为判断值 是否相等,两端数据类型可以不同 对于引用数据类型 ,a1.equals(a2)默认判断地址值 ,等同于a1==a2,如需要判断内容,需要重写equals()方法。 像String 包装类 File类Date类,这些类重写了Object类的equals()方法,从而可以直接用来比较实体内容。
三,流程控制
3.1 判断结构
if (){
else if (){
else {
switch (){
case a:
break ;
case b:
break ;
default :
break ;
}
3.2. 循环结构
for (int i=0 ;i<len;i++){
if (){
break ;
}else if (){
continue ;
}
}
label_name:for (;;){
for (;;){
if (){
break label_name;
}else if (){
continue label_name;
}
}
}
while ( ){
}
do {
}
while ();
四,数组:
4.1 数组声明:
String[] name1;
int name2[] ;
int [] [] name2d;
4.2 初始化:
name1=new String[]{"A" ,"B" ,"C" };
name2d=new int [][]{{"A" ,"B" },{"B" ,"C" }}
name2=new int [4 ];
name2[0 ]= ;
name2[1 ]= ;
...
name2d=new int [m][n];
name2d=new int [m][];
name2d[0 ]=new int [n0];
name2d[1 ]=new int [n1];
...
name1.length
name2d.length
name2d[i].length(第i+1 个最高级数组元素索引的次级数组长度)
4.3 关于数组的注意事项
对于byte short int long 默认初始化值为0 对于float double 默认初始化值为0.0 对于char 默认初始化值为空格 对于boolean 默认初始化值为false 对于引用类型变量,如String,默认初始化值为null 一维数组可以使用for循环遍历,二维数组可以使用嵌套for遍历 一维或多维数组在内存中的结构:栈(stack)存对象的引用,堆(heap)存对象数据
4.4. 数组常见异常:
下标越界: java.lang.ArrayIndexOutOfBoundsException
int [] a =new int [3 ];
System.print.out (a[3 ])
空指针异常: java.lang.NullPointerException
int a=new int [3 ];
a=null ;
Sring b=new String[3 ];
b[2 ].toString();
int c=new int [3 ][];
c[2 ][0 ]=2 ;
对于以上的异常,理解数组在栈堆的存放机制便可轻易理解。
4.5 数组的常用算法:
4.5.1 求max,min,avg,sum
略
4.5.2 copy:
int [] array =new int [j.length];
for (int i=0 ;i<array .length;i++){
array [i]=array1[i];
}
4.5.3 反转:
for (int i=0 ;i<array .length/2 ;i++){
int temp=array [i];
array [a]=i[array .length-1 -i];
array [array .length-1 -i]=temp;
}
for (int x=0 ,j=array .length-1 ;x<y;x++,y--){
int temp=array [x];
array [x]=array [y];
array [y]=temp;
}
4.5.4 排序
4.5.4.1 插入排序
4.5.4.2 交换排序
for (int i=0 ;i<array .length-1 ;i++){
for (int j=0 ;j<array .length-1 -i;j++){
if (array [j]>array [j+1 ]){
int temp=array [j];
array [j]=array [j+1 ];
array [j+1 ]=temp;
}
}
}
4.5.4.3 选择排序
直接选择排序(最左边的数依次跟右边的数对比,一轮后最小(大)的在左边)
for (int i=0 ;i<array .length-1 ;i++){
for (int j=i;j<array .length;j++){
if (array [i]>array [j]){
array [i]^=array [j];
array [j]^=array [i];
array [i]^=array [j];
}
}
}
4.5.4.4 归并排序
4.5.4.5 基数排序