java学习day06

方法

什么是方法?

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

方法具有哪些特性?

  具有复用性和独立功能

  方法时解决一类问题的步骤的有序组合

  方法在类中定义

  方法在程序中被创建,在其他地方被引用

方法设计原则:设计方法时要保证方法的原子性,一个方法只完成一个功能,这样有利于后期的扩展

方法的定义

java方法类似于其他语言的函数,是一段用来完成特定功能的代码片段

方法包含一个方法头和方法体

方法头:

修饰符:修饰符是可选的,修饰符定义了该方法的访问类型

返回值类型:方法的返回值,返回值可以是基本数据类型也可以是引用数据类型,如果不需要返回任何东西则是void

方法名:方法的实际名称

参数类型:参数是一个占位符,当方法被调用时,传递值给参数,这个值被称为实参,参数列表是指方法的参数类型、顺序、参数个数,参数是可选的,方法可以不包含任何参数

  形式参数:在方法被调用时用于接收外界输入的数据,可以有0-n个,有多个形参用逗号隔开,形参的数据类型器决定性作用

  实参:调用方法时时机传给方法的数据

方法体:方法包含具体语句,定义该方法的功能

return语句:方法的返回值类型不是void,必须要有return语句,如果是void那么return语句可有可无

定义:

修饰符 返回值类型 方法名(形式参数列表){
    方法体
        //return作用是终止方法
    return 返回值;//如果返回值类型不是void则必须要有return语句,否则可以不要
}
public class Demo2 {
    public static void main(String[] args) {
        
    }
    //无参的方法
    public static void doSome(){
        
    }
    //有参的方法
    public static int  doSome(int i){
        return 1;
    }
}

方法的重载

要想了解方法重载是怎么一回事就必须知道在java中是如何进行方法的区分

在java语言中如何进行方法区分:

  首先编译器会通过方法名进行区分,但是java中允许方法名相同的情况出现

  如果方法名相同,编译器会通过方法的参数列表进行方法的区分

方法重载优点使用时机:

  代码美观

  功能相似的,可以让方法重载,有利于代码的编写和阅读

方法重载规则:

  1、方法名必须相同

  2、参数列表必须不相同(参数个数不同、或参数类型不同、或参数排列顺序不同)

  3、在同一个类中

必须满足以上三个条件才能进行方法重载

需要注意的是:方法重载与方法的返回值类型无关,与方法的修饰符无关

权限修饰符

      本类    同包的其他类或子类    不同包的类    不同包的子类

public      yes    yes            yes        yes

无       yes    yes            no         no

protected   yes    yes            no         yes

private     yes    no             no          no

可变参数

jdk1.5开始,java支持传递同类型的可变参数给一个方法

如何定义可变参数,在方法声明中,指定参数类型后加一个省略号(…)

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

传进去的数据会存在一个数组中

public class Test extends Demo2{
    public static void main(String[] args) {
        doSome(10,10,100,100,100);
    }
    public static void doSome(int i,int ...num){
        for (int n:num) {
            System.out.println(n);
        }
    }
}

方法递归

递归就是自己调用自己

利用递归可以用简单的程序来解决一些复杂的问题

递归的注意事项

递归一定要有结束的条件,否则会发生栈内存溢出错误StackOverflowError,即使递归有了结束

条件也不定能避免栈内存溢出错误的发生,递归太深,栈内存空间不足也会发生错误

public static void doSome(){
        System.out.println(10);
        doSome();
    }

方法的分类

实例方法:不带static的叫做实例方法,需要创建对象使用引用才能调用

静态方法:带static的叫做静态方法,使用类名调用

public class Test{
    public static void main(String[] args) {
        A a = new A();
        a.some();
        A.doSome();
    }
    
}
class A{
    public static void doSome(){
        System.out.println("静态方法");
    }
    public void some(){
        System.out.println("实例方法");
    }
}

代码块

静态代码块:static关键字定义,在类加载时执行,且在main方法执行之前执行,并且只执行一次,

静态代码块提供了一种时机:类加载时机

public class Test{
    static {
        System.out.println("静态代码块执行了");
    }
    public static void main(String[] args) {
        System.out.println("main方法执行了");
    }
}

实例代码块:在构造方法执行之前执行,一个时机:对象构建时机,构造方法执行几次,实例代码块就执行几次

class A{
    {
        System.out.println("实例方法执行了");
    }
    public A() {
        System.out.println("构造方法执行了");
    }
}

java是值传递

posted @ 2021-09-22 13:31  hello小番茄  阅读(35)  评论(0)    收藏  举报