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

什么是包,就一个文件目录,为了处理重名问题,解决类的命名冲突,类文件管理等问题。包名的书写:全用小写字母,避免使用与系统发生冲突的名字,如不能定义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. Oracle loop循环无法插入数据

    以下的测试基于scott用户下的emp表 首先用while循环进行测试,向emp表插入999条数据 declare i emp.empno; begin loop insert into emp(em ...

  2. VFS四大对象之四-struct file

    继上一篇文章: http://www.cnblogs.com/linhaostudy/p/7428971.html 四.file结构体 文件对象:注意文件对象描述的是进程已经打开的文件.因为一个文件可 ...

  3. linux基础命令学习总结

    本附录([美]哈恩:<Unix&Linux大学教程>附录B,张杰良译,清华大学出版社,2010年)摘要描述了书中所涉及的143个Unix使命,并且按照命令的类别进行排列.在每个名称 ...

  4. 记录Vue和Jquery混合开发中关于点击事件的一个bug

    最近比较急的接手了公司的微信服务号项目,采用的技术栈主要是jq和vue.在项目中之前碰见过jq写的$().on('click',function(){})点击事件不起作用,只能写在vue实例中的met ...

  5. 一步一步从原理跟我学邮件收取及发送 2.邮箱的登录和绕不开的base64

    一步一步从原理跟我学邮件收取及发送 2.邮箱的登录和绕不开的base64 好了,经过本系列上一篇文章 "1.网络命令的发送",假设大家已经掌握了 email 电子邮件的命令发送的方 ...

  6. BZOJ 3211: 花神游历各国【线段树区间开方问题】

    3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 3514  Solved: 1306[Submit][Status][Discu ...

  7. BZOJ 1029: [JSOI2007]建筑抢修【优先队列+贪心策略】

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 4810  Solved: 2160[Submit][Statu ...

  8. ES5.0集群搭建

    最近在网上看到很多ES集群的搭建方法,本人在这人使用Elasticsearch5.0.1版本,介绍如何搭建es集群并安装head插件和其他插件安装方法. 一.搭建环境(2台Centos7系统服务器) ...

  9. c++(爬楼梯)

    前两天上网的时候看到一个特别有意思的题目,在这里和朋友们分享一下: 有一个人准备开始爬楼梯,假设楼梯有n个,这个人只允许一次爬一个楼梯或者一次爬两个楼梯,请问有多少种爬法? 在揭晓答案之前,朋友们可以 ...

  10. cesium编程入门(一)cesium简介

    cesium编程入门 cesium是什么 Cesium 是一个跨平台.跨浏览器的展示三维地球和地图的 javascript 库. Cesium 使用WebGL 来进行硬件加速图形,使用时不需要任何插件 ...