[java]学习笔记-02

万物皆对象,每个对像都是某个类的一个实例

Java中定义在类里面的变量称之为成员变量,而定义在成员方法里的变量称为局部变量,局部变量和成员变量同名时,在定义局部变量的成员方法内部,局部变量会屏蔽成员变量,所有对同名变量的操作都作用于局部变量。

class A{
    int a=10; // as a1
    void fff(){
        int a=20; // as a2,在成员方法里面,a1被a2屏蔽了,在成员方法里
        a*=a;  //所有对a的操作都作用在a2上
    }
    System.out.println(a); //此处的a为a1的值,该段代码将在控制台上打印10
}

对象的创建

//类名 对象名称 = new 类名();
A a = new A();

new A(); 用于创建A类的一个实例对象,A a 则是声明了一个A类型的变量a。中间的等号用于将A对象在内存中的地址赋值给变量a,这样变量a就持有了对象的引用。

a相当于一个指针,用于存放new A();在堆内存中创建的真正的对象的地址。

Java将内存分为栈内存和堆内存,其中栈用于存放基本类型的变量和对象的引用变量,堆用于存放由new创建的对象和数组。


堆区 】用来存放由 new 创建的对象和数组 ,由 Java 虚拟机的自动垃圾回收器来管理 ,先进先出,后进后出

栈区】 存放函数中定义的一些基本类型的变量和对象的引用变量 ,超过变量的作用域,Java 会自动释放 ,后进先出,先进后出

public class A{
public int i=1;
public static void main(String[] args) {
    A a=new A();
}
}

this关键字的作用

明确访问类的成员变量,解决与局部变量名称冲突的问题
通过this关键字调用成员方法

在一个构造方法中使用this来调用其它的构造方法

格式:this([参数1,参数2…])

注意事项 ,只能在构造方法中用this调用其它构造方法,不能在成员方法中使用 ¢在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次 不能两个构造方法中使用this互相调用


static关键字

作用:static关键字修饰的成员变量
访问方式:
可以使用“类名.变量名”的形式来访问
也可以通过类的实例对象来访问
特点:被所有实例共享
注意:局部变量不能用static来修饰

特点:在静态方法中只能访问用静态成员

public class s{
    static int n =10;
    public void fun(){
        static int num =10; //会报错
}
}

静态代码块

使用一对大括号包围起来的若干行代码被称为一个代码块
使用static关键字修饰的代码块称为静态代码块
当类被加载时,静态代码块会执行,并且只会执行一次
在程序中,经常使用静态代码块来对类的成员变量进行初始化


类的初始化过程

加载class文件
堆中开辟空间
变量的默认初始化
变量的显示初始化
构造代码块初始化
构造方法初始化

anyShare分享到: