关于区分类变量、类方法、实例变量、实例方法和默认值

2017-05-27  本文已影响0人  exmexm
一、区分类变量、类方法、实例变量、实例方法

1、成员变量和成员方法
首先成员变量和成员方法是范围最大的定义:即成员变量包含实例变量和类变量。
成员方法包含类方法和实例方法。

2、类方法和实例方法
类方法:就是类里面有static修饰的成员方法。类方法可以直接调用类变量和类方法。但是不能直接调用实例方法和实例变量。而且不能使用this关键字,没有实例存在,不知道引用哪一个实例。
实例方法就是没有static修饰的成员方法。实例方法可以直接访问实例变量和直接调用实例方法;实例方法虽然可以直接调用类变量和类方法,但是不被建议。

3、类变量和实例变量
类变量:
是不用新建实例,直接通过类调用的变量。特点就是有static修饰。也叫静态变量。一般被静态方法(类方法)调用。
实例变量:
是新建了实例后才能够使用的变量。可以直接被实例方法调用。
两者的区别是:
对于类变量,系统为类变量分配一次存储空间,所有实例对象共享一个类变量。
实例变量则是在类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。


二、什么时候有默认值

一般来说非final修饰的成员变量在声明时没有赋值时,系统会给非final修饰的成员变量添加初始值。
final修饰的成员变量在声明时没有初始化值,会报错。
所有的局部变量在使用前都要赋值。
代码如下

public class Test_init {
    public float f;
    public long lo;
    public char c;
    public boolean b;
    public static int i;
    //public static final int k;
    
    public Test_init(){
        System.out.println("float:" + f + ",long:" + lo+ " ");
        System.out.println("char:" + c + ",boolean:" + b);
        System.out.println("static:" + i);
    }
    public static void main(String[] args) {
        int i;
        i = 10;
        Test_init t = new Test_init();
        System.out.println("局部:" + i);
    }

}

运行结果如下:

图片.png

另外在牛客那里做题有一道题可以重新分析一下

        System.out.println(b);```


`boolean b = true?false:true==true?false:true`
这句话可以看成
`boolean b = true?false:(true==true?false:true)`
由于?:的优先级比=高,且与操作的结合性是从右到左,但是运算是从左至右的,故输出FALSE

![图片.png](https://img.haomeiwen.com/i3934058/3be5a1d89490875c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
上一篇 下一篇

猜你喜欢

热点阅读