1、基本概念
对象——在JAVA眼中,一切皆对象。(对象是具体存在的) 对象的组成——属性(名词—成员变量)、行为(动词—方法) 类——对象的模版。具有相同属性和行为的一组对象的集合。(类是抽象的概念) 在同一个文件中,只能有一个类是public的(包含main方法的类)。 构造方法——最大的作用就是用来创建对象的。另一个作用——初始化成员变量。 局部变量无初始值。当局部变量和成员变量重名时,优先调用局部变量。通过使用this指针解决成员变量和局部变量同名问题,this指针相当于当前对象的引用。成员变量初始化:
JAVA中成员变量会默认初始化
数值类型——0 布尔类型——false char——空字符 引用数据类型——NULL值(代表一个引用没有指向任何的对象,也就是说这个引用没有任何对象的内存地址) Java有垃圾回收机制,它可以自动回收Java中无用的内存。 无用的内存——就是一个对象没有引用指向的时候,这个对象就是垃圾。 如果想要销毁一个对象,最好的方法就是将指向的引用设置为NULL。 2、构造方法的特殊: 1)与类名相同 2)没有返回值类型,连void也没有 3)每一个类都有一个隐式的构造方法(没有参数、方法体) 4)当手动添加一个显示的构造方法是,隐式的构造方法就不存在了。 5)构造方法只能和new关键字一起使用。3、引用数据类型(类、数组等)基本数据类型变量中保存的是真实的值。
引用数据类型中保存的不是真实的值,而是保存的对象在堆中的内存地址,通过地址可以找到真实的对象,所以这个变量并不是真正的对象,而是对象的引用。
4、JAVA内存分为:
1)、code segment(代码区) 字节码
2)、heap segment(堆区) 对象
3)、stack segment(栈区) 局部变量
4)、static segment(静态区)——属于栈区的一块特殊区域,数据不能重复 静态的变量和字符串常量
5、堆和栈的区别:
堆可以保存大数据的内容,但是速度慢;栈可以保存小数据的内容,速度快。
6、static
加上static的成员变量称之为静态变量(类变量)
加上static的方法称之为静态方法(类方法) 静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收! 注意:静态的方法中只能访问静态的成员变量。 非静态的方法既可以访问静态的变量也可以访问非静态的变量。 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。静态方法——不需要创建对象,直接使用类名.变量调用。所有的对象共享其数据,也就是说这个变量跟对象是没有关系的,所以称之为类变量,可以使用类名.变量的方式来表示。
?static segment中的数据不能重复
?main方法是一个程序的入口,在main方法执行前不可能有任何对象被创建,JVM需要调用main方法只能是static的。静态初始化块只在类加载时执行(最先执行),且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
运行结果: