package 与 import

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

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

【 tulaoshi.com - 编程语言 】

  有些人写了一阵子 Java,可是对于 Java 的 package 跟 import 还是不太了解。很多人以为原始码 .java 文件中的 import 会让编译器把所 import 的程序通通写到编译好的 .class 档案中,或是认为 import 跟 C/C++ 的 #include 相似,实际上,这是错误的观念。

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

  让我们先了解一下,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。

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

  这个 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.*;

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

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

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


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

延伸阅读
标签: 电脑入门
当你在修改Linux软件源的时候,提示Unable to locate package错误,这是由什么原因导致的呢?又该如何解决,下面图老师小编就给大家介绍下Linux下遇到Unable to locate package错误的情况该如何解决,一起来学习下吧。 刚开始接触ubuntu的朋友可能会按照一些入门文章的步骤更改软件源,可是此时安装软件的话会出现unable to locate package...
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...
标签: Web开发
在ie 6中可以先写CSS再加import比如 p {} @import url("base.css"); 但在浏览器里死活是渲染不出来. 用抓包工具跟踪, 根本就没有请求... 如果去掉上面的p选择符,或者放到import下方就可以渲染, 按标准来说import是要放首行的,但aoao说IE6是可以先放其它的CSS再加import的. @import url("base.css"); p {} 如果我再...
今天在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教程 ...

经验教程

174

收藏

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