java中import java.util,我们初学者学到的是Scanner,但为什么不直接*呢?

目前看到最多的就是教我们importjava.util.Scanner,虽然对于初学者来说,了解全面是有必要的,但对于那些已经在工作的程序员来说,输入*或只输入Scann... 目前看到最多的就是教我们import java.util.Scanner,虽然对于初学者来说,了解全面是有必要的,但对于那些已经在工作的程序员来说,输入*或只输入Scanner会有什么区别?直接输入*不是更加方便吗?
我是自学java,很多规矩还不懂,在此询问一波大佬,谢谢!
展开
 我来答
草原上之狼
高粉答主

2019-03-27 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.9万
采纳率:93%
帮助的人:4027万
展开全部

util,utiliy的缩写,意即,工具性的包。主要包含集合类(如ArrayList,HashMap等),随机数产生类,属性文件读取类,定时器类等类。

Scanner,扫描仪,使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。

java.util.Scanner,Java5的新特性,可以简化文本扫描,主要用于控制台输入,除了能使用正则-。

mingwanlau
2019-03-27 · TA获得超过131个赞
知道小有建树答主
回答量:100
采纳率:66%
帮助的人:54.9万
展开全部
引用的范围不同,* 标识引用 java.util 路径下所有的包,import java.util.Scanner 只引用import java.util.Scanner包;区别就是编译打包出来的应用包大小不一样,比如本来你应用程序只有10K大小,*方式就10M了;程序当然是只要把需要的包打包进去就可以了
更多追问追答
追问
哦哦,也就是节约空间?;
哦哦,也就是节约空间?;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zy199351
2019-03-27 · 超过17用户采纳过TA的回答
知道答主
回答量:47
采纳率:50%
帮助的人:14万
展开全部
是方便,但是我们开发一般都遵从用什么引什么的规则.不用的就不要引入,你就当作这个是一个规范就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KingTeacherZJF
2019-03-27
知道答主
回答量:8
采纳率:0%
帮助的人:1.8万
展开全部
这通常是企业开发编码规范,单纯使用*方式虽然也可以,但是多少企业要求不这样写,也就是你所说的要具体引入某个类import java.util.Scanner;
这就像好比我要使用一把钳子就可以完成工作,你没必要把一百多斤重的工具箱全部拿来用一样。
所以应遵循用到某个包的类或接口时,只引入你需要的,不要引入包中所有工具,*就是引入所有包中工具,这样是不可取的,你可以看看java SE源代码中,没有任何一个文件中会使用*这种方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2019-03-27 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
楼上一派胡言。
导入某个包下的一个类,和使用通配符*导入该包下所有类的唯一区别,就是当前命名空间中的可见性。
import java.util.Scanner;
有了这行语句后,你在代码中就可以直接使用类名Scanner,而不必写出全限定类名java.util.Scanner。然而,对于java.util包下的其他类如HashMap,想使用它仍然需要写出全限定类名java.util.HashMap。
import java.util.*;
而有了这行语句后,java.util包下的所有类和接口现在在你的命名空间中都是可见的。你可以直接使用Scanner、Map、Comparator、Iterator等名称,而不必写出它们的全限定名。
那么你会问既然java.util.*导入了更多的名称,用起来更方便,为什么还要用java.util.Scanner呢?这涉及到命名空间污染的问题。使用*将导入该包下所有的类和接口名,而这些名称可能与你的当前环境中某些已有的名称冲突,例如,你在当前文件中自己编写了一个Iterator类。这可能导致一系列意想不到的问题。所以,在代码规范较严格的公司,会要求使用全限定名导入每个需要的类,而禁止使用通配符。
导入一个类或是导入所有类,对编译结果没有影响,两种方式编译生成的文件大小是一致的。编译时并不会将被导入类的源代码插入到当前类中,而是在运行时动态加载这些类的class文件到JVM中,并且是按需加载,即哪怕你写的是import java.util.*,而代码里只用到了Scanner,那么JVM只会在执行到代码中Scanner的位置时才会将Scanner类装载进来,而java.util中的其他类并不会被装载进内存。
追问
大佬很全面哇!谢谢指导,采纳了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式