概括、ruby中的基本數(shù)據(jù)類型都是類類型,只不過為了書寫和閱讀的方便,為基本數(shù)據(jù)類型提供了較為簡潔的書寫方式而已。
一、數(shù)值類型
整數(shù)支持二進制,八進制,十進制,十六進制,根據(jù)整數(shù)的大小動態(tài)決定整數(shù)是Fixnum類型還是Bignum類型。
浮點數(shù)支持科學計數(shù)法,小數(shù)點后至少有一個數(shù)字。
數(shù)值類型繼承圖如下:
復制代碼 代碼如下:
Numeric
|--Integer
|--Fixnum
|--Bignum
|--Float
|--Complex(標準庫)
|--BigDecimal(標準庫)
|--Rational(標準庫)
二、字符串
ruby中沒有字符,只有字符串。
單引號字符串,只有 ' 和 \ 需要進行轉義,其他的字符保持字面的含義。('表示單引號字符串的首尾所以需要轉義,而想一下單引號字符串中只有一個字符\時就明白\也需要轉義了。)
雙引號字符串,雙引號字符串最大的特點是可以進行數(shù)值內(nèi)插,產(chǎn)生雙引號字符串的方式有很多種。
復制代碼 代碼如下:
insert=100
#單引號字符串
print '#{insert}_string' #{insert}_string
print "\n"
print %q/#{insert}_string/ #分隔符%q表示單引號字符串
print "\n"
#雙引號字符串
print "#{insert}_string\n" #100_string
print %/#{insert}_string\n/ #分隔符%或者%Q可以表示雙引號字符串
print %Q/#{insert}_string\n/
#多行字符串
print "first line
second line
third line\n" #可以直接寫在多行
print -'multi_line' #-可以使終止符號不用必須在行首,''表示不進行內(nèi)插
first line#{insert}
second line
multi_line
str1='good' #字符串是可以修改的
str1[0]='h'
print str1
三、區(qū)間
區(qū)間提供了處理值具有連續(xù)特性的對象集合的簡便方法,ruby為了節(jié)省空間只是在內(nèi)存中保留了區(qū)間首尾兩個對象的引用。
復制代碼 代碼如下:
for i in 1..3 #閉合區(qū)間,輸出123
print i
end
print "\n"
for i in "num1"..."num3" #首閉后開,輸出num1num2
print i
end
四、數(shù)組
可以容納各種類型對象的集合。
復制代碼 代碼如下:
arr1=[1,2,3,"num1"]
arr2=%w/1 2 3 num1/ #%w和%W為字符數(shù)組分隔符,元素必須用空格隔開
print arr1,"\n",arr2,"\n"
print arr1[1].class,"\n" #Fixnum類型
print arr2[1].class #String類型
五、散列表
鍵-值對的集合,應用廣泛
復制代碼 代碼如下:
hash1={1=>"first","second"=>2}
print hash1["second"]
六、符號
由于相同的字符串在內(nèi)存中有不同的拷貝,所以采用符號類型來節(jié)省內(nèi)存,相同的符號在內(nèi)存中只有一份拷貝,另外需注意字符串和符號是完全不同的類型。
復制代碼 代碼如下:
print "string".object_id,"\n"#相同的字符串具有不同的id
print "string".object_id,"\n"
print :string.object_id,"\n"#相同的符號具有相同的id
print :string.object_id,"\n"