一、静态方法

1.1含义

特定功能的代码块

1.2好处

减少代码的冗余,提高了代码的可读性和可维护性

1.3语法结构

访问修饰符 static 返回值类型 方法名(参数列表){
                        ...代码块...
  }

1.4注意

1.方法声明的位置:在类里
2.方法与方法之间是平级关系(千万不要在一个方法中声明另外一个方法)
3.方法中可以声明变量叫做局部变量,其作用域在方法内部(a方法中可以有int类型的变量i,b方法中也可以有int类型的变量i,不冲突)
4.方法不被调用,就是个摆设!(运行程序时,主方法是被JVM调用)

1.5无参数无返回值的方法

语法结构:
                public static void 方法名(){
                    ...代码块...
                }

1.6需求

设计一个方法,打印三角形

public class Test01{public static void main(String[] args){//调用静态方法(使用类名调用)Test01.run();Test01.play();Test01.run();Test01.run();Test01.play();Test01.run();method();method();}public static void method(){for(int i = 0;i<5;i++){for(int j = 0;j<=i;j++){System.out.print("*");}System.out.println();}}
}

1.7带参数的方法

语法结构:
     public static void 方法名(参数列表){
           ...代码块...
     }

设计思想:将外界的数据传入到方法内部

1.8注意

1.声明方法时,设置方法的参数,这个参数叫做形式参数(形参)
2.调用方法时,传入的具体参数,这个参数叫做实际参数(实参)
3.形式参数必须规定类型
4.形参属于该方法的局部变量
5.多个形参使用逗号分隔
6.实参的类型必须和形参兼容

1.9需求

设计一个方法,打印三角形,打印内容和行数由调用方指定

public class Test02{public static void main(String[] args){method("$",3);method("%",5);String str = "@";}public static void method(String str, int num){for(int i = 0;i<num;i++){for(int j = 0;j<=i;j++){System.out.print(str);}System.out.println();}}
}

需求:设计一个方法,传入两个int值,输出最大值

public class Test02{public static void main(String[] args){getMax(10,20);}public static void getMax(int a,int b){int max = (a>b)?a:b;System.out.println("最大值为:" + max);}}

1.11带参数的方法

语法结构:public static void 方法名(参数列表){...代码块...}

设计思想:将外界的数据传入到方法内部

1.12注意

1.声明方法时,设置方法的参数,这个参数叫做形式参数(形参)
 2.调用方法时,传入的具体参数,这个参数叫做实际参数(实参)
 3.形式参数必须规定类型

4.形参属于该方法的局部变量
 5.多个形参使用逗号分隔
 6.实参的类型必须和形参兼容

1.22需求

设计一个方法,打印三角形,打印内容和行数由调用方指定

import java.util.Scanner;
public class Test03{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("打印行数:");int a = scan.nextInt();//方法可以互相套用method(a);}public static void method(int a){for(int i=0;i<a;i++){for(int j=0;j<i;j++){System.out.print("*");}System.out.println();}}}

二、方法的重载

2.1含义

方法与方法之间的关系

条件:
            1.在同一个类中
            2.方法名一致
            3.参数列表的个数或者类型不一致
            4.与返回值无关

2.2好处

系统会根据传入的具体实参的类型和个数自动匹配到对应的方法

2.3应用场景

应用场景:在同一个类中,多个方法的功能大致一样(说明方法名可以是相同的),细节实现不一样,就可以考虑使用重载

2.4需求

设计一个方法,传入两个int值,返回最大值

设计一个方法,传入两个int值,返回最大值
设计一个方法,传入三个int值,返回最大值
设计一个方法,传入两个double值,返回最大值
设计一个方法,传入三个double值,返回最大值

public class Test04{public static void main(String[] args){//注意:可以直接打印方法,前提是该方法必须有返回值System.out.println(getMax(10.1,20.2,30.1));}public static int getMax(int a, int b){return (a>b)?a:b;}public static int getMax(int a, int b, int c){int max = getMax(a,b);max = getMax(max,c);return max;}public static double getMax(double a, double b){return (a>b)?a:b;}public static double getMax(double a, double b, double c){double max = getMax(a,b);max = getMax(max,c);return max;}}

三、方法的递归

3.1方法调用方法自身

public class Test05{public static void main(String[] args){method();}//递归的错误示范 - 栈内存溢出的错误//出现原因:调用方法就会在栈内存中开辟空间,用于存放该方法的局部变量,//         死循环的调用方法,就会使栈内存满载并溢出,最终导致项目崩溃public static void method(){method();}}

3.2需求

需求:设置一个方法,传入一个int值n,求n的阶乘
        
        5! = 1*2*3*4*5    -->    5! = 4!*5
        4! = 1*2*3*4    --> 4! = 3!*4
        3! = 1*2*3        --> 3! = 2!*3
        2! = 1*2        -->    2! = 1!*2
        1! = 1            --> 1! = 1
        
        找规律:n! = (n-1)! * n
        找出口:1! = 1

public class Test06{public static void main(String[] args){int num = method(5);System.out.println(num);//120}public static int method(int n){if(n == 1){return 1;}else{return method(n-1)*n;}}}

3.2.1递归理解图

需求:不死神兔
            有一对兔子,从出生后第3个月起每个月都生一对兔子,
            小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,
            问第n月的兔子对数为多少?

public class Test07{public static void main(String[] args){int num = getRabbit(9);System.out.println(num);}public static int getRabbit(int n){if(n == 1 || n == 2){   //先找到出口再找规律不然就会进入死循环  return 1;}else{return getRabbit(n-1) + getRabbit(n-2);}}}

四、一维数组

4.1含义

一组数据的集合(容器)

作用:存储多个数据

4.2概念

1.数组中的数据又叫做元素
2.每个元素都有编号叫做下标/索引
3.下标从0开始
4.数组是引用数据类型
5.数组一旦初始化后,长度不可以改变(意味着数组不可以添加和删除)
6.数组存放元素的空间是连续的

4.3数组声明

数据类型[] 数组名  => 例如  String[] 字符串数组   int[] 整型数组

4.4数组初始化

1.静态初始化:数据由程序员指定,系统自动分配空间
2.动态初始化

public class Test08{public static void main(String[] args){//静态初始化1//String[] names = new String[]{"椎名空","爱田奈奈","水野朝阳","铃原爱蜜莉","桃谷绘里香"};//静态初始化2:先声明,再初始化//String[] names;//names = new String[]{"椎名空","爱田奈奈","水野朝阳","铃原爱蜜莉","桃谷绘里香"};//静态初始化3:简化静态初始化1String[] names = {"椎名空","爱田奈奈","水野朝阳","铃原爱蜜莉","桃谷绘里香"};//通过下标设置元素names[2] = "高正";//通过下标获取元素String str = names[2];System.out.println("通过下标获取元素:" + str);//获取元素个数int len = names.length;System.out.println("获取元素个数:" + len);//5System.out.println("------------");//遍历数组:for循环for(int i = 0;i<names.length;i++){System.out.println(names[i]);}System.out.println("------------");//遍历数组:foreach/增强for循环//依次取出数组中的元素赋值给elementfor(String element : names){System.out.println(element);}/**for vs foreach循环遍历数组时,使用到下标了,就采用for循环循环遍历数组时,没有使用到下标,就采用foreach*/}}

4.4.1一维数组静态初始化内存图

4.41动态初始化:长度由程序员指定,系统自动分配默认值

整数类型默认:0
浮点类型默认:0.0
字符类型默认:' '
布尔类型默认:false
引用类型默认:null-空

静态初始化 vs 动态初始化
一开始就知道数据,就使用静态初始化
一开始只知道长度,就使用动态初始化

public class Test09{public static void main(String[] args){//动态初始化1//String[] names = new String[5];//开辟5个连续的空间//动态初始化2String[] names;names = new String[5];//通过下标设置元素names[0] = "aaa";names[1] = "bbb";names[2] = "高正";names[3] = "ccc";names[4] = "ddd";//ArrayIndexOutOfBoundsException - 数组下标越界异常//names[5] = "xxx";//通过下标获取元素String str = names[2];System.out.println("通过下标获取元素:" + str);//获取元素个数int len = names.length;System.out.println("获取元素个数:" + len);//5System.out.println("------------");//遍历数组:for循环for(int i = 0;i<names.length;i++){System.out.println(names[i]);}System.out.println("------------");//遍历数组:foreach/增强for循环//依次取出数组中的元素赋值给elementfor(String element : names){System.out.println(element);}/**for vs foreach循环遍历数组时,使用到下标了,就采用for循环循环遍历数组时,没有使用到下标,就采用foreach*/}}

4.5一维数组案列

需求:声明一个5个元素的int数组,获取最大值
注意:数组都是引用数据类型(int类型的数组也是引用数据类型)

public class Test10{public static void main(String[] args){int[] is = {45,66,13,28,55};//假设下标为0的元素是最大值int max = is[0];for(int i = 1;i<is.length;i++){if(max < is[i]){max = is[i];}}System.out.println("最大值为:" + max);}}

五、内存简介图

六、总结

1.静态方法(概念、好处、注意事项)
        无参数无返回值的方法
        带参数的方法(形参和实参)
        带返回值的方法(返回值类型)

2.方法的重载(含义、条件、应用场景)

3.方法的递归(找出口、找规律)

Java方法创建及调用--------06相关推荐

