java基础知识学习笔记三

java基础知识学习笔记三

面向对象的本质:以类的方式组织代码,以对象的方式组织数据

对象:具体的事务

类:是对对象的抽象

对象和类的关系:特殊到一般,具体到抽象

Java语言除基本类型之外的变量都是引用类型

Java中的对象通过引用对其操作

Java中参数的传递是值传递

内存分析

:自动分配连续空间,先进先出,存放局部变量

:不连续空间,放置new 出来的对象

中的方法区:存放类的信息代码,static变量(或者static方法),常量池(字符串常量)

比如:Student s = new Student();通过class loader加载类代码,加载后堆中就有相应的信息(Student类)

java基础知识学习笔记三

垃圾回收机制(GC)

对象的空间分配:使用new 关键字创建对象即可

对象空间的释放:将对象赋值为null即可,垃圾回收器将会负责回收所有“不可达”对象的内存空间

注意点:1.程序员无权调用垃圾回收器

        2.程序员可以通过system.gc()通知GC运行,但是java规范上说并不保证立刻运行

        3.finalize()方法。是java提供给程序员用来释放对象或资源的方法。但是尽量少用或不用

构造器(构造方法)

      构造器用于构造该类的实现,是一种特殊的方法

1.    通过new 调用

2.    构造器虽然有返回值(肯定是本类),但是不能定义返回类型,不能有return

3.    如果我们没有定义构造器,系统会自动定义一个无参数的构造器函数,如果已经定义则编译器不会添加(始终注意构造器也是一个方法)

4.    构造器方法必须和类名一致

5.    作用:构造该类的对象,经常用来初始化对象的属性

重载Overload

方法的重载:是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时会根据参数列表进行调用

两同三不同

同一个类同一个方法名

不同:参数列表的不同(类型、个数、顺序)

只有返回值不同,不构成重载

只有形参不同,不构成重载

构造方法也是方法也可以重载。

Static关键字

在类中,用static声明的成员变量为静态变量或者叫做类属性、类变量。它为该类的公用变量,属于类,被该类所有实例共享,在类载入的时候被显示初始化。

对于该类的所有对象来说,static成员变量只有一份,被该类的所有对象共享。

用static声明的方法为静态方法。不需要对象就可以调用(类名 .方法名)

在调用该方法的时候,不会将对象的引用传递给它。所以static方法中不可访问非static的成员。

注意:静态变量和实例变量的区别,实例变量是对象私有的,只是他们有一个共同的初始值而已。静态变量是只有一份,只要有对象或者方法改变了它,它就改变了,所有引用这个值得值就变化了。

This关键字(用在方法里面)隐式参数(但是不能写),有点类似形参,super也类似

普通方法:this总是指向调用该方法的对象

构造方法:this总是指向正要初始化的对象

This不能用于static方法

特别:在构造方法中调用构造方法,必须位于构造方法内的第一句。写法也很特别

写法:this(参数或没有) 也即this():不含参数的构造的方法  this(name):含一个参数的构造方法

 

面向对象的三大特征

继承

封装/隐藏

多态

小结:子类继承父类,可以得到父类的全部属性和方法(除构造方法外)

Java中只有单继承,一个类只有一个直接父类

Java的多继承是通过接口来实现

如果一个类没有extends,自动继承object类

注意:private只是一个访问控制,子类对象拥有父类对象的完整拷贝,私有属性可以通过共有方法来访问(私有的东西只是拥有,不能直接访问)。

内存分析:子类实例化,会默认调用父类的构造方法,创建父类对象,然后再父类对象的外部放子类的独有属性。

方法的重写(override)

子类中可以对基类中继承的方法重写

重写的方法必须和被重写的方法具有相同的方法名称,参数列表和返回类型

重写方法不能比被重写的方法有更严格的访问权限(由于多态)(也就是这些方法都是非法的,编译器会报错)。

小技巧:在eclipse中选中类名,按住CTRL+t可以看到类的层次结构

Object类

Object类是所有类的基类

如果在类中未声明extends关键字指明其基类,则默认的基类为Object类

 toString方法:默认返回:包名+类名[email protected]哈希码

所有方法都可以重写。