为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不需要new一个Arrays对象就可以使用sort()和toString()方法?

如题,之前Scanner类都需要先 Scanner input = new Scanner(System.in); 才可以使用input.nextInt()等方法,为什么这里不需要 

正在回答

3 回答

Arrays是一个工具类 Arrays.sort()这是调用工具类下的一个方法。这个方法就是已经写好的排序步骤。

new指的是新建一个对象

就好比new一个对象是“人”

把Arrays.sort()方法看作是"吃饭"

所以你不能new


0 回复 有任何疑惑可以回复我~
#1

海带ORanGeCW 提问者

谢谢你的回答,但是这里有一个疑问,Scanner一样是java.uilt包下的工具类,为什么两者之间Scanner需要创造对象才可以使用方法,而Array可以直接使用呢
2018-10-10 回复 有任何疑惑可以回复我~
#2

java8888 回复 海带ORanGeCW 提问者

Arrays类下的方法都是静态方法(有static修饰)Scanner类下的方法都是非静态方法 要查api能看见源码 是静态的(static)话,直接用类名可以调用到,如果是非静态的,就需要利用另一个类的实例(也就是用那个类生成的对象)来调用。还有Array和Arrays不是一个类,注意“s” 您能明白吗?
2018-10-12 回复 有任何疑惑可以回复我~

我来告诉你 因为Arrays这个类是个工具类,Java 为工具类命名规则是加添以个 s 
比如:
Collections 是操作 Collection 的工具类
Objects 是操作 Object 的工具类【Java 7 新增】
Paths 是操作 Path 的工具类 【Java 7 新增】,工具类里包含的都是 static 方法,就是直接通过 类名 就可以调用的,而不需要创建实例去调用
这些工具类的构造器都被 private 修饰了(重点!!!),是不能被调用的。

而且使用它们的静态方法也不需要为它们创建实例

1 回复 有任何疑惑可以回复我~

Arrays 类是 Java 中提供的一个工具类,在 java.util 包中。

Arrays类里已经有方法了,我们只是调用而已

对象就是括号里的

new是关键字,代表开辟一段内存,这段内存用于存放HelloWorld类的对象。

https://www.imooc.com/qadetail/280215

(有哪里不对告诉我一声,让我多思考思考。)

0 回复 有任何疑惑可以回复我~
#1

海带ORanGeCW 提问者

谢谢你的回答,只是有一点不解,使用一个类的方法不是应该需要创建对象后才能使用吗,第七章节中编写的方法都必须先在main中先new一个Helloworld对象,才可以在接下来调我们写的各种方法。 那么如果只是需要方法存在的话,为什么我们还需要先Helloworld test = new Helloworld();来构造一个对象test之后,再使用 test.func()这种形式去调用func()方法呢,不应该直接使用Helloworld.func()来直接调用就可以了吗
2018-10-10 回复 有任何疑惑可以回复我~
#2

学而不思则 回复 海带ORanGeCW 提问者

Helloworled 是类名,应该不能直接调用方法,所以才要创建一个对象。
2018-10-10 回复 有任何疑惑可以回复我~
#3

海带ORanGeCW 提问者 回复 学而不思则

同理,Arrays也是一个类名?那么Arrays.sort()应该不能调用sort()方法吗? 其实这个问题我通过查阅了一些资料已经得出答案了,类的方法一般通常都必须创建对象来调用其方法,但是如果这个类含有的是静态方法,也就是具有static修饰的方法,可以不需要创建对象,直接可以调用。 经过java api查阅https://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html,你可以发现整个 Arrays的方法全是静态的,所以直接可以调用。
2018-10-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不需要new一个Arrays对象就可以使用sort()和toString()方法?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信