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

什么是包,就一个文件目录,为了处理重名问题,解决类的命名冲突,类文件管理等问题。包名的书写:全用小写字母,避免使用与系统发生冲突的名字,如不能定义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. ubuntu使用rdesktop连接win10的两个问题

    关闭防火墙,解决主机ping不通虚拟机的问题 win10需要修改注册表 \HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStatio ...

  2. vue的组件小操作

    项目技术: webpack + vue + element + axois (vue-resource) + less-loader+ ... vue的操作的方法案例: 1.数组数据还未获取到,做出预 ...

  3. javascript初识

    1.什么是js 基于对象和事件驱动并且具有相对安全性的客户端脚本语言,由网景公司开发.     2.js数据类型   1.基本数据类型 undefined,null,number,boolean,st ...

  4. git客户端安装后,访问不到gitsever解决办法

    1,运行 git Bash 客户端 $ cd ~/.ssh 如果没有此目录则创建一个 $ mkdir ~/.ssh 2,在.ssh目录下 $ ssh-keygen -t rsa -C "你的 ...

  5. deeplearning.ai 人工智能行业大师访谈 林元庆 听课笔记

    1. 读博士之前,林元庆是学光学,他自认为数学基础非常好.在宾夕法尼亚大学上课认识了他的博士导师Dan Lee,转学机器学习.他从头开始学了很多算法,甚至PCA,之前他完全不知道这些,他觉得非常兴奋, ...

  6. [bzoj1587] [Usaco2009 Mar]Cleaning Up 打扫卫生

    首先(看题解)可得...分成的任意一段中的不同颜色个数都<=根号n...不然的话直接分成n段会更优= = 然后就好做多了.. 先预处理出对于每头牛i,和它颜色相同的前一头和后一头牛的位置. 假设 ...

  7. tju_4147 kd树+最小生成树

    kd树模板+全图最小生成树 标签(空格分隔): kd树+最小生成树 题目链接 题意: k维太空中有n个点,每个点可以与距离它m近的点连边,现在给你一堆点,并给出坐标,现在要建立通信网络,一些可以互相到 ...

  8. WERTYU(getchar()用法)

    题目连接:http://acm.tju.edu.cn/toj/showp.php?pid=13681368.   WERTYU Time Limit: 1.0 Seconds   Memory Lim ...

  9. oracle和mysql分页

    mysql分页 关键字limit,limit m,n 其中m表示起始位置的下标,下标从0开始.n表示要显示的条数,比如要查询一个表的第2到5条数据. ,; oracle分页 关键字rownum, ro ...

  10. DFS算法(——模板习题与总结)

    首先,需要说明的是搜索算法本质上也是枚举的一种,时间复杂度还是很高的,遇到问题(特别是有水平的比赛上),不要优先使用搜索算法. 这里总结一下DFS算法: 1.从图中某个顶点出发,访问v. 2.找出刚访 ...