接下來(lái),又到了Python字符串與Java字符串PK的時(shí)刻。
Java中有比較字符串的方法,即compareTo()方法與equals()方法,前一個(gè)方法逐一比較兩個(gè)字符串的字符編碼,返回一個(gè)整型的差值,后一個(gè)方法在整體上比較兩個(gè)字符串的內(nèi)容是否相等。
Python字符串沒(méi)有這兩個(gè)單獨(dú)的方法,但要實(shí)現(xiàn)類似的功能卻很簡(jiǎn)便。先看例子:
myName="Python貓"
cmpName="world"
newName=myName
#直接用比較符號(hào)進(jìn)行compare
myName>cmpName
>>>False
myName==newName
>>>True
cmpName!=newName
>>>True
#比較是否同一對(duì)象
myNameiscmpName
>>>False
myNameisnewName
>>>True
上例中,如果把賦值的字符串換成列表或者其它對(duì)象,這些比較操作也是可以進(jìn)行的。也就是說(shuō),作比較的能力是Python公民們的一項(xiàng)基本能力,并不會(huì)因?yàn)槟闶亲址徒o你設(shè)限,或者給你開特權(quán)。
與此類似,Python公民們自帶求自身長(zhǎng)度的能力,len()方法是內(nèi)置方法,可以直接傳入任意序列參數(shù),求解長(zhǎng)度。Java中則要求不同的序列對(duì)象,只能調(diào)用各自的length()方法。說(shuō)個(gè)形象的比喻,Python中共用一把秤,三教九流之輩都能拿它稱重,而Java中有多把秤,你稱你的,我稱我的,大家“井水不犯河水”。
Python中曾經(jīng)有cmp()方法和__cmp__()魔術(shù)方法,但官方嫌棄它們雞肋,所以在Python3中移除掉了。雖然在operator模塊中還為它留下了一脈香火,但保不定哪天就會(huì)徹底廢棄。
importoperator
operator.eq('hello','name')
>>>False
operator.eq('hello','hello')
>>>True
operator.gt('hello','name')
>>>False
operator.lt('hello','name')
>>>True
(3)墻上的門
在Java中,字符串還有一個(gè)強(qiáng)大的valueOf()方法,它可以接收多種類型的參數(shù),如boolean、char、char數(shù)組、double、float、int等等,然后返回這些參數(shù)的字符串類型。例如,要把int轉(zhuǎn)為字符串,可以用String.valueOf(anynum)。
Python字符串依然沒(méi)有這個(gè)單獨(dú)的方法,但要實(shí)現(xiàn)相同的功能卻很簡(jiǎn)便。對(duì)Python來(lái)說(shuō),不同的數(shù)據(jù)類型轉(zhuǎn)換成字符串,那是小菜一碟,例如:
str(123)>>>'123'
str(True)>>>'True'
str(1.22)>>>'1.22'
str([1,2])>>>'[1,2]'
str({'name':'python','sex':'male'})
>>>"{'name':'python','sex':'male'}"
而從字符串轉(zhuǎn)換為其它類型,也不難,例如,int('123')即可由字符串'123'得到數(shù)字123。對(duì)比Java,這個(gè)操作要寫成Integer.parseInt('123')。
在Java的不同數(shù)據(jù)類型之間,那道分隔之墻矗立得很高,仿佛需要借助一座更高的吊橋才能溝通兩邊,而在靈活的Python里,你可以很方便地打開墻上的那扇門,來(lái)往穿越。
跟Java相比,Python字符串確實(shí)沒(méi)有幾項(xiàng)方法,但是事出有因,它們的天賦能力可不弱,所有這些操作都能簡(jiǎn)明地實(shí)現(xiàn)。一方面,Python字符串做不到某些事,但是另一方面,Python可以出色地做成這些事,孰優(yōu)孰劣,高下立判。
以上內(nèi)容為大家介紹了python字符串和Java字符串,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/