我们现在的代码都扔在一个文件夹里面,比如以后我们做项目,是不是有可能有非常非常多的代码,那我就希望把不同功能和模块的类方便管理,放到不同的文件夹下,引出包概念。

什么是包,就一个文件目录,为了处理重名问题,解决类的命名冲突,类文件管理等问题。包名的书写:全用小写字母,避免使用与系统发生冲突的名字,如不能定义java.lang、java.swing等。java规定,位于包中的类,在文件系统中也必须有与包名层次相同的目录结构。很多初学者以为只要把生成的class文件放在某个目录下,这个目录名就成了这个类的包名了。这是错的:java的包机制需要2方面保证:源文件里使用package语句指定包名,class文件必须放在对应的路径下。现在package确实解决了类的命名冲突,但是问题来了:如果需要使用不同包的其他类时,总是要写该类的全名,这是一件很繁琐的事情。这个时候import关键字派上用场了:import是导入类,我觉得这样描述是有问题的,我觉得import是找类,而不是导入类。



  • 导入单个类和导入指定包下全部类:

package linkin;

import java.util.Date;
//手工导入需要使用的类

import java.util.*;
//由JVM自动加载需要使用的类

二者的性能是一样的。



  • package的引入,提供类的多层命名空间,从而能更好的管理代码结构,也能避免类名冲突。

编译:javac -d . HelloWorld.java

运行:java       cn.linkin.cd.erp.domain

package必须写在文件的开头,必须写在import和类声明之前。java允许将一组功能相同的类放在同一个package下。企业开发的命名规则:域名反过来写,例如:cn.linkin.cd.erp.domain

  • java5的新特性:

import static语句导入一个类中的某个静态字段、方法或所有需要使用到的静态字段、方法。一句话来归纳import和import的作用:使用import可以忽略写包名,而使用import static则可以连类名都省略。



import static java.lang.Math.PI;

import static java.lang.Math.*;

  • 访问带有package的类:

导入类,更好的翻译是“寻找”类:import pkg.subpkg.className

寻找某个包下被使用到的全部类:import pkg.sunpkg.*;

注意了:* 只能表示类名,不能表示包名。

  • 同一个类中出现多个相同的类名处理:

java.util.Date  和  java.sql.Date

类的全限定名:该类的包名.子包名....类名

String类的权限定名: java.lang.String

JVM会自动寻找java.lang下的所有被使用到的类:

所以不需要我们去手工寻找;但JVM不能导入java.lang子包下的类

  • 下面的几个包是java中常用包:

java.lang  : 语言核心类,系统自动导入,只要搞java,天天都会用这个包。

java.util  : java 工具类、集合框架类和接口,以后要学习时间,日历,集合等就得用到这个包。

java.net   : 网络编程接口和类,以后要写和网络相关的应用就要用这个包。

java.io    : 流的接口和类,以后要写读写文件或者图片等这些就要用这个包。

java.text  : java格式化相关类,以后我们要做软件国际化就要用这个

java.sql   : jdbc相关接口和类 ,以后操作java连接数据库就要使用到这个包

java.awt   : 抽象窗口工具集相关接口和类,搞一个类似于QQ一样的软件,界面就得使用这个包下的类;

java.swing :图形用户界面相关接口和类(可跨平台)



以上这些包里面,lang,util下面的类要多看看,多看看jdk了解下其中的API,我以前的老大就讲过的,一个程序员的功底强不强,单纯的问他jdk里面的API就可以很清楚的了解。其实越底层的东西越复杂,看这些源码,可以让我们很好的理解一些设计和规范,望共勉。





