A10re5weet

P1.关键字package用法

//MOEAD.java

package org.moeaframework.algorithm;             //放在.java编译单元前面,说明MOEAD.java编译单元属于org.moeaframework.algorithm包.

                          //结构上看MOEAD.java必须放在org.moeaframework.algorithm目录下.

                          //.java文件没有任何package语句,那么这个.java里面的所有类都在package的"/"下面,也称之为default package。

//下面的不懂,留用:

编译时候怎么填参数呢?我根据package+文件名的格式来写,

  

 

 代码如下 复制代码
javac aaa.bbb.ccc.A.java

 

  漂亮吧?可惜不工作。非要使用合法的路径名才行:

 

  

 

 代码如下 复制代码
javac aaa/bbb/ccc/A.java

 

  但是你发现生成的class丢失了目录结构,直接出现在当前目录下……

 

  最好的方式是

 

 

 

 代码如下 复制代码
 javac -d bin aaa/bbb/ccc/A.java

 

  这样就会在当前目录的bin目录下看到完整的目录结构以及放置妥当的class文件。

 

  package与classpath不得不说的事

 

  对于java来讲,所有需要的程序和资源都要以package的形式来组织和读取。

 

//留用结束

 

P2.关键字import用法

import导入声明可分为两中:

一.单类型导入(single-type-import):

import java.util.ArrayList;           //该.java编译单元可以使用java.util.ArrayList类

 

二.按需类型导入(type-import-on-demand)

import java.util.*;            //该.java编译单元可以使用java.util下的所有public的类和接口,但是不包括子目录,即导入类型而不导入子包。

               //现.java编译单元中的类可以直接使用自身单元内的简名(simple name),import来的还需要配合包名使用。(*导入的类或者借口的简名具有编             //译单元作用域,需要加前缀包名.来使用.)

注意:1.使用按需导入声明不会降低Java代码的执行效率 ,Java编译器产生的类文件仅包含编译单元实际使用到的类或接口的符号引用.

   2.可以导入当前包或java.lang包,非必须.

   3.一般不使用按需类型导入声明:

   1)编译速度:在一个很大的项目中,它们会极大的影响编译速度.但在小型项目中使用在编译时间上可以忽略不计.
   2)命名冲突:解决避免命名冲突问题的答案就是使用全名.而按需导入恰恰就是使用导入声明初衷的否定.
   3)说明问题:全名的使用是自说性的.毕竟高级语言的代码是给人看的.
   4)无名包问题:如果在编译单元的顶部没有包声明,Java编译器首选会从无名包中搜索一个类型,然后才是按需类型声明.如果有命名冲突就会产生问题.

表示方法:import pkgl[.subpkg2[.subsubpkg3…]].(类名I g-);

分类:

技术点:

相关文章: