对比面向过程,是两种不同的处理问题的角度 。 面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、及各自需要做什么,通过指挥对象实现功能。面向对象实际是基于面向过程的。通俗一点来说,对象中的方法就是过程。 面向对象的三大特性: 封装 :封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项,内部细节对外部调用透明,外部调用无需修改或者关心内部实现 继承 :继承基类的方法,并做出自己的改变和 / 或扩展。子类共性的方法或者属性直接使用父类的,而不需要自己再定义,只需扩展自己个性化的,是多态的前提 多态:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象 。 类和对象的关系? 类和对象的关系
客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。
类的理解
-
类是对现实生活中一类具有共同属性和行为的事物的抽象
-
类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
-
简单理解:类就是对现实事物的一种描述
类的组成
-
属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
-
行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
类和对象的关系
-
类:类是对现实生活中一类具有共同属性和行为的事物的抽象
-
对象:是能够看得到摸的着的真实存在的实体
-
简单理解:类是对事物的一种描述,对象则为具体存在的事物,通过类来创建一个对象
在一个类中,方法名相同,参数类型或者参数个数不同,就属于方法重载。
==和equals比较==比较的是栈中的值,基本数据类型的值在栈中,而引用数据类型存放在栈中的是堆中的地址
而Object的equals默认采用的也是==,但是String类的Object对其进行了重写,先比较字符串的长度是否相等,如果相等在比较内容是否相等
final修饰类、成员变量、局部变量、局部内部类和匿名内部类- final修饰类表示类不能被继承
- final修饰方法表示类不能被重写覆盖,但是可以重载
- final修饰变量一旦变量被复制就不能改变它的值,这一点需要具体分析
- 当修饰类变量的时候(静态成员变量),只能在静态代码块中对其进行初始化,或者声明变量的时候指定初始值。
- 如果 final 修饰的是成员变量,可以在非静态初始化块、声明该变量或者构造器中执行初始值。
- 修饰局部变量可以在声明变量的时候进行初始化,也可以不指定值,等到用到的时候再指定值,但是只能指定一次。
- 如果修饰的是基本类型值一旦确定就不能够修改
- 如果修饰的是引用类型,那么指定对象之后就不能再指向另一个对象,但是对象的内容可以改变
- 为什么局部内部类和匿名内部类只能访问局部 final 变量?
- String是final修饰的,不可变,每次操作都会产生新的String对象
- StringBuffer和StringBuilder都是在原对象上操作
- StringBuffer是线程安全的,StringBuilder线程不安全的
- StringBuffer方法都是synchronized修饰的
- 性能:StringBuilder > StringBuffer > String
- 场景:经常需要改变字符串内容时使用后面两个
- 优先使用StringBuilder,多线程使用共享变量时使用StringBuffer



