package 与 import

2016-02-19 18:38 3 1 收藏

下面图老师小编跟大家分享一个简单易学的package 与 import教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

  有些人写了一阵子 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 的规范来取套件名称,那理论上不同人所取的套件名称不会相同 ( 请参阅 "命名惯例"的相关文章 ),也就不会发生名称冲突的情况。

  可是问题来了,因为很多套件的名称非常的长,在写程序时,会多打好多字,花费不少时间,比如说:

      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);

  实在是不美观又麻烦。于是,Sun 想了一个办法,就是 import。

  这个 import 就是在程序一开头的时候,先说明程序中会用到那些类别的
  简称,也就是只称呼名字,不称呼他的姓。首先,在档案开头写:

      import java.lang.System;
      import java.io.InputStream;
      import java.io.InputStreamReader;
      import java.io.BufferedReader;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  这几行说明了这四个姓名的类别,在程序中只用他的名字来称呼,所以当程序中提到 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,假如这两个里面有同样名字的类别,而不幸的你又只用名字称呼这个类别,那编译器仍然会跟你抱怨,因为它还是不知道你说的这个类别指那一
  个姓的类别。那可不可以再懒一点呢,只写:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

      import java.*;

  历史告诉我们,人可以懒,但不能太懒,这样是不行的。因为那些类别是姓 java.io 而不是姓 java。就像姓『诸葛』的人应该不会喜欢你称他为『诸』先生吧。

  为甚么我一开始说 import 跟 #include 不同呢?因为 import 的功能到此为止,它不像 #include 一样,会将档案内容载入进来。import 只是请编译器帮你打字,让编译器把没有姓的类别加上姓,并不会把别的文件的程式码写进来。假如你想练习打字,可以不要使用 import,只要在用到类别的时候,用它的全部姓名来称呼它就行了(就像例子一开始那样),跟使用 import 完全没有甚么两样。

  另外,虽然人不可以太懒,但是 Sun 还是帮我们多偷了一点懒。因为java.lang 这个套件实在是太常太常太常用到了,几乎没有程序不用它的,所以不管你有没有写 import java.lang;,编译器都会自动帮你补上,也就是说编译器只要看到没有姓的类别,它就会自动去 java.lang 里面找找看,看这个类别是不是属于这个套件的。所以我们就不用非凡去
  import java.lang 了。
  


来源:http://www.tulaoshi.com/n/20160219/1618433.html

延伸阅读
标签: 电脑入门
当你在修改Linux软件源的时候,提示Unable to locate package错误,这是由什么原因导致的呢?又该如何解决,下面图老师小编就给大家介绍下Linux下遇到Unable to locate package错误的情况该如何解决,一起来学习下吧。 刚开始接触ubuntu的朋友可能会按照一些入门文章的步骤更改软件源,可是此时安装软件的话会出现unable to locate package...
标签: Web开发
在ie 6中可以先写CSS再加import比如 p {} @import url("base.css"); 但在浏览器里死活是渲染不出来. 用抓包工具跟踪, 根本就没有请求... 如果去掉上面的p选择符,或者放到import下方就可以渲染, 按标准来说import是要放首行的,但aoao说IE6是可以先放其它的CSS再加import的. @import url("base.css"); p {} 如果我再...
Delphi 8 for .NET Assemblies; Packages and Libraries In this article, Bob Swart will explain what .NET Assemblies are, how we can use them in Delphi 8 for .NET applications, and especially how we can make them ourselves (it actually turns out that there is more than one way, and even some special way to us...
今天在BDN中看到一篇文章 http://bdn.borland.com/article/0,1410,32765,00.html 重要的部分摘抄如下 Executive Summary •          Namespaces do not affect Delphi for Win32. •          Namespaces are pro...
标签: PS
PS合成与美女与小鸟 效果图用到的元素不多,合成及构图部分可以很快完成。不过后期的颜色渲染比较重要,也比较费时,需要把人物,背景等各部分的颜色调统一,同时还需要渲染一些高光,把整体调柔tulaoshi.com和。 最终效果 1、打开背景图层,图象--编辑--水平翻转,适当裁剪到我们需要的部分。 photoshop教程 ...

经验教程

362

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部