方法的定义/调用/重载
1.1 方法一般用于完成特定功能的提取封装类似于其他语言的函数(function)
声明:
访问修饰符返回值方法名(形参列表) {
方法体
//如有返回值: return 返回值类型
}
修饰符:public private ...
返回值:byte short int long float double char boolean 引用类型
方法名:见名知意首字母小写遵循驼峰命名法
形参列表:数据类型+ 参数名...... 如:int number, double num......
方法体:具体业务逻辑代码
返回值:固定格式return + 返回值类型
方法的重载是指一个类中有多个方法名相同的方法但是参数类型参数个数不一样调用会根据参数的类型参数个数的不同匹配不同的方法
注意:方法的重载只和方法名形参列表有关跟返回值访问修饰无关
形参列表个数不同sum(int num)/ sum(int num1, int num2)
形参列表顺序不同sum(int num, double double) /sum(double doble, int num)
形参列表类型不同sum(int num)/ sum(double num)
public class Idea_ExampleTest {
public static void main(String[] args) {
int a =10;
int b =20;
System.out.println("输出交换前的两个数:"+ a + "---" + b);
//面试题:这个方法是否实现了两个数 a 和 b的交换如图:
changeNum(a, b);
System.out.println("输出交换后的两个数:"+ a + "---" + b);
sumTest();
sumTest(1);
sumTest(1.5555);
sumTest(1.55, 1);
sumTest(1, 1.55);
}
/**
* 交换两个值
* @param num1 交换值1
* @param num2 交换值2
*/
public static void changeNum(int num1, int num2){
int tempNum = num1;
num1 = num2;
num2 = tempNum;
}
public static void sumTest(){
System.out.println("sumTest重载!");
}
public static void sumTest(int num){
System.out.println("sumTest重载1!");
}
public static void sumTest(double num){
System.out.println("sumTest重载2!");
}
public static void sumTest(int num, double num2){
System.out.println("sumTest重载3!");
}
public static void sumTest(double num, int num2){
System.out.println("sumTest重载4!");
}
}
数组
3.1 数组的定义
数组是一组相同数据类型的集合数组描述的是相同类型的若干数据其中每一个数据操作为一个元素每个元素可以通过一个索引下标来访问他们
特点:
长度是固定的创建数组一定要设定数组大小并且他的大小是不可改变的
每个数据元素必须是相同数据类型不允许出现混合类型
数据类型可以是任何数据类型包括基础数据类型和引用类型
数组是有索引的默认从0开始 length -1结束
数组是引用类型即数组对象
数组是引用类型数组中的每一个元素相对于对象中的成员变量数组对象是在堆中的所以数组无论保存原始类型还是其他对象类型数据数组本身是堆存储的
初始化即定义:
静态初始化int[] arr = {1, 2, 3, 4, 5, 6} int[] arr = new int[]{1, 2, 3, 4, 5, 6} 注意: 用new创建数组不用在定义数组大小 错误列子: int[] arr = int[6]×{1, 2, 3, 4, 5, 6}
动态初始化int[] arr; arr = new int[3]; int[0] = 1; int[1] = 2;
默认初始化int arr = new int[4]; 基础数据类型默认值 byte[]/short[]/int[]/long[] == 0 float[]/double[] == 0.0 char[] == ‘\u0000’ boolean[] == false
二维数组的定义
2.1 本质全部都是一维数组 初始化也是如一维数组引用 列:默认初始化 int[][] arr = new int[2][3]; arr[0] = new int[]{1, 2, 3} arr[1] = {1, 2, 3}
Arrays工具类 系统提供的一个类 Arrays 我们常用来当工具类使用
toString:对数组进行遍历查看 返回一个字符串
BinarySearch: 二分查找使用二进制搜索算法搜索指定值的指定字节数组
asList:返回指定数组的固定大小列表
copyOf: 复制指定的数组
equals: 如果两个指定的数组彼此相等 则返回true
deepEquals: 如果两个相等的数组彼此深度相等 则返回true
fill: 将指定的值分配给指定数组值的范围的每一个元素
parallelSort: 按照数字顺序排列到指定的数组
stream: 返回指定数组作为源 后续
4 系统自带的数组拷贝操作 arrayCopy 具体看代码
import java.util.Scanner;
public class JavaSE_Array{
public static void main(String[] args){
//计算五位学生的平均分 总分
int[] _score = {60, 80, 90, 70, 85};
int _sum = 0;
for(int i = 1; i <= _score.length; i++){
_sum += _score[i - 1];
}
System.out.println("总分: " + _sum);
System.out.println("平均分: " + _sum/_score.length);
//练习--- 编写定义数组的两种方法
int[] _int1 = {5, 3, 6, 8, 2};
int[] _int2 = new int[5];
for(int i = 1; i <= _int2.length; i++){
//默认初始值为0
System.out.println("初始值: " + _int2[i - 1]);
}
//练习=--- 输出数列的值及所有数值的和 并且键盘输入一个数字比较数组种是否存在这个值
int[] _int3 = {8, 4, 2, 1, 23, 344, 1};
Scanner _sc = new Scanner(System.in);
int _checkval = _sc.nextInt();
int _curSum = 0;
boolean _isHasVal = false;
for(int i = 1; i <= _int3.length; i++){
int _curVal = _int3[i - 1];
System.out.println("值: " + _curVal);
_curSum += _curVal;
if(_curVal == _checkval){
_isHasVal = true;
}
}
System.out.println("int3和:" + _curSum);
System.out.println("是否存在这个值:" + _isHasVal + _curSum);
//数组拷贝
String[] _str = {"Mircosoft", "IBM", "Sun", "Oracle", "Apple"};
String[] _strBak = new String[6];
//拷贝 拷贝的数组 开始下标 拷贝存放的数组 结束的下标 拷贝的长度
System.arraycopy(_str, 0, _strBak, 0, _str.length);
for(int i = 1; i <= _strBak.length; i++){
//String默认值为空null
System.out.println("拷贝的数组值: " + _strBak[i - 1]);
}
}
}
三.可变参数
1. 可变参数作用提供了一个方法 参数的个数是不变的 解决了部分方法的重载问题
int...num /double...num /long...num
2. 可变参数在JDK1.5之后加入了新特性
3. 方法的内部堆可变参数的处理跟数组是一样的
4. 可变参数和其他数据一起作为形参的时候 可变参数一定要放在最后
5. 我们自己写代码的时候 建议能不使用可变参数就不使用
**总结**
本文简单介绍了方法 数组相关知识点
后续将会持续更新JAVA相关的知识点 案例 demo 资源 面试题...
希望对各位小伙伴有所帮助
刚开始有些东西排版不好 不太熟悉版块内容 多多谅解 后续会慢慢改善