面向对象特征:
继承、封装、多态
对象是存在的具体实体,具有明确定义的特征和行为
万物皆对象,对象因我关注而产生
面向对象:
一种认识事物的方式,注重对事物整体的认知,最符合人类自然的思维习惯。
属性是指对象身上的特性,行为是指对象产生的一系列动作。
类:
类是具有相同属性和行为的一组对象的集合;
在软件系统中,我们用类来模拟现实生活中的实体
类和对象的关系:
类是对象的抽象,对象是类的实例
结构化和OO的区别:
在结构化编程中,程序围绕着要解决的任务来设计
面向对象编程中,程序围绕着问题域中的对象来设计
面向过程:
优点:性能比面向对象高,因为类调用时需要实例化,开销大,比较消耗资源
缺点:没有面向对象易维护、易复用、易扩展
面向对象:
优点:易维护、易复用、易扩展
缺点:性能比面向过程低
基本数据类型
整数类型 |
byte 一个字节 |
Short 两个字节 |
Int 四个字节 |
Long 八个字节 |
浮点型 |
Float 四个字节 |
Double八个字节 |
||
字符型 |
Char 两个字节 |
|||
布尔型 |
boolean |
由系统确定 |
引用数据类型:
类、数组、接口
区别:
基本数据类型存放的是具体的数据
引用数据类型存放的是对象的地址
垃圾回收
回收的是内存中没有被变量引用的,同时没有被使用的对象
null表示在引用类型变量中没有存放任何对象的引用。对null值调用属性和方法,会抛出空指针异常。(Java.Lang.NullPointerExcption)
Java运行期数据存放
堆 new(对象)
栈 局部变量
数据段 类变量、常量
代码段 方法的定义
变量按作用域分类
局部变量:方法和语句块内部定义的变量(栈空间,当方法或语句块一结束,局部变量空间就马上释放)
成员变量(属性):方法外部、类的内部定义的变量(堆空间,随对象产生而产生,随对象销毁而销毁)
类变量(静态变量):加上关键字“static”
成员变量和静态变量的区别:
- 成员变量包含在对象值中,每一个对象都有独立的成员变量。一个对象成员变量的改变,不会影响别的对象。静态变量独立在对象之外,所有对象共享静态变量。静态变量值的改变,会影响所有对象
- 成员变量跟随者对象存放在堆空间中,静态变量存放在数据段中。
- 静态变量在类加载时产生,产生在对象之前。成员变量随对象产生而产生 ,随对象销毁而销毁。
- 静态变量可以通过对象.和类名.的方式访问。而成员变量只能通过对象.的方式访问。
在一个包中,如果要使用另一个包中的类,那么需要通过import导入该类。本包中的类,和java.lang包中的类无需导入可以直接使用
包的作用:
- 可以组织相关的类
- 可以做到信息的隐藏
成员方法和静态方法的区别:
- 成员方法可以通过对象.的方式调用,静态方法可以通过对象.方式和类.的方式访问。
- 静态方法在类加载时加载,不能直接访问成员变量和成员访问 ;成员方法在 产生对象时加载,可直接访问成员变量、成员方法、静态变量、静态方法。
在方法之间传递和返回对象,传递和返回的是对象的引用。
构造方法(构造器):构造方法的方法名和类名相同,没有返回类型(包括void)。构造方法主要用于产生对象。
构造方法的作用:
- 为对象在堆空间中分配空间。
- 初始化成员变量。
- 返回对象的引用。
如果一个类没有定义构造方法,虚拟机会默认分配一个共有的无参构造方法。如果该类中定义了构造方法,默认的无参构造方法就会消失。
在方法中访问变量,会优先访问局部变量。如果局部变量不存在,那么,在访问成员变量或静态变量。 this表示当前变量,this.访问的是当前变量的属性或方法。
静态变量在类加载时完成初始化
如果一个类声明为public,那么该类的类名和文件名必须一致。一个类里不能有两个为public的类名