【狂神说Java】Java零基础学习笔记-Java方法

Java方法01:何谓方法?

  • System.out.println(),那么它是什么呢?

  • Java方法是语句的集合,它们在一起执行一个功能。

    • 方法是解决一类问题的步骤的有序组合
    • 方法包含于类或对象中
    • 方法在程序中被创建,在其他地方被引用
  • 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。

  • 回顾:方法的命名规则?

    驼峰命名规则

package com.dawnsmile.method;

public class Demo01 {
//main方法
public static void main(String[] args) {
//实际参数:实际调用传递给他的参数
int sum = add(1,2);
System.out.println(sum);
System.out.println("===================="); test();
} //加法
//形式参数,用来定义作用的
public static int add(int a,int b){
return a+b;
} //test
public static void test(){
for (int i = 0; i <= 1000; i++) {
if (i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){ //每行
System.out.println();
//System.out.println("\n");
}
}
}
} 3
====================
0
5 10 15
20 25 30
... ... ...
980 985 990
995 1000

Java方法02:方法的定义

  • Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:
  • 方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
    • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
    • 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
    • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
    • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指力法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
      • 形式参数:在方法被调用时用于接收外界输入的数据。
      • 实参:调用方法时实际传给方法的数据。
    • 方法体:方法体包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名(参数类型参数名){
...
方法体
...
return 返回值;
}

方法调用

  • 调用方法:对象名.方法名(实参列表)

  • Java支持两种调用方法的方式,根据方法是否返回值来选择。

  • 当方法返回一个值的时候,方法调用通常被当做一个值。例如:

    int larger = max(30,40);
  • 如果方法返回值是void,方法调用一定是一条语句。

    System.out.println( "Hello,kuangshen! ");
  • 课后拓展了解:值传递(Java) 和 引用传递

package com.dawnsmile.method;

public class Demo02 {
public static void main(String[] args) {
int max = max(10,20);
System.out.println(max);
} //比大小
public static int max(int num1,int num2){
int result = 0; if (num1==num2){
System.out.println("num1==num2");
return 0; //终止方法
} if (num1>num2){
result = num1;
}else {
result = num2;
} return result;
}
} 20

Java方法03:方法的重载

  • 重载就是在一个类中,有相同的函数名称,但形参不同的函数
  • 方法的重载的规则:
    • 方法名称必须相同。
    • 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
    • 方法的返回类型可以相同也可以不相同。
    • 仅仅返回类型不同不足以成为方法的重载。
  • 实现理论:
    • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
package com.dawnsmile.method;

public class Demo02 {
public static void main(String[] args) {
int max1 = max(10,20);
System.out.println(max1);
System.out.println("===================="); double max2 = max(10.0,20.0);
System.out.println(max2);
} //比大小(int)
public static int max(int num1,int num2){
int result = 0; if (num1==num2){
System.out.println("num1==num2");
return 0; //终止方法
} if (num1>num2){
result = num1;
}else {
result = num2;
} return result;
} //比大小(double)
public static double max(double num1,double num2){
double result = 0; if (num1==num2){
System.out.println("num1==num2");
return 0; //终止方法
} if (num1>num2){
result = num1;
}else {
result = num2;
} return result;
}
} 20
====================
20.0

Java方法04:命令行传参

  • 有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。

    public class CommandLine {
    public static void main(String args[]){
    for(int i=0; i<args.length; i++){
    System.out.println("args[" + i + "]: " +args[i]);
    }
    }
    }
Microsoft Windows [版本 10.0.22631.2048]
(c) Microsoft Corporation。保留所有权利。 D:\Java\demo\基础语法\src\com\dawnsmile\method>javac Demo03.java D:\Java\demo\基础语法\src\com\dawnsmile\method>cd.. D:\Java\demo\基础语法\src\com\dawnsmile>cd.. D:\Java\demo\基础语法\src\com>cd.. D:\Java\demo\基础语法\src>java com.dawnsmile.method.Demo03 D:\Java\demo\基础语法\src>java com.dawnsmile.method.Demo03 this is dawnsmile
args[0]: this
args[1]: is
args[2]: dawnsmile D:\Java\demo\基础语法\src>

Java方法05:可变参数

  • JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。

  • 在方法声明中,在指定参数类型后加一个省略号(.…)。

  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

    public static void printMax( double... numbers) {
    if (numbers. length == 0) {
    System.out.println("No argument passed");
    return;
    } double result = numbers[0]; //排序!
    for (int i = 1; i < numbers.length; i++){
    if (numbers[i] > result) {
    result = numbers[i];
    }
    }
    System.out.println("The max value is " + result);
    }
package com.dawnsmile.method;

public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(1);
//demo04.test(1,2,3,4,45,5);
System.out.println("===================="); //调用可变参数的方法
printMax(34,3,3,2,56.5);
printMax(new double[]{1,2,3});
} public void method(){}
public void method(int i){}
public void method(int i,int i2){}
public void method(int i,double i2){} public void test(int... i){
//public void test(int x,int... i){
System.out.println(i[0]);
} public static void printMax( double... numbers) {
if (numbers. length == 0) {
System.out.println("No argument passed");
return;
} double result = numbers[0]; //排序!
for (int i = 1; i < numbers.length; i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
} 1
====================
The max value is 56.5
The max value is 3.0

Java方法06:递归

  • A方法调用B方法,我们很容易理解!
  • 递归就是:A方法调用A方法!就是自己调用自己
  • 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
  • 递归结构包括两个部分:
    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
    • 递归体:什么时候需要调用自身方法。
package com.dawnsmile.method;

public class Demo05 {
public static void main(String[] args) {
Demo05 test = new Demo05();
test.test();
} public void test(){
test();
}
}
package com.dawnsmile.method;

public class Demo06 {
//递归思想
public static void main(String[] args) {
System.out.println(f(5));
} //1! 1
//2! 2*1
//3! 3*2*1
//5! 5*4*3*2*1 //2! 2*f(1)
//3! 3*f(2) f(2)=2*f(1) public static int f(int n){
if (n==1){
return 1;
}else {
return n*f(n-1);
}
}
} 120

【【狂神说Java】Java零基础学习视频通俗易懂】https://www.bilibili.com/video/BV12J41137hu?p=45&vd_source=fd5defd6aaa826e3b6e0c06073353e32

【狂神说Java】Java零基础学习笔记-Java方法的更多相关文章

  1. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  2. 怎么规划一个零基础学习Unity3D的“方法”或者“流程”?

    具体出处:https://www.zhihu.com/question/35542990 我只是一个计算机相关专业毕业的,已经掌握了基础的C#并开发过.net的.目前突然心血来潮对unity3D有兴趣 ...

  3. 《Java并发编程的艺术》第4章 Java并发编程基础 ——学习笔记

    参考https://www.cnblogs.com/lilinzhiyu/p/8086235.html 4.1 线程简介 进程:操作系统在运行一个程序时,会为其创建一个进程. 线程:是进程的一个执行单 ...

  4. Java基础学习笔记-Java数据类型转换-(~ ̄▽ ̄)~

    JAVA数据类型和JS数据类型转换不一样,因为它是强类型语言嘛 类型转换规则 不允许数值类型和布尔类型 转换 整型.实型.字符型数据可以混合运算 类型转换分类 自动类型转换-隐式转换 1.整数转换为小 ...

  5. Spark (Python版) 零基础学习笔记(一)—— 快速入门

    由于Scala才刚刚开始学习,还是对python更为熟悉,因此在这记录一下自己的学习过程,主要内容来自于spark的官方帮助文档,这一节的地址为: http://spark.apache.org/do ...

  6. Spark (Python版) 零基础学习笔记(二)—— Spark Transformations总结及举例

    1. map(func) 将func函数作用到数据集的每个元素,生成一个新的分布式的数据集并返回 >>> a = sc.parallelize(('a', 'b', 'c')) &g ...

  7. 零基础学习python_魔法方法(41-48课)(迭代器)

    接下来这个为啥要叫魔法方法呢,额,这个嘛我是跟小甲鱼的视频取的名字一样的,因为会讲比较多杂的东西,有... 魔法方法详细阅读地址:http://bbs.fishc.com/thread-48793-1 ...

  8. python基础学习笔记——字符串方法

    索引和切片: 索引:取出数组s中第3个元素:x=s[2] 切片:用极少的代码将数组元素按需处理的一种方法.切片最少有1个参数,最多有3个参数,演示如下: 我们假设下面所用的数组声明为array=[2, ...

  9. 音乐出身的妹纸,零基础学习JAVA靠谱么

    问:表示音乐出身的妹纸一枚  某一天突然觉得身边认识的是一群程序员   突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...

  10. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

随机推荐

  1. 全面解释人工智能LLM模型的真实工作原理(完结)

    前一篇:<全面解释人工智能LLM模型的真实工作原理(三)> 序言: 本节作为整篇的收官之作,自然少不了与当今最先进的AI模型相呼应.这里我们将简单介绍全球首家推动人工智能生成人类语言的公司 ...

  2. 4年经验来面试20K的测试岗,连基础都不会,还不如招应届生。

    公司前段时间缺人,也面了不少测试,结果竟然没有一个合适的.一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望.看简历很多都是3.4年工作经验,但面 ...

  3. Windows系统密钥(实测可用)

    Windows Server 2003 R2 sp2 standard edition 文件名:cn_win_srv_2003_r2_standard_with_sp2_cd1_X13-13927.i ...

  4. 5.5 Vim移动光标命令汇总

    Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率太低,更高效的方式使用快捷键. Vim 移动光标常用的快捷键及其功能如下面各表所示,需要注意的是,表中所有的快捷键都在命令模式 ...

  5. RL 基础 | 如何复现 PPO,以及一些踩坑经历

    最近在复现 PPO 跑 MiniGrid,记录一下- 这里跑的环境是 Empty-5x5 和 8x8,都是简单环境,主要验证 PPO 实现是否正确. 01 Proximal policy Optimi ...

  6. 域渗透之利用WMI来横向渗透

    目录 前言 wmi介绍 wmiexec和psexec的区别 wmic命令执行 wmiexec.vbs wmiexec.py Invoke-WmiCommand.ps1 前言 上一篇打红日靶场拿域控是用 ...

  7. 在 ASP.NET Core 中创建 gRPC 客户端和服务器

    前言 gRPC 是一种高性能.开源的远程过程调用(RPC)框架,它基于 Protocol Buffers(protobuf)定义服务,并使用 HTTP/2 协议进行通信. 新建项目 新建解决方案Grp ...

  8. 从PipedInputStream/PipedOutputStream谈起

    本篇主要从分析PipeInputStrem和PipedOutputStream谈起.谈及软件设计的变化,以及如何将软件拆分.组合,适配-- 1 源代码分析 下面将详细分析PipedInputStrea ...

  9. python之模拟数据Faker

    Faker,它解决的问题是python模拟(随机)数据!不知道大家在工作中没有用到过假数据,特别前后端开发的人员,应该经常用到,前端人员页面展示,效果展示.后端人员数据库数据模拟.今天给大家介绍的这个 ...

  10. Jetson Orin NX烧录+设备树更改?看这一篇就够了!

    Jetson Orin NX烧录+设备树更改?看这一篇就够了! 笔者的设备为Jetson Orin NX 16GB + 达妙科技的Orin NX载板 本博客同步发表在CSDN:https://blog ...