5.java不同方法的区别(构造方法,实例方法,类方法,static关键字)

1.Java中的方法

在java中有三种类型的方法:构造方法,实例方法和类方法
如果我们要搞清楚构造方法为什么存在?那么首先我们得搞清楚构造方法的一切,不是吗?如果你要打败一个人,首先不是锻炼自己,而是了解对手,知己知彼,百战不殆。

1.2.构造方法

class Computer{
    /**
     * 构造方法
     */
    public Computer(){
    }
}

首先我们来看一下构造方法的特点:

  • 构造方法没有类型,这就意味着它不能返回值
  • 构造方法的名字必须与它所在的类的名字完全相同,这间接说明它和它的类是绑定的关系
  • 一个类中必须存在构造方法,如果没声明,编译器会自动的添加一个空的构造方法,这更加说明了它和类的绑定关系
  • 构造方法只能通过new调用

可以总结出:构造方法是类中一种特殊的方法,当创建实例化一个对象时需要用它的构造方法,可以间接的得出构造方法是创建一个实例对象时一定要用的用来获取内存空间的方法。

1.2.实例方法

class Computer{
    int add(int x,int y) {
        return x+y;
    }
}

有返回类型,可以通过实例对象引用,它可以操作类变量,简单来说实例方法在类实例化为对象后才能使用。

示例:

public class ObjectStudy {
    public static void main(String args[]){
        //通过调用构造方法将类Computer实例化
        Computer com = new Computer();
        int m = 100;
        int n = 200;
        //通过对象调用实例方法
        int result = com.add(m,n);
        result = com.add(120+m,n*10+8);
        System.out.println(result);
    }
}
class Computer{
    /**
     * 构造方法
     */
    public Computer(){
    }

    int add(int x,int y) {
        return x+y;
    }
}

1.3.类方法/静态方法

类方法是用static修饰的实例方法,也叫静态方法。

class Computer{
    /**
     * 类方法
     * @param x
     * @param y
     * @return
     */
    public static int mul(int x,int y){
        return x*y;
    }
}

静态方法只初始化一次,它的作用是可以直接通过类名直接引用类方法,类方法只能操作类变量,类方法可以通过类名直接使用。
示例:

public class ObjectStudy {
    public static void main(String args[]){
        int mulRes = Computer.mul(3,4);
    }
}
class Computer{
     /**
     * 类方法
     * @param x
     * @param y
     * @return
     */
    public static int mul(int x,int y){
        return x*y;
    }
}

1.4.static关键字

由关键字static修饰的变量,方法,代码块,类称之为静态变量静态方法静态代码块静态类

static属性属于类级别的,即由该类创建的所有实例对象共享同一个static属性。对于静态属性,我们可以通过两种方式访问:
1)直接通过类名.属性来使用
2)通过对象名.属性来使用
static方法只能访问static变量,非static方法可以访问static变量。

static变量和普通成员变量的区别:
1)不管有多少对象,static变量只有一份。对于每个对象操作的static变量都是同一个,但是普通的成员变量随着对象的建立,它也会被建立。 static变量在对象建立之前就被分配内存空间并被初始化了(第一次使用类的时候)

2)static变量是属于整个类的,也称之为类变量,而非静态变量是属于实例对象的,因此也称之为实例变量。

静态代码块无法通过类名调用,所以static代码块当类被第一次使用时(首次被加载)会被执行且只被执行一次,主要作用是实现static属性的初始化。

static内部类:属于整个外部类,而不是属于外部类的每个对象,它不能访问外部类的非static成员但可以访问外部类的static成员。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值