你的位置:首页 > 软件开发 > Java > 走进java对象的门口

走进java对象的门口

发布时间:2016-09-11 16:00:15
从题目中可以看出来,今天只是java面向对象的入门级探讨。看看今天的内容。 为什仫说英语呢?我的英语从三年级都不好,一直到现在,但我们的未来职业要求我们必须懂英语,就算不能像马云一样溜吧,但最起码能看懂英语版的专业书籍。其实,专业上的英语挺简单的,如果你能静下心看看那些书,你 ...

从题目中可以看出来,今天只是java面向对象的入门级探讨。看看今天的内容。

走进java对象的门口


 

为什仫说英语呢?我的英语从三年级都不好,一直到现在,但我们的未来职业要求我们必须懂英语,就算不能像马云一样溜吧,但最起码能看懂英语版的专业书籍。其实,专业上的英语挺简单的,如果你能静下心看看那些书,你会发现,书上的语法很简单,词汇还都是高中的,只有极个别的专业词汇有点难,记住就好啦,反正不多,所以,这里说几个英语名词。

面向对象三大特性:encapsulation:封装  inheritance:继承  polymorphism:多态

还有两个词用的比较多:arguments 和 parameters : 实参 和 形参。

编程语言的函数或方法都只能放回一个值(我只学过的几个,语言之多,不知有没有特例),有时想返回多个值,可以数组(当我刚学c语言的时候,我都不知道这样做),python好像能返回多个,直观上如此,但其实python返回的是一个元组,把你的多个返回值构成一个元组返回的。


一、封装

刚学面向对象时,对封装思想不甚了解,特别是从面向过程转过来的人。为什么要对属性进行封装呢?外部直接调用不是很方便吗?

其一原因:通过封装,外部只能通过你的getter() ,setter()来间接访问你的属性,那你不是可以在gette and setter 中做些什么了吗。比如:你写了个Person类,其中一个属性是年龄age,age的范围肯定是 age>= 0的(不知有没有长生的人),如果你不封装,外部可以把 -100 赋值给 age,显然这是不合理的,但通过setter来赋值时,你可以对传进的值进行判断如果小于 0,就抛个异常给调用者。是不是很好,通过封装你可以对传进的值进行一些判定或其他的操作啦。

你可能要反驳说啦,我见过一些setter or getter,就是最简单的赋值啊,没啥功能啊。下面就是另一个重要的使用封装的原因啦。

 

其二:The point to setters (and getters, too) is that you can change your mind later,without breaking anybody else’s code! 你写了个一款游戏,刚开始时你对游戏充钱的范围设置应该很低,假设充钱的下限是 一毛(哈哈),等过了一段时间,你的游戏大火,为了make more money,你要提高充钱的下限啦(反正总会有人充的,毕竟玩家多嘛),设为price >= 100。你想想,如果开发时你的公司员工都是把属性设置为public,如果想进行更改,你就的在原来需要给price赋值的地方做个if(money >= 100){//ok } else{//buy failure}判断,或者写setter(getter也一样),进行对传进的值判断,然后,在原来使用price的地方调用setter().看见了没有不用封装,以后想改都很麻烦,所以还是使用封装吧,别看现在可能没啥用,以后你有别的想法想改时,就很方便啦。记住这句话:you can change your mind later,without breaking anybody else’s code!


 

 插一段关于对象属性和局部变量初始值的问题:

 


 

二、“==”与equals方法的区别:

“==”比较的是两个变量在内存中的 bits 是否相等不关心你的类型是否相等,比如 int a = 1, b = 1; a == b //true  byte c = 1; a == c //also true,因为a,c在内存中的bits都是0000 0000 0000 0001。对于对象引用变量来书,他们比较是是否指向相同的对象,其实还是一样的,指向相同的对象,他们的bits就是相同的。所以,“==”,主要还是比较两个变量是否指向相同的对象(基本变量没啥好说的)。

有时,你不关心两个变量是否指向同一个对象,你只是关心两个变量指向的对象的内容是否完全一样。上代码,具体看看:

走进java对象的门口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" />

再猜猜结果:

走进java对象的门口

奇妙的事情发生啦,str1 和 str2的值都是“hello",为什么他两相比的结果是false。因为,str1,str2指向的对象不同,虽然对象中的内容是相同的,但"=="只关心变量的二进制数是否相同,因为指向不同的对象,所以,他们之间的bits不可能相同。

那我想看两个字符串是否相同咋办?那就要用equals方法啦。

把判断语句稍微一改:

走进java对象的门口

结果就是想要的啦:

走进java对象的门口

记住这两句话:

Use == to compare two primitives, or to see if two references refer to the  same object.

原标题:走进java对象的门口

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。