------- android培训、java培训、期待与您交流! ----------
1、函数
什么是函数(方法):函数就是定义在类中的具有特定功能的一段独立小程序。
函数的格式
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数1,…){
执行语句;
return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该函数运算后的结果,该结果会返回给调用者。
2、函数的特点
定义函数可以将功能代码进行封装
便于对该功能进行复用
函数只有被调用才会被执行
函数的出现提高了代码的复用性
对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。
注意:
函数中只能调用函数,不可以在函数内部定义函数。
定义函数时,函数的结果应该返回给调用者,交由调用者处理。
3、函数的应用
明确要定义的功能最后的结果是什么?
在定义该功能的过程中,是否需要未知内容参与运算
4、函数的重载
概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
好处:方便于阅读,优化了程序设计。
5、数组的定义
概念:同一种类型数据的集合。其实数组就是一个容器。
好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
格式2:元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
6、内存结构
java分了5片内存:方法区,本地方法区,寄存器,栈内存,堆内存。
栈内存:存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:通过new建立的实例都存放在堆内存中。每一个实体都有内存地址值。实体中的变量都有默认初始化值。实体不在被使用,会在不确定的时间内被垃圾回收器回收。
7、数组操作常见问题
数组脚标越界异常(ArrayIndexOutOfBoundsException):访问到数组中不存在的角标时发生
空指针异常(NullPointerException):引用没有指向实体,却在操作实体中的元素。
8、数组常见操作
获取最值:
public static int getMax(int[] arr){
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if(arr[i]>max){
max= arr[i];
}
}
return max;
}
选择排序:
public static void selectSort(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[j] < arr[i] ){
inttemp = arr[i];
arr[i]= arr[j];
arr[j]= temp;
}
}
}
}
冒泡排序:
public static void bubbleSort(int[] arr){
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j]= arr[j+1];
arr[j+1]= temp;
}
}
}
}
折半查找:数组必须是有序的
public static int halfSelect(int[] arr,int x){
int min = 0;
int max = arr.length-1;
int mid;
while(arr[min] <= arr[max]){
mid= (min+max)>>1;
if(x<arr[mid]){
max=mid-1;
}
else if(x>arr[mid]){
min=mid+1;
}
else
return mid;
}
return -1;
}
进制转换:
优化后的代码:
public static void trans(int num,int target,int offset ){
if(num==0){
System.out.println(0);
return;
}
char[] cha={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E'};
char[] chs=new char[32];
int point = chs.length;
while(num!=0){
int m = num⌖
chs[--point]= cha[m];
num= num>>>offset;
}
for (int i = point; i < chs.length; i++) {
System.out.print(chs[i]);
}
例如十进制转二进制输入trans(num,1,1)
9、二维数组:
格式一:int[][] arr = new int[3][2]; 定义了名称为arr的二维数组,二维数组中有3个一维数组,每一个一维数组中有2个元素,一维数组的名称分别为arr[0], arr[1], arr[2],给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式二:int[][] arr = new int[3][]; 二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以对这个三个一维数组分别进行初始化,arr[0] = new int[3]; arr[1] = newint[1]; arr[2] = new int[2];
格式三:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};