  1. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )

    文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...

  2. JAVA 方法定义及调用

    1.方法 方法是实现某个功能的一组语句,通常将常用的功能写成一个方法(类中的方法). 方法能实现代码的模块化重用. 方法相当于函数,类似于加工厂.参数=原材料:方法体=加工:返回值(return)=出 ...

  3. java方法定义 与调用_Java方法的定义及调用

    Java方法的定义及调用 通过以上内容的学习,可以看出方法是一段可以完成某个特定功能的并且可以被重复利用的代码片段.接下来我们来学习一下方法应该怎么定义以及怎么调用. 定义/声明方法的语法格式如下所示 ...

  4. java方法被编译器调用_我异常了,快来捕获我,Java异常简述

    在我们日常编程中,异常处理是必不可少的,异常处理是否得当关系到程序的健壮性和后续维护成本. 试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设 ...

  5. 10、Java 方法的递归调用详解(递归调用的分析和案例:阶乘、斐波那契、猴子吃桃)

    文章目录 一.递归缩写 二.递归调用 (1) 递归方式求累加和 (2) 递归内存分析 三.递归调用(概念) 四.递归调用举例 五.递归注意事项 六.斐波那契数列 七.猴子吃桃 一.递归缩写

  6. JNI中C调用Java方法

     我们需要在JNI的C代码调用Java代码.实现原理:使用JNI提供的反射借口来反射得到Java方法,进行调用. JNI关键方法讲解. 1. 在同一个类中,调用其他方法 JNIEXPORT voi ...

  7. android jni 结构体_Android应用开发Android JNI-c/c++调用java方法

    本文将带你了解Android应用开发Android JNI-c/c++调用java方法,希望本文对大家学Android有所帮助. " Android   JNI-c/c++调用java方法, ...

  8. 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )

    文章目录 I . Native 调用 Java 方法 II . JNIEnv *env 与 jobject instance III . JavaVM *vm IV . 局部引用 与 全局引用 分析 ...

  9. java library jna_Java JNA 调用dll库

    JNA JNA(Java Native Access )提供一组Java工具类用于在运行期间动态访问系统本地库(native library:如Window的dll)而不需要编写任何Native/JN ...

最新文章

  1. 浅谈对敏捷开发的初期理解
  2. storm_常用命令
  3. 【机器学习算法专题(蓄力计划)】八、机器学习中数据的方差分析
  4. jvm(3)-垃圾收集器与内存分配策略
  5. 网络口协商_以太网端口协商原理
  6. UIToolBar使用示例
  7. vb导出mysql字段名_VB获取数据库字段名
  8. 华为od机考真题-平安果
  9. python学习之编写学员管理系统
  10. 151308-48-4,Cyclo(-Gly-Asn-Trp-His-Gly-Thr-Ala-Pro-Asp)-Trp-Val-Tyr-Phe-Ala-His-Leu-Asp-Ile-Ile-Trp
  11. (C语言)有一个已排好序的数组,要求输入一个数字后,按原来的排序规律将它插入数组
  12. 汇编总结:无符号除法,有符号除法,取余,无符号乘法,有符号乘法指令
  13. python数据分析与可视化从入门到精通_零基础学Python爬虫、数据分析与可视化从入门到精通...
  14. 生僻字_tte_linux_ttf_提取字体_打印生僻字_uni
  15. 大脑皮质网络中社区内和社区间同步与相关性的竞争|Competition between intra-community and inter-community synchronization...
  16. 19.通证的分类(各种分类一览表)
  17. torch的Conv1D
  18. 使用 advanced installer 为 winform 做自动更新
  19. IBM 发布全球首个 2nm 芯片制造技术
  20. 能量守恒(能量是怎么来的)

热门文章

  1. excel一列前加一固定值
  2. Python哪些基础知识必学?
  3. 亚马逊asin关键词排名追踪_图文实操:手把手教你优化亚马逊关键词的自然排名!...
  4. Leetcode 变位词组
  5. Flink on yarn集群HA配置
  6. 关于Android证书MD5获取
  7. 电路——判断电压源和电流源是发出还是吸收功率
  8. 三星集团继承人李在镕将接受韩国检方质询
  9. 一般总账科目 调整 为统驭科目时报错:只以本位币计的统驭科目余额未定义
  10. 字节一面:“为什么网络要分层?每一层的职责、包含哪些协议?”