1.Java数组
数组的创建
int(数据类型)[] arr(数组类型变量) = new int[10(数组的长度)];
数组的初始化
基本类型的数组创建后,其元素的初始值:byte、short
。char、int、long
为0;float
和double
为0.0;boolean
为false
。
可以在数组声明的同时进行初始化,例
int[] arr = {10,23,30,-10};
但此种方式只能用于声明时的吃石化,不能用于赋值。
数组的赋值
int[]arr
arr = new int[] {10,23.54}; //元素的个数即为数组的长度
数组的访问
int len = arr.length; //获取数组的长度
可以通过下标的方式访问数组中的每一个元素,下标从0开始,范围:0 ~ n-1
int tmp = arr[2];
2.Java方法
方法的声明
方法用于封装一段特定的逻辑功能。方法的主要要素有:方法名、参数列表和返回值。
...(修饰符) long(返回值类型) fac1(方法名) (int n)(参数列表) {
//方法体
}
方法要素---返回值
方法调用结束后可以返回一个数据,称之为返回值。
方法在声明时必须指定返回值的类型。
如果没有返回值,需将返回值的类型声明为void。
通过return语句返回,return语句的作用在于结束方法且将数据返回。
方法要素---参数列表
方法的参数是指:在调用时传递给方法,需要方法处理的数据。
在方法定义时需要声明该方法所需要的参数变量。
3.基础算法
Arrays核心API
JDK中的java.utils.Arrays 类提供对数组操作的一些列的方法。
Arrays.toString 方法用于字符串表示数组的元素。
Arrays.equals 方法用于比较两个数组的各个元素是否相等。
Arrays.sort 方法用于实现数组的排序。
Arrays.binarySearch 方法用于实现有序数组的二分法查找。找到后返回元素的下标值,没有返回负数。y有多个相等元素时不确定返回哪一个。
int[] arr1 = {12,34,67,23,67,45,67};
int[] arr2 = {12,34,23,67,46};
System.out.println(Arrays.toString(arr1)); //[12, 34, 67, 23, 67, 45, 67]
System.out.println(Arrays.equals(arr1,arr2)); //false
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1)); //[12, 23, 34, 45, 67, 67, 67]
int index = Arrays.binarySearch(arr1,67);
System.out.println(index); //5 或 2 或 7
-
数组复制
JDK提供数组进行复制的方法,即将一个数组中的各个元素值复制到另一个数组中;
Systemn.arraycopy(src,sccPos,dest,destPos,length)
src---要复制的源数组。
srcPos---从源数组复制的起始位置。
dest---复制到的目标数组。
destPos---复制到目标数组的起始位置。
length---要复制的元素的个数。
System.arraycopy(arr1,0,arr2,1,3);
System.out.println(Arrays.toString(arr2)); //[12, 12, 23, 34, 46]
-
数组扩展
数组的长度在创建后是不可改变的。所谓的扩展是指创建一个更大新数组并将原有数组的内容复制到其中。
String[] names = {"Ocsdf","Kojff","Pkfjjg","Ghddg","Fcsdf","Vojff","Skfjjg","Zhddg","Lgjgd","kevin"};
String[] names1 = names;
names = new String[names.length + 1];
System.arraycopy(names1,0,names,0,names1.length);
names[10] = "Kenny";
System.out.println(Arrays.toString(names));
//[Ocsdf, Kojff, Pkfjjg, Ghddg, Fcsdf, Vojff, Skfjjg, Zhddg, Lgjgd, kevin, Kenny]
- Arrays.copyOf方法 简便实现数组扩展。
String[] names = {"Ocsdf","Kojff","Pkfjjg","Ghddg","Fcsdf","Vojff","Skfjjg","Zhddg","Lgjgd","kevin"};
names = Arrays.copyOf(names,names.length+1);
names[10] = "Zhou";
System.out.println(Arrays.toString(names));
//[Ocsdf, Kojff, Pkfjjg, Ghddg, Fcsdf, Vojff, Skfjjg, Zhddg, Lgjgd, kevin, Zhou]
二进制基础
-
移位运算符
左移(<<)、算数右移(>>)、逻辑右移(>>>).
移位运算针对于整数做二进制位移动。int a = 8; a = a>>1; System.out.println(a); //4 相当于除2 a = a<<2; System.out.println(a); //16 相当于乘4 int b = -8; System.out.println(b>>>2); //1073741822 相当于将原数据看成无符号数,再除4 int bb = 8; System.out.println(bb<<33); //16 移位运算时,移位值将对32取模。此处的移位值为33%32=1