java package and import

时间:2022-09-25 23:42:36

1、Package

Package类的主要作用是解决命名冲突。package中所存放的所有文件,一般分一下就分这三种

  1,java程序源文件,扩展名为.java。

  2,编译好的java类文件,扩展名为.class。

  3,其他文件,其他任何文件,也称为resource

  例如图片文件,xml文件,mp3文件,avi文件,文本文件……

一个.java文件里面可以包含一个public的类,若干package类(package类特征是没有任何访问控制修饰),还有内隐类的话,则还可以包含若干protected和private的类。.java和.class不是一对一,而是一对多的关系,不过.java和public的类是一对一的。对complier来说,there's no relationship between nested packages. For example, the packages java.util and java.util.jar have nothing to do with each other.

All standard java packages are inside the  java and javax package hierarchies.

To guarantee unique packages, we use an Internet domain name( which is known to be unique ) written in reverse. For example, package name could be com.hortsman.corejava while hortsman.com is an Internet domain name.

2、import

import只是一种让你偷点懒少打字的方法,import可以使用通配符*,*代表某package下所有的public class或interface,不包括子目录。A class can use all calsses from its own package and all public classes from other packages. Besides, it's wrong to use java.* or java.*.* to import all packages.

import不像 #include 一样,会将档案内容载入进来。import 只是请编译器帮你打字,并不会把别的档案的程式码写进来。如果没有import,你每次要输出都要写上全称java.lang.System.out.println(),而import java.lang.System后,可以直接使用out.println()。import并不影响classpath。classpath里面的东西就是package所包纳的资源。classpath的写法如同path,只是里面可以写的一般只有zip文件、jar文件和目录。 classpath在java里面是被一个叫做classloader的东西所使用的,classloader顾名思义,就是load class用的,但它也可以load其它在package里面的东西。运行的时候,jvm每次都是从classpath找类,如果classpath里没有,那么你import也没用。import就是为了简便,仅此而已。

由于java.lang这个package里的东西由于太常使用,所以java默认import这个package,即import java.lang.*。所以我们可以直接使用System.out.println(),因为complier会自动为我们加上import java.lang.*。

import使用通配符*不会降低Java代码的执行效率。 Java编译器产生的类文件仅包含编译单元实际使用到的类或接口的符号引用. It has no negative effect on code size.但是它会有以下问题:

1>编译速度:在一个很大的项目中,它们会极大的影响编译速度.但在小型项目中使用在编译时间上可以忽略不计.

2>命名冲突:原本采用package就是为了解决命名冲突,这样省略违背了初衷。

3>说明问题:全名的使用是自说性的.毕竟高级语言的代码是给人看的.

4>无名包(default package)问题:如果在编译单元的顶部没有包声明,Java编译器首选会从无名包中搜索一个类型,然后才是按需类型(import ××.*)声明.如果有命名冲突就会产生问题.

In eclipse, you can select Source->Organize Imports. Then package statements such as import java.util.* are atuomatically expanded into a list of specific imports such as: improt java.util.ArrayList;   import java.util.Date;

static imports: For example, after the statement import static java.lang.System.*, you can use the static methods and fields of System class directly as out.println(""); 但是我们不推荐这样用,因为丧失了clearity。

reference:http://blog.chinaunix.net/uid-25756163-id-276244.html;core java(volumeⅠ)

java package and import的更多相关文章

  1. JAVA package与import机制

    JAVA package与import机制 http://files.cnblogs.com/files/misybing/JAVA-package-and-import.pdf import org ...

  2. JAVA - package与import解析(一)

    一.为什么要引入package和import?这个问题和c++中引入命名空间是一样的,也是为了解决重名问题.java通过包机制来解决重名问题,也就相当于给重名的代码加一系列前缀,从而达到唯一标识的作用 ...

  3. Java package和import语句

    Java中的package和import语句 如果你想让其他人访问你的类,你一定要把你写的类放到正确的子目录下. 在Java里,对于位于包中的类是这样管理的: Java编译器把包对应于文件系统的目录管 ...

  4. Java——package和import关键字

    1.8 package和import关键字 1.8.1 package 包其实就是目录,特别是项目比较大,java 文件特别多的情况下,我们应该分目录管理,在java 中称为分包管理,包名称通常采用小 ...

  5. Java——package与import

    [package]   <1>为了解决类的命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间. <2>package作为源文件的第一条语句(缺省时指定为 ...

  6. java package 命名空间

    原文: http://www.studytonight.com/java/package-in-java.php 创建一个简单的maven 项目的命令是: mvn  archetype:generat ...

  7. Java跟Javac,package与import

    今天讨论一下2个指令与2个关键字. 这次的没有IDE环境,直接在txt文本里编程,在cmd里编译运行,搞清楚java的文件结构,还有怎么设置编译器查找类的路径.首先是javac,有一个可带参数java ...

  8. java之package与import

    我就以package与import开始吧. package的作用其实就是c++的namespace的作用,防止名字相同的类产生冲突,只是实现的机制不一样,java编译器在编译时,直接根据package ...

  9. Java学习10——package和import

    package和import语句 为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间,使用时,import引入相应package ...

随机推荐

  1. iOS---数据本地化

    本篇随笔除了介绍 iOS 数据持久化知识之外,还贯穿了以下内容: (1)自定义 TableView,结合 block 从 ViewController 中分离出 View,轻 ViewControll ...

  2. 关于CSS三列Float布局任务

    任务目标 掌握HTML/CSS布局的概念 掌握盒模型的概念 掌握position与float的概念以及在布局时的用法 任务描述 使用 HTML 与 CSS 按照示意图;实现三栏式布局. 左右两栏宽度固 ...

  3. &lbrack;家里蹲大学数学杂志&rsqb;第049期2011年广州偏微分方程暑期班试题---随机PDE-可压NS-几何

    随机偏微分方程 Throughout this section, let $(\Omega, \calF, \calF_t,\ P)$ be a complete filtered probabili ...

  4. JavaScript 设置、读取Cookie

    1.设置Cookie //设置cookie function setCookie(cookieName, cookieValue, cookieExpires, cookiePath) { cooki ...

  5. Javascript函数(定义、传值、重载)

    Javascript 函数的定义的方式有不止一种. 第一种方式: function fn1(){ alert(typeof fn1); alert(“fn1”); } 在调用的时候直接就可以fu1() ...

  6. Java NIO 备忘

    $.backlog:可以把它简单理解为一个 listening socket 的请求连接队列的限制.当队列中的连接请求达到队列限制时,kernel 会拒绝信的连接请求.只有当应用程序通过 accept ...

  7. optimizer hints

    In version MySQL 5.7.7 Oracle presented a new promising feature: optimizer hints. However it did not ...

  8. MongoVUE查询备忘

    用了一段时间的MongoVUE,把一些在MongoVUE中常用的查询记录一下,以便查阅.1.and查询    查询date等于2016-01-08,并且page_url等于shouye.html   ...

  9. NPOI操作EXCEL--设置密码及设置只读

    有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完成,如下图:      那么,在NPOI中有没有办法通过编码的 ...

  10. 安装MySQL容易出现的问题

    mysql 安装到最后一步时,start service 为失败状态. 解决方法: 方 式1  MySQL安装是出现could not start the service mysql error:0 ...