面向对象是对于面向过程来讲的,是两种不同的处理问题的角度。面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象),以及各自需要做什么
打开洗衣机
放衣服
放洗衣粉
清洗
烘干
人需要做的:
打开洗衣机
放衣服
放洗衣粉
洗衣机需要做的:
清洗
烘干
面向过程比较直接高效,而面向对象更易于服用、扩展和维护。
封装的意义:明确标识出允许外部使用的所有成员函数和数据项
内部细节对外部调用透明,外部调用无需修改或关心内部实现
JavaBean属性私有,提供getset对外访问,因为属性的赋值或者获取逻辑只能由javaBean本身决定,而不能由外部修改。
orm框架:操作数据库,不需要关心链接如何简历,sql如何执行,只需引入mybatis,调用方法
子类共性的方法或者属性是直接调用父类的,而不需要自己再定义,只需扩展自己的方法即可
基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑并不相同。
形成多态的前提:继承,方法重写,父类引用指向子类对象,父类无法调用子类特有的方法
面向对象是将一件事情拆分,分出这件事情中的对象,定义每个对象需要做的事情,之后再复用或者维护,直接找到这个对象查询它下面的方法即可
面向过程是直接开始做一件事情,不考虑对象,虽然做的过程中会因为不用区分对象,效率会稍高一些,但之后想要找一个方法很不方便
JDK:全称java Develpment Kit,java开发工具
JRE:全称java Runtime Environment,java运行环境
JVM:全称java Virtual Machine,java虚拟机
String是final修饰的,不可变,每次操作都会产生新的String对象
StringBuffer和StringBuilder都是在原本的对象上进行操作,StringBuffer是线程安全的,StringBuilder是线程不安全的
StringBuffer方法都是synchronized(同步锁)修饰的。
StringBuilder>StringBuffer>String
经常需要改变字符串内容时需要使用StringBuffer以及StringBuilder,因为他们更改时不会创建新的对象,不会造成数据冗余。优先使用StringBuilder(性能最快),多线程使用共享变量时使用StringBuffer(线程安全)
==对比的是栈中的值,对比基本数据类型时比较的是变量,对比引用类型时则对比引用类型在堆中内存对象的地址。
equals可以被重写,不做处理的equals跟==是一样的。String类型的equals就是被重写后的(重写原理:将字符串中的每个字符取出来对比是否相等,如果相等,啧返回为true)
原文:https://www.cnblogs.com/yunchuran/p/14509347.html