面向对象(一)之类和对象

1、基本概念   对象——在JAVA眼中,一切皆对象。(对象是具体存在的)   对象的组成——属性(名词—成员变量)、行为(动词—方法)   类—

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的。

  静态初始化块只在类加载时执行(最先执行),且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

    

  运行结果: