文字列と配列

Rubyでは文字列を配列のように扱えます。
疑問どうして、以下のs[0]だけ文字コードになるんでしょうね。s[0, 1]なら文字列なのに。

s = "abcdefg"
p s                 # => "abcdefg"
p s[0]              # => 97         (なぜこれだけ文字コード?)
p s[0, 1]           # => "a"
p s[2..4]           # => "cde"
p s[2...4]          # => "cd"
p s[2, 4]           # => "cdef"     (2番目から4文字)
s[2, 4] = "CDEF"
p s                 # => "abCDEFg"