linkin大话面向对象--包和导入的更多相关文章

  1. linkin大话面向对象--GC和jar包

    GC java的垃圾回机制是java语言的重要机制之一.当程序创建对象,数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区中.当这块内存不再被任何变量引用时,这块内存就 ...

  2. linkin大话面向对象--类和对象

    我们每天在撸码,那么我们在敲什么东西呢?明显的我们在写类,写一个类,写一个接口,写某个接口里面写一些属性,在某个类里面写一个方法,然后以一个对象调用方法,对于j2ee来讲的话,可能还会写一些jsp,静 ...

  3. linkin大话面向对象--闭包和回调

      先来理解2个概念:闭包和回调   什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信 ...

  4. linkin大话面向对象--内部类

    内部类说白了就是类中有类 内部类:嵌套类 外部类:宿主类 内部类主要有以下作用:记住了3个字:多继承... 1,内部类提供了更好的封装,可以把内部类隐藏在外部类中,不允许同一个包中的其他类访问该类. ...

  5. linkin大话面向对象--包装类

    Java提倡的万物皆对象,但是数据类型的划分出现了基本数据类型和引用数据类型,那么我们怎么能把基本数据类型称为对象呢? 基本数据类型 包装类 byte Byte short Short int Int ...

  6. linkin大话面向对象--多态

    java引用变量有2个类型,一个是编译时类型,一个是运行时类型: 编译时类型:声明的类型,把它看做是什么东西 运行时类型:真正的类型,实际上指的是什么东西 如果编译时类型和运行时类型不同,就出现多态. ...

  7. linkin大话面向对象--枚举

    枚举类(enum) 其实我们使用到枚举的地方还是很多的,其实我们可以完全人工的来实现枚举的功能.比如说我现在手里的项目我就是自己实现的枚举,说白了,枚举就是一个类的多例模式. 1,使用enum声明,默 ...

  8. linkin大话面向对象--java关键字

    java中的关键字有以下几个,他们不能作任何其它的用途. 发现没,java中的关键字全是小写,java是严格区分大小写的. abstract  default  null  synchronized ...

  9. linkin大话面向对象--初始化块

    java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让整个java对象的信息更加完整.与构造器作用非常类似的是初始化块,它也可 ...

随机推荐

  1. Excel Microsoft.Jet.OLEDB.4.0 外部数据库驱动程序中(1)的意外错误

    昨天更新系统的bug,据说是微软要搞事情啊 删除以下更新就行: win7                          KB4041678  KB4041681 SERVER 2008 R2 KB ...

  2. C/C++知识点清单02-上

    第二章 预处理.const.static与sizeof (上) 在这章编写时,发现了一个不错的帖子.其中对程序预处理语句的基本概念写得还是十分清晰的. (http://www.runoob.com/c ...

  3. 单张滑动tab 组件

    /* CSS重置 * */ body, ul, ol { margin: 0px; padding: 0px; } .flash { width: 300px; height: 420px; posi ...

  4. [搬运] 写给 C# 开发人员的函数式编程

    原文地址:http://www.dotnetcurry.com/csharp/1384/functional-programming-fsharp-for-csharp-developers 摘要:作 ...

  5. Android刮刮卡自定义控件

    网上的都是自己绘制的或者图片,我的需求是可以随意的自定义底部和顶部的布局.所以自己重写一个,原理就是直接继承 View 来实现一个刮层,让这个刮层和图片以及文字不产生任何依赖,再结合 FrameLay ...

  6. Cup(二分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2289 hdu_2289:Cup Time Limit: 3000/1000 MS (Java/Othe ...

  7. linux命令 uname -r 和 uname -a 的解释与演示

    1.uname -r : 显示操作系统的发行版号2.uname -a :显示系统名.节点名称.操作系统的发行版号.内核版本等等. 系统名:Linux 节点名称: iZ2zeeailqvwws5dcui ...

  8. SLAM入门之视觉里程计(6):相机标定 张正友经典标定法详解

    想要从二维图像中获取到场景的三维信息,相机的内参数是必须的,在SLAM中,相机通常是提前标定好的.张正友于1998年在论文:"A Flexible New Technique fro Cam ...

  9. vuethink 在本地没问题,在服务器报错 , php5.6与php5.5之间的大坑

    将环境换为php5.6即可

  10. WdatePicker时间插件

    next_door_boy CnBlogs Home New Post Contact Admin Rss Posts - 14  Articles - 5  Comments - 0  WdateP ...