Java之Java基础八(方法)

  • 访问权限修饰符:常用的有public,private,protected,不写(为默认访问权限)
  • 需要有方法返回值类型,没有用void
  • 需要有方法名,在同一类中方法的签名不能重复方法签名:方法名+参数列表)【单纯方法名可重复】
  • 参数列表:数量,类型,顺序 --> 方法重载(方法名相同,参数列表不同,与返回值无关)【发生在编译阶段】
  • 方法必须有参数列表,可以为空但不能省略
  • 可以用关键字static,final等关键字修饰

一、修饰符

static(静态方法)

  •  static方法中不能使用this关键字

  • static修饰的方法,通过类名直接调用,不用创建对象(对象也可以调用),方便方法的调用

  • static修饰的方法,变量,代码块都是独一份的,便于共享

  • 静态方法中不能直接使用非静态方法(可以通过创建对象调用);非静态方法可以直接调用静态方法;同级别之间可以相互调用

  • static修饰代码块:无论在哪里书写,都是在main()方法中执行,多用于初始化,只加载一次

 //static
 public class Person {
    private int age;
    private String name;
    public static String from;
    static {            //static修饰代码块,用于初始化
        System.out.println("用于初始化,执行更早");
    }
    public Person(int age, String name) {
        System.out.println("执行时间测试");
        this.age = age;
        this.name = name;
    }
    @Override
    public String toString() {
        return "Person [age=" + age + ", name=" + name + ", from=" + from + "]";
    }
    public static void main(String[] args) {
        Person p1=new Person(132,"qwe");
        Person p2=new Person(13,"qwesd");
        System.out.println(p1.name);
        System.out.println(p2.name);
        p1.from="china";         //static修饰的变量是独一份的,共享的,更改一处即更改全部
        System.out.println(Person.from);
        System.out.println(p1.from);
        System.out.println(p2.from);
        System.out.println(p2);
        System.out.println(p2);
    }
    public void objtest() {
        
    }
    public static void classtest() {
        Person p3=new Person(2,"name");
        p3.objtest();     //在静态方法中调用非静态方法用对象
    }
 }

 二、方法参数

  • 提高了方法的灵活性
  • 类型:分为形参(方法定义时设置的参数)与实参(方法调用时设置的参数)
  • 传递方式:值传递引用传递【java中只有值传递】
  1. 值传递:方法调用时,实参通过把它的内容副本传入方法内部,此时形参接收实参的一个拷贝,会开辟新空间
  2. 引用传递:‘引用’指使用真实内容的地址值,不会开辟新空间

可变参数

  •  指在调用方法时传入不定长度的参数,本质是基于数组实现的
  • 可变参数是指长度可变,但变量种类不行
  • 使用:在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值【即String...var】
  • 可变参数可以不接收参数值,也可以接收多个参数值【以数组方式接收】
  • 可变参数只能作为方法的最后一个参数使用->即一个方法只能拥有一个可变参数
  • 可变参数在编译为字节码后,在方法签名中就是以数组形态出现的,若两个方法的签名是一致的,不支持方法的重载
  • 与数组区别:可变参数可以传入数组类型的数据或直接传入多个参数,数组类型作为参数只能传数组类型参数【还不能空传】
 public class Test {
    public static void main(String[] args) {
        //可变参数
        int[] num={1,2,3};
        add(num);
         add(1,2,3);
    }
    public static void add(int...nums) {
        int sum=0;
        for(int num:nums) {
            sum+=num;
        }
        System.out.println(sum);
    }
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值