为啥我的Import Package里面什么都没有
答案:1 悬赏:40
解决时间 2021-01-25 08:35
- 提问者网友:沦陷
- 2021-01-24 10:09
为啥我的Import Package里面什么都没有
最佳答案
- 二级知识专家网友:深街酒徒
- 2021-01-24 11:05
有些人写了一阵子 Java,可是对於 Java 的 package 跟 import 还是不 太了解很多人以?樵?悸 .java 档案中的 import 会让编译器把所 import 的程式通通写到编译好的 .class 档案中,或是认? import 跟 C/C++ 的
include 相似,实际上,这是错误的观念。
让我们先了解一下,Java 的 package 到底有何用处。其实,package 名称就像是我们的姓,而 class 名称就像是我们的名字 。package 名称有很多 . 的,就好像是复姓。比如说 java.lang.String,就 是复姓 java.lang,名字? String 的类别;java.io.InputStream 则是复姓 java.io,名字? InputStream 的类别。
Java 会使用 package 这种机制的原因也非常明显,就像我们取姓名一样 ,光是一间学校的同一届同学中,就有可能会出现不少同名的同学,如果不取 姓的话,那学校在处理学生资料,或是同学彼此之间的称呼,就会发生很大的
困扰。相同的,全世界的 Java 类别数量,恐怕比台湾人口还多,而且还不断 的在成长当中,如果类别不使用套件名称,那在用到相同名称的不同类别时,
就会?生极大的困扰。幸运的是,Java 的套件名称我们可以自己取,不像人 的姓没有太大的选择 ( 所以有很多同名同姓的 ),如果依照 Sun 的规范来取 套件名称,那理论上不同人所取的套件名称不会相同 ( 请参阅 "命名惯例"
的相关文章 ),也就不会发生名称?突的情况。可是问题来了,因?楹芏嗵准?拿?品浅5某ぃ?谛闯淌绞保?岫啻蚝枚
字,花费不少时间,比如说:
代码如下复制代码
java.io.InputStream is = java.lang.System.in;
java.io.InputStreamReader isr= new java.io.InputStreamReader(is);
java.io.BufferedReader br = new java.io.BufferedReader(isr);
在zz.java中,因为引入了包a中的所有类,所以使用起来就好像是在同一个包中一样(当然首先要满足访问权限,这里假定可以访问)。
在程序中,可以引入包的所有类或若干类。要引入所有类时,可以使用通配符“*”,如:
代码如下复制代码
import java.lang.*;
实在是不美观又麻烦。於是,Sun 想了一个办法,就是 import。
这个 import 就是在程式一开头的时候,先说明程式中会用到那些类别的
简称,也就是只称呼名字,不称呼他的姓。首先,在档案开头写:
代码如下复制代码
import java.lang.System;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
这几行说明了这四个姓名的类别,在程式中只用他的名字来称呼,所以当程式
中提到 System 就是指 java.lang.System,而 InputStream 就是指
java.io.InputStream,依此类推。於是原来的程式就变成:
代码如下复制代码
InputStream = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
这样看起来是不是清爽多了呢?如果这些类别用的次数很多,那就更能体会到
import 的好处了。可是这样还是不够,因?槔潦侨说奶煨裕?故腔嵊腥司醯
打太多 import 了也很浪费时间,於是 Sun 又提供了一个方法:
代码如下复制代码
import java.lang.*;
import java.io.*;
意思就是,等一下程式中提到的没有姓名的类别,不是姓 java.lang,就是姓
java.io,如果这两个?面有同样名字的类别,而不幸的你又只用名字称呼这
个类别,那编译器仍然会跟你抱怨,因?樗?故遣恢?滥闼档恼飧隼啾鹬改且
个姓的类别。那可不可以再懒一点呢,只写:
代码如下复制代码
import java.*;
?v史告诉我们,人可以懒,但不能太懒,这样是不行的。因?槟切├啾鹗切
java.io 而不是姓 java。就像姓『诸葛』的人应该不会喜欢你称他?椤褐睢
先生吧。
?樯觞N我一开始说 import 跟 #include 不同呢?因? import 的功能
到此?橹梗??幌 #include 一样,会将档案内容载入进来。import 只是请
编译器帮你打字,让编译器把没有姓的类别加上姓,并不会把别的档案的程
式码写进来。如果你想练习打字,可以不要使用 import,只要在用到类别的
时候,用它的全部姓名来称呼它就行了(就像例子一开始那样),跟使用
import 完全没有甚?两样。
include 相似,实际上,这是错误的观念。
让我们先了解一下,Java 的 package 到底有何用处。其实,package 名称就像是我们的姓,而 class 名称就像是我们的名字 。package 名称有很多 . 的,就好像是复姓。比如说 java.lang.String,就 是复姓 java.lang,名字? String 的类别;java.io.InputStream 则是复姓 java.io,名字? InputStream 的类别。
Java 会使用 package 这种机制的原因也非常明显,就像我们取姓名一样 ,光是一间学校的同一届同学中,就有可能会出现不少同名的同学,如果不取 姓的话,那学校在处理学生资料,或是同学彼此之间的称呼,就会发生很大的
困扰。相同的,全世界的 Java 类别数量,恐怕比台湾人口还多,而且还不断 的在成长当中,如果类别不使用套件名称,那在用到相同名称的不同类别时,
就会?生极大的困扰。幸运的是,Java 的套件名称我们可以自己取,不像人 的姓没有太大的选择 ( 所以有很多同名同姓的 ),如果依照 Sun 的规范来取 套件名称,那理论上不同人所取的套件名称不会相同 ( 请参阅 "命名惯例"
的相关文章 ),也就不会发生名称?突的情况。可是问题来了,因?楹芏嗵准?拿?品浅5某ぃ?谛闯淌绞保?岫啻蚝枚
字,花费不少时间,比如说:
代码如下复制代码
java.io.InputStream is = java.lang.System.in;
java.io.InputStreamReader isr= new java.io.InputStreamReader(is);
java.io.BufferedReader br = new java.io.BufferedReader(isr);
在zz.java中,因为引入了包a中的所有类,所以使用起来就好像是在同一个包中一样(当然首先要满足访问权限,这里假定可以访问)。
在程序中,可以引入包的所有类或若干类。要引入所有类时,可以使用通配符“*”,如:
代码如下复制代码
import java.lang.*;
实在是不美观又麻烦。於是,Sun 想了一个办法,就是 import。
这个 import 就是在程式一开头的时候,先说明程式中会用到那些类别的
简称,也就是只称呼名字,不称呼他的姓。首先,在档案开头写:
代码如下复制代码
import java.lang.System;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
这几行说明了这四个姓名的类别,在程式中只用他的名字来称呼,所以当程式
中提到 System 就是指 java.lang.System,而 InputStream 就是指
java.io.InputStream,依此类推。於是原来的程式就变成:
代码如下复制代码
InputStream = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
这样看起来是不是清爽多了呢?如果这些类别用的次数很多,那就更能体会到
import 的好处了。可是这样还是不够,因?槔潦侨说奶煨裕?故腔嵊腥司醯
打太多 import 了也很浪费时间,於是 Sun 又提供了一个方法:
代码如下复制代码
import java.lang.*;
import java.io.*;
意思就是,等一下程式中提到的没有姓名的类别,不是姓 java.lang,就是姓
java.io,如果这两个?面有同样名字的类别,而不幸的你又只用名字称呼这
个类别,那编译器仍然会跟你抱怨,因?樗?故遣恢?滥闼档恼飧隼啾鹬改且
个姓的类别。那可不可以再懒一点呢,只写:
代码如下复制代码
import java.*;
?v史告诉我们,人可以懒,但不能太懒,这样是不行的。因?槟切├啾鹗切
java.io 而不是姓 java。就像姓『诸葛』的人应该不会喜欢你称他?椤褐睢
先生吧。
?樯觞N我一开始说 import 跟 #include 不同呢?因? import 的功能
到此?橹梗??幌 #include 一样,会将档案内容载入进来。import 只是请
编译器帮你打字,让编译器把没有姓的类别加上姓,并不会把别的档案的程
式码写进来。如果你想练习打字,可以不要使用 import,只要在用到类别的
时候,用它的全部姓名来称呼它就行了(就像例子一开始那样),跟使用
import 完全没有甚?两样。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