Object#is_a?とObject#kind_of?

is_a?はkind_of?のエイリアスなので挙動に違いはない

https://docs.ruby-lang.org/ja/latest/method/Object/i/is_a=3f.html

引数で指定されたクラスかそのサブクラスのインスタンスであるときに真を返す

array = ["a", "b", "c"]
array.is_a?(Array)
# => true
array.is_a?(String)
# => false

array.kind_of?(Array)
# => true
array.kind_of?(String)
# => false

is_a?とinstance_of?の違い

instance_of?はオブジェクトがklassクラスの直接のインスタンスであるときに真を返す

https://docs.ruby-lang.org/ja/latest/class/Object.html#I_INSTANCE_OF–3F

array = ["a", "b", "c"]
array.is_a?(Object)
# => true
array.instance_of?(Object)
# => false