第五章
- 在较大的数之前先增加较小数是减小误差的一种方法。
第六章
- 方法签名(Method Signature)指方法名称、参数类型和参数数量。java编译器根据方法签名决定使用哪个方法。
- 调用方法时,java编译器寻找最精确匹配的方法。
- 对void方法的调用必须是一条语句
第七章
- 创建数组
datatype[ ] arrayRefVar= new datatype[arraySize];
或者
datatype arrayRefVar[ ] = new datatype[arraySize];
- 默认值
数值类型为0
字符类型为’\u0000’ //u后面为十六进制,必须4位写满
布尔类型为false
引用类型为null
- 初始化语法
double[ ] myList = {1.9, 2.9, 3, 3.5}//可以将int转化为double类型
或者
double[ ] myList;
myList = new double[ ] {1.9, 2, 3.4, 3.5} //可以将int转化为double类型
注意:使用初始化语法时,必须将声明、创建和初始化放在一条语句中。不然会产生语法错误。如下所示
double[] a = new double[4]; a[0] = 1; //正确 a= {1,2,3,4}; //错误 double[] b; b= {1,2,3,4}; //错误
- 增强的for循环
JDK 1.5引入新的for循环,可以不用下标就可以依次访问数组元素。语法:
for(elementType value : arrayRefVar) {
}
例如
for(int i = 0; i < myList.length; i++) {
sum += myList[i];
}
等价于
for(double value : myList) {
sum += value;
}
- 复制数组的方法
- 使用循环来复制每个元素
int[ ] sourceArray = {2,3,1,5,10}; int[ ] targetArray = new int[sourceArray.length]; for(int i = 0; i < sourceArray.length; i++){ targetArray[i] = sourceArray[i]; }
-
- 使用System.arraycopy方法:两个数组都预先实例化了
int[ ] sourceArray = {2,3,1,5,10}; int[ ] targetArray = new int[sourceArray.length]; System. arraycopy(sourceArray,0,targetArray,0, sourceArray.length);
-
- 调用数组的clone方法赋值:被赋值的数组变量可以没有实例化
int[ ] sourceArray = {2,3,1,5,10}; @SuppressWarnings("unused") int[ ] targetArray ; targetArray= sourceArray.clone();
- 可变长参数列表
可以把类型相同但个数可变的参数传递给方法。方法中的参数声明如下
typeName … parameterName
在方法声明中,指定类型后面跟省略号
只能给方法指定一个可变长参数,同时该参数必须是最后一个参数
Java将可变长参数当数组看待,通过length属性得到可变参数的个数
print(String... args){ //可看作String [ ]args
for(String temp:args)
System.out.println(temp);
System.out.println(args.length);
}
调用该方法
print("hello","lisi");
- Arrays类
sort和parallelsort方法
升序排序
double[ ] numbers={6.0, 4.4, 1.9, 2.9}; java.util.Arrays.sort(numbers, 0,4);//给部分数组排序,下表从0到4,包括0,不包括4 java.util.Arrays.sort(numbers);//给整个数组排序
binarySearch方法
数组必须提前升序排列。在数组中查找关键字,如果找到,返回下标,如果不存在,返回-(这个关键字在数组中应该存放位置下表+1)
int[ ] numbers={2, 4, 7, 10, 11, 45}; System.out.println(java.util.Arrays.binarySearch(numbers, 11)); //输出4 System.out.println(java.util.Arrays.binarySearch(numbers, 12)); //输出-6
equals方法
判断两个数组内容是否相等
int[] list1={2, 4, 7}; int[] list2={2, 4, 7}; int[] list3={4, 2, 7}; System.out.println(java.util.Arrays.equals(list1, list2)); //输出true System.out.println(java.util.Arrays.equals(list1, list3)); //输出false
fill方法
填充整个数组或部分数组
int[] list1={2, 4, 7, 10, 11}; java.util.Arrays.fill(list1, 5); System.out.println(java.util.Arrays.toString(list1)); //[5, 5, 5, 5, 5] java.util.Arrays.fill(list1, 1, 3, 6); System.out.println(java.util.Arrays.toString(list1)); //[5, 6, 6, 5, 5]
toString方法
double[ ] numbers={6.0, 4.4, 1.9, 2.9}; java.util.Arrays.sort(numbers, 0,4); System.out.println(java.util.Arrays.toString(numbers));
输出为:[1.9, 2.9, 4.4, 6.0]
第八章
二维数组的每个元素(数组)的长度可以不同。
语法new int[ ][ ]是错误的,必须指定第一个下标
int[][] list1=new int[4][5]; System.out.println(list1.length); //输出4 System.out.println(list1[1].length);//输出5