基础

2017-09-01  本文已影响0人  予别她

局部变量和成员变量

局部变量是定义在方法中的变量,只能在方法中使用

成员变量是定义在类中的变量,在类中使用

java会给成员变量一个初始值,但不会给局部变量初始值

如果成员变量变量名与局部变量变量名同名了,则在此方法中优先使用局部变量


static

java中被static修饰的成员被称为静态成员或类成员,它是属于整个类的,为类的所有对象所共有

static可以修饰变量、方法和代码块

静态变量可以直接用类名调用,如果在同一个类中可以直接调用

静态方法中可以直接调用静态变量,不能调用非静态变量(要用对象来调用)

静态方法中不能定义静态变量和调用this、super关键字,因为this、super是针对对象的,但是静态方法属于类,方法中定义的是局部变量,所以静态方法中不允许定义静态变量(静态变量是全局变量)

static修饰的成员只会在类加载时创建一次(初始化),调用static成员时也会加载类

static修饰的成员会被子类继承,子类会隐藏这个成员,但子类不能覆盖它

构造方法隐式的被指定为static


构造方法

new关键字:

new运算符通过给这个对象分配内存并返回一个指向对象的引用

new+构造方法 来初始化类

构造方法无返回值

如果你没有定义构造方法,系统会默认的构造一个无参的构造方法


初始化块

初始化块是用来初始化类的,给所有的对象初始化,构造函数只给相对应的对象初始化,初始化块在对象一建立就会运行,且优先于构造函数

静态初始化块只能给静态变量赋值,不能给普通变量赋值

静态初始化块最先执行(只在类加载时执行,并且只执行一次),然后是初始化块,最后才是构造函数


内部类

内部类就是定义在另外一个类中的类,包含内部类的类被称为外部类

内部类的方法可以直接访问外部类的所有数据(包括私有的)

内部类有以下几种:成员内部类,方法内部类,静态内部类,匿名内部类

1.成员内部类

成员内部类能直接使用(或者使用外部类.this.对象来调用)外部类的所有数据而不受访问控制符的影响

定义了成员内部类后必须使用外部类的对象来new一个内部类的对象

外部类不能直接使用内部类的成员变量和方法

public void Testing {

    public static void main(String[] args) {

        Outter o = new Outter();

        Outter.Inner i = o.new Inner();

    }

}

class Outter {

    class Inner { }

}

2.静态内部类

静态内部类不能直接访问外部类的非静态成员,但可以通过new 外部类().成员的方式访问

创建静态内部类的对象时可以不需要外部类的对象,直接创建

如果外部类的静态成员与内部类的静态成员名字相同,可以通过类名直接访问外部类的静态成员,若不同,则可以直接调用

3.方法内部类

方法内部类就是定义在外部类的方法中,只在该方法中使用,不能使用访问控制符和static修饰符

4.匿名内部类

匿名内部类是不能有名称的类,所以没办法引用他们,必须在创建时,作为new语句的一部分来声明他们

如:Outter o = new Outter() {

    //匿名内部类

}

访问修饰符

访问修饰符有四种:private 默认 protected public

private是私有的,只能在当前类中使用

不能在方法体内部使用private,因为private修饰的变量属于全局变量

默认 可以在当前类和同一包中的类中使用

protected 可以在当前类和同一包中的类以及子类中使用

public 可以被所有类访问


final关键字

final可以修饰类、方法、属性和变量

修饰类的时候,该类不能被继承,final 类的所有成员和方法都会隐式的被指定为final成员或方法

修饰方法,则该方法不能能被覆盖,类的private方法会隐式的被指定为final方法

修饰属性,则该属性不会隐性的初始化

修饰变量,该变量就成了常量,当final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。


equal 和 ==

基本数据类型之间的比较应该用==,比较的是他们的值。引用数据类型用==比较的时候,比较的是他们再内存中的地址


上一篇 下一篇

猜你喜欢

热点阅读