文章目录
- @[toc]
- 1️⃣ 一、方法
- 🚋 1、什么是方法
- 🎈 2、方法的定义与调用
- ==**定义**==基本格式:
- 🌈 3、方法的重载
- 🪁4、可变参数
- ⚽5、递归
- 2️⃣ 二、数组
- 🚋 1、什么是数组
- 🎈 2、Java内存分析
- 🌈 3、数组的特殊使用
- 🪁4、多维数组
- ⚽5、Arrays类
- **说在最后📝*:*****
1️⃣ 一、方法
🚋 1、什么是方法
方法的本意是功能块,就是实现某个功能的语句块的集合。在设计方法的时候,最好保持方法的原子性,一个方法中只完成一个功能,这样利于我们后期的扩展。
🎈 2、方法的定义与调用
==定义==基本格式:
修饰符 返回值类型 方法名 (参数类型 形式参数名){
方法体;
return 返回值;//与返回值类型相符
}
public class Main {
public static void main(String[] args) {
System.out.println(add(1,2));//方法的调用
}
//方法的定义
public static int add(int a, int b) {
return a+b;
}
}
🌈 3、方法的重载
重载就是在一个类中,有相同的函数名,但形参不同的函数。
方法重载的规则:
- 方法名称必须相同;
- 参数列表必须不同(个数不同、类型不同或者参数排列顺序不同);
- 方法的返回类型可以相同也可以不同;
- 仅返回值类型不同不足以成为方法的重载。
Java是如何实现方法的重载的?
当检测到方法名称相同是,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
public class Main {
public static void main(String[] args) {
System.out.println(add(1, 2));
System.out.println(add(1,2,3));
System.out.println(add(1.0,2.0));
System.out.println(add(1,2.0));
System.out.println(add(2.0,1));
}
public static int add(int a, int b) {
return a + b;
}
//个数不同
public static int add(int a, int b, int c) {
return a + b + c;
}
//类型不同
public static double add(double a,double b){
return a+b;
}
//参数排列顺序不同
public static int add(int a,double b){
return (int)(a-b);
}
public static int add(double b,int a){
return (int)(a-b);
}
}
🪁4、可变参数
- JDK 1.5 开始,Java支持传递同类型的可变参数给一个方法;
- 在方法的声明中,在指定参数类型后加一个省略号;
- 一个方法中只能指定一个可变参数,它必须是方法最后的一个参数,任何普通的参数必须在它之前声明,
Vararg parameter must be the last in the list
。
public class Main {
public static void main(String[] args) {
sum(1, 2, 3, 4);
}
public static void sum(int a, int... b) {
int sum = a;
for (int c : b) {
sum += c;
}
System.out.println("sum=" + sum);
}
}
⚽5、递归
方法自身嵌套调用 循环的基数有限,否则CPU承受不了
- 递归头:什么时候停止调用自身方法,如果没有头,将陷入死循环;
- 递归体:什么时候开始调用自身方法。
- 可以把一个大型复杂的问题层层转化为一个与原问题相似的规模小的问题来求解。
public class Main {
public static void main(String[] args) {
System.out.println("5! = "+f(5));
}
//求解5的阶乘: 5 * 4 * 3 * 2 * 1
public static int f(int n){
if(n==1){//---->递归头 : n = 1 的时候停止
return 1;
}
return n*f(n-1);//----->递归体 : n != 1 的时候开始
}
}
2️⃣ 二、数组
🚋 1、什么是数组
- 数组是相同数据类型的有序集合,数组元素可以通过对应的下标来访问;
- 其长度是确定的,数组一旦被创建,它的大小就是不可以改变的;
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型,如:数组和对象;
- Java中数组对象本身是在堆中的;
- 创建数组:
public class Main {
public static void main(String[] args) {
//静态
//数组类型 数组名 = 数组值
int [] a = {1,2,3};
int b[] ={1,2,3};//----->不推荐
//动态
int [] c = new int[10];
//获取数组长度
int length = a.length;
}
}
🎈 2、Java内存分析
分析 | |
堆 | 存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用 |
栈 | 存放基本变量类型(包含这个基本类型的具体数值),引用对象的变量(会存放这个引用在堆里面的具体地址) |
方法区 | 可以被所有的线程共享,包含了所有的class和static变量 |
🌈 3、数组的特殊使用
- 增强for中的使用
public class Main {
public static void main(String[] args) {
int [] a = {1,2,3,4,5};
for(int c : a){
System.out.println(c);
}
}
}
- 数组作为方法的参数
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
System.out.println(sum(a));
}
public static int sum(int[] a) {
int sum = 0;
for (int b : a) {
sum += b;
}
return sum;
}
}
- 数组作为方法的返回值
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5};
// System.out.println("反转后:" + Arrays.toString(reverse(a)));
for(int c : reverse(a)){
System.out.print(c+" ");
}
}
public static int[] reverse(int[] a) {
int[] result = new int[a.length];
for (int i = 0,j = a.length-1; i<a.length; i++,j--) {
result[j] = a[i];
}
return result;
}
}
🪁4、多维数组
本质:数组的数组
一维数组 —— int [] a = {1,2,3,4,5,6,7,8,9}
二维数组 —— int [] [] a = {{1,2,3},{4,5,6},{7,8,9}}
⚽5、Arrays类
数组工具类 java.util.Arrays
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,同样可以使用对象来调用,但不推荐。
常用功能 :
sort方法,升序排列
equals方法,比较数组中的元素是否相等
toString方法,返回指定数组的内容的字符串表示形式