2017年3月6号

今天开始了面向对象的基础知识,今天也发现了以前学的c语音跟JAVA有很大的出入,比如Java面对对象,而C语言面对过程。

一:面向对象的基本概念
编程的两种的思维方式:
(1)面向过程的编程方式
根据具体的操作步骤去实现程序
缺点:不通用,只针对一个程序(事情)
不利于维护(不能适应变化)

(2)面向对象的编程方式
解决程序适应变化的能力(可维护性强)降低功能之间的相互依赖
(1)先整体,后局部
(2)先抽象,再具体
(3)能做什么,怎么做


考虑粒度的问题


如何抽象:
考虑事物的共同点(共性)


JAVA里是:一切皆对象




二  类与对象
对象:一切具体的事物
类:有相同特征和行为的事物集合
分类,类别
程序的组织结构就是类




(1)new关键字:表示向内存申请空间,也表示实例化一个对象,
创建一个对象
(2)一个对象在内存中的大小,由该对象的所有属性所占的内存大小的总和。引用类型变量在32位系统上占4个字节,在64位系统上占8个字节。加上额外的对象隐性数据所占的大小。
(3)相同的类型才可以赋值
(4)不同的引用,指向同一个对象,任何一个引用改变对象的值,其他引用都会反映出来。




(5)编程是要注意的问题:在确定不使用对象是,要尽早释放对象;引用=null
(6)但一个堆中的对象没有被任何引用变量所指向是,该对象会被JVM的GC程序认为是垃圾对象,从而被回收。








三。封装性
面向对象的特征是什么;
封装 继承 多态 抽象 
面向对象的三大特征;封装。继承。多态




封装性
封装的概念:隐藏实现细节,提供对外访问的接口




好处;
隐藏细节
安全性 
模块化
代码重用
插件化易于调试
利于维护










缺点;
影响执行效率














封装:
属性的封装,方法的封装,类的封装,组件的封装,模块化封装,系统级封装






四,构造方法
是在创建对象时自动调用。
构造方法的特点:
(1)构造方法名称与类名相同,没有返回值声明(包括void)
(2)构造方法用于初始化数据(属性)
(3)每一个类中都会有一个默认的无参的构造方法
(4)如果类有显示的构造方法,那么默认构造方法将无效
(5)如果有显示的构造方法,还想保留默认构造方法,需要显示的显示的写出来
(6)构造放放风可以有多个,但参数不一样
(7)在构造方法中调用另一个构造方法,使用this(...),该句代码必须在第一句
(8)构造方法之间的调用,必须要有出口。
(9)给对象初始化数据可以使用构造方法或者setter方法,通常情况下,两者都会保留。
(10)一个好的编程习惯是:要保留默认的构造方法。
(为了方便一些框架代码使用反射来创建对象
(11)private Dog{}{},构造方法私有化,当我们的需求是为了保证该类只有一个对象是。什么时候一个类只需要一个对象?比如,
工具类(没有属性的类,只有行为)并且该工具对象被频繁使用。权衡只有一个对象与产生多个对象的内存使用,来确定该类是否要定义为只需要一个对象。


五,方法的重载(overloading)
方法的重载是发生在同一个类中,
多个方法,方法名相同,参数列表不同,返回值不能作为重载的条件
什么时候用重载?
当我们的业务类型类似,参数不一样,就可以使用重载,比如:
public void save(String path)【】//把数据保存到文件中
public void save(Cat vat)[]//把数据保存到数据库中
() 








六,String类
(1)String类的两种赋值方式;
1,String s1= "小黄";
2, String s2 = new String("小黄");
直接辅助:检查字符串中的常量池(堆内存)是否存在该对象,如果存在,则直接指向该对象,如果不存在,就在常量池中创建并指向该对象。(最少不用创建对象,最多只创建一个对象)
使用new关键字:在堆内存中创建一个字符串对象,并指向该对象,然后检查常量池中是否存在该字符串对象,如果存在,则结束;如果不存在,就在常量池中创建一个字符串对象,以供其他直接赋值时使用。(最少创建一个对象,最多创建两个对象)


在JAVA中,我们推荐使用直接赋值的方式,有助于节省内存空间




面试题;String  s2= new String("abc");创建了几个对象?


String类真正用于存储数据是使用char[]






在String字符串相加时,是在常量池中创建对象还是在堆中1创建对象?
如果字符串的值在编译期可以被确定,那么会在常量池中创建
否则在运行期时在堆中创建对象




结论


字符串常量相加,不会产生垃圾对象
字符串与变量相加,加的越多,垃圾对象越多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值