走进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就是相同的。所以,“==”,主要还是比较两个变量是否指向相同的对象(基本变量没啥好说的)。

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

你猜结果是true or false:

想想为什么.

再看一个对比的:

再猜猜结果:

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

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

把判断语句稍微一改:

结果就是想要的啦:

记住这两句话:

Use == to compare two primitives, or to see if two references refer to the  same object.
Use the equals() method to see if two  different objects are equal.

 

留个问题,自己写个类,用“==” 和 equals()方法来比较一下,结果可能会出乎你的意料。具体如何,且看不知多少下回的分析。


When everything seems to be going against you, remember that the airplane takes off against the wind, not with it.

只有通过逆境,你才能变得强大。(我都被自己给翻译服啦,呵呵)

data:image/jpeg;base64,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

 

posted @ 2016-09-11 15:31  ~的星辰大海  阅读(504)  评论(0编辑  收藏  举报