Java基础学习笔记_基础语法3

1.函数
1)定义:定义在类中的具有特定功能的一段独立的小程序;
2)格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2){
执行语句;
return 返回值;
}
3)特点
**可以将功能代码进行封装;
**便于对该功能进行复用;
**函数只有被调用才会被执行;
**函数的出现提高了代码的复用性;
**对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句可以省略不写,
如果写的话就是return;
2.函数重载
特点:与返回值类型无关,只看参数列表,即:参数个数和参数类型;
好处:方便于阅读,优化了程序设计;
3.数组
定义:同一种类型数据的集合。
其实数组就是一个容器,它的好处就是可以从0开始编号,方便操作这些元素;
数组是一个变量,存储相同类型的一组数据;
数组是在对内存中创建的,我们没有给其赋值,系统会默认给其赋值。
数组静态初始化:int[] arr = {1,2,3,4};
数组动态初始化: int[] arr = new int[5];
4.内存结构分析
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放;
堆内存: 1)数组和对象通过new创建的实体都存放在对内存中;
2)每一个实体都有内存地址值。
3)实体中的变量都有默认初始化值;
4)实体不再被使用,会在不确定的时间内被垃圾回收器回收!
5 选择排序
for(int x = 0 ; x < arr.length - 1 ; x++){
for(int y = x + 1 ; y < arr.length ; y++){
int temp = arr[x];
arr[x] > arr[y];
arr[y] = temp;
}
}
6.冒泡排序 轻的上浮,重的下沉
for(int x = 0 ; x < arr.length ; x++){
for(int y = 0 ; y < arr.length -1 -x ; y++){ // -1防止数组下标越界 -x 提高效率
if(arr[y] > arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y + 1] = temp;
}
}
}
实际开发中使用 Arrays.toString(arr);语句来打印数组
Arrays.sort(arr); 用来给数组排序
7.二分查找 ---有序数组
思路:最小角标是0,最大角标是arr.length - 1
计算下标的平均值,然后再将要查找的key与arr[mid]进行比较
如果key > arr[mid],min = mid + 1;重新计算mid的值然后再进行比较;
如果 key < arr[mid], max = mid - 1,然后重新计算mid的值 再进行比较
public int halfSearch(int[] arr,int key){
int min = 0;
int max = arr.length - 1;
while(min <= max){
int mid = (min + max) >>>1;
if(key > arr[mid]){
min = mid + 1;
}else if(key < arr[mid]){
max = mid - 1;
}else{
return mid;
}
}
return -1 ;
}
8. 数组反转(reversal)
算法1:
public static void revArray(int[] arr){
for(int start = 0 , end = arr.length -1 ;start < end ; start++,end--){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
算法2:
public static void revArray(int[] arr){
for(int i = 0; i < arr.length /2 ; i ++){
int temp = arr[i];
arr[i] = arr[arr.length - 1 -i];
arr[arr.length-i-1] = temp;
}
}
9. 查表法将十进制转化成十六进制
char[] ch = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr = new char[8];
public void toHex(int num){
int x = arr.length - 1;
while(num > 0){
int temp = num & 15;
arr[x] = ch[temp];
x--;
num = num >>> 4 ;
}
for(int i = x + 1; i < arr.length; i++){
System.out.print(arr[i]);
}
}
10.二维数组
二维数组格式
格式1:int[][] arr = new int[2][3];
定义了名称为arr的二维数组,二维数组中有2个一维数组,每个一维数组中有3个元素;
一维数组的名称分别为:arr[0]、arr[1]
格式2:int[][]arr = new int[3][];
此时如果执行:System.out.println(arr[0]); 结果为null
二维数组中有3个一维数组,每个一维数组的默认初始化值为null,可以对这三个数组分别进行初始化:
arr[0] = new int[5];
arr[1] = new int[3];
arr[2] = new int[2];
格式3:int[][] = {{1,2,3},{2,7},{9,0,1,6}};
for(int x = 0 ; x < arr.length ; x++) { //遍历每个数组
for(int y = 0; y < arr[x].length ; y++){ //遍历每个数组元素
System.out..println(arr[x][y]);
}
}
易错题:
int[] y,x[]; //这个声明表明:y是一维数组,x是二维数组;
1) x = y; //错误
2) x[0] = y ; //正确
3) x[0] = y[0] ; //错误
4)x = y[0]; //错误
5)x[0][0] = y[0]; //正确
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值