2-ruby 基本数据类型
ruby 基本数据类型
核心概念:Ruby中万物皆对象,没有真正的基本数据类型,所有值都是类的实例对象
分类:数字、文本、范围、符号、布尔值和nil,还有两种重要的数据结构------Array和Hash
下面进入 irb 交互模式来逐个演示。
数值类型(Number)
1、整型(Integer)
在交互模式,首先输出数字 1,如下:

首先我们要知道数字 1 也是实例对象,那么对象则应该会有相关方法,所以我们可以通过 obj.methods
来查看 数字 1 有什么方法。
输入:
bash
1.methods

可以看到数字1也有大量的方法。
另外还可以使用 to_s
方法,将数字1转为字符串1,如下:
bash
irb(main):005:0> 1.to_s
=> "1"
irb(main):006:0>
查看数字 1 的 实例类型,如下:
ruby
irb(main):006:0> 1.class
=> Integer
irb(main):007:0>
那么再查看小数 1.2 的实例类型,如下:
ruby
irb(main):007:0> 1.2.class
=> Float
irb(main):008:0>
计算 0.4 - 0.3 发现小数位 0.10000000000000003,这是因为精度的问题:
bash
irb(main):001:0> 0.4 - 0.3
=> 0.10000000000000003
irb(main):002:0>
小结:
-
对象本质:所有数字都是Numeric类的实例,整数是Integer的实例
-
示例
-
1是
Integer
类的实例对象 -
1.2是
Float
类的实例对象
-
-
对象的方法
- 方法查看:可用.methods查看对象所有方法,如1.methods
- 类型转换:to_s方法将数字转为字符串,如1.to_s → "1"
- 浮点精度问题:0.4 - 0.3结果为0.10000000000000003,这是二进制浮点运算的精度问题
2. 文本
在交互模型,输入如下:
bash
irb(main):002:0> 'test1'
=> "test1"
irb(main):003:0> "test2"
=> "test2"
irb(main):004:0> "test2".class
=> String
irb(main):005:0>
- 文本的输入可以使用单双引号,并且性能上无区别
- 文本的类是String类
文本的插值操作,语法:在双引号字符串中使用#{表达式}插入值
bash
# 示例:a=1; b=2; "sum = #{a+b}"
irb(main):007:0> a=1; b=2; "sum = #{a+b}"
=> "sum = 3"
irb(main):008:0>
文本字符串相加示例:
- 拼接操作:
使用+连接字符串
bash
# 示例 "hello" + " " + "world" → "hello world"
irb(main):011:0> "hello" + " " + "world"
=> "hello world"
irb(main):012:0>
- 乘法操作:
字符串可乘以数字
bash
# 示例:"hello"*5 → "hellohellohellohellohello"
irb(main):012:0> "hello" * 5
=> "hellohellohellohellohello"
irb(main):013:0>
小结:
- 字符串本质:也是对象,属于String类
- 引号区别:单双引号在性能上无实质区别
1)插值操作
- 语法:在双引号字符串中使用#{表达式}插入值
- 示例:a=1; b=2; "sum = #{a+b}" → "sum = 3"
2)字符串相加
- 拼接操作:使用+连接字符串,如
"hello" + " " + "world" → "hello world"
- 乘法操作:字符串可乘以数字,如
"hello"*5 → "hellohellohellohellohello"
3. 范围
输入包含边界的范围:
bash
# 示例:包含边界:1..2(1≤x≤2)
irb(main):019:0> 1..2
=> 1..2
irb(main):020:0>
输入不包含上界的范围:
bash
# 示例:不包含上界:1...3(1≤x<3)
irb(main):020:0> 1...3
=> 1...3
小结:
-
表示方法:
- 包含边界:1...2(1≤x≤2)
- 不包含上界:1...3(1≤x<3)
4. 特殊运算符
使用 []
修改字符串指定位置的字符,如下:
bash
# 示例:a="hello"; a[1]='a'; a → "hallo"
irb(main):023:0> a="hello"; a[1]='a';
=> "a"
irb(main):024:0> a
=> "hallo"
irb(main):025:0>
小结:
- 特殊运算符:如[]=可修改字符串指定位置字符
- 示例:a="hello"; a[1]='a'; a → "hallo"
5. True、False和Nil
使用判断方法,判断 True or False,如下:
bash
irb(main):026:0> 2 == 2
=> true
irb(main):027:0> 3 == 1
=> false
irb(main):028:0> true.class
=> TrueClass
irb(main):029:0> false.class
=> FalseClass
irb(main):030:0> nil.class
=> NilClass
irb(main):031:0>
- 通过判断可以获取 True、False,并且得知它们相应的类
那么空字符串
是否就是 nil
呢?
bash
irb(main):032:0> "".nil?
=> false
irb(main):033:0> "hello".nil?
=> false
irb(main):034:0> "".empty?
=> true
irb(main):035:0> "".length
=> 0
irb(main):036:0>
- 空字符串
""
并不是nil
,只是长度为0的字符串 - 判断空字符串可以用
empty
方法
小结:
类来源:
-
true来自TrueClass
-
false来自FalseClass
-
nil来自NilClass
1)方法
- 判断方法:
可用==比较,如2==2→true,3==1→false
- nil判断:
"hello".nil?→false,空字符串不是nil
2)空字符串判断方法
- 正确方法:使用empty?判断空字符串,如"".empty?→true
- 注意:空字符串("")是存在的对象,只是内容长度为0