【Java学习笔记四】Java中的包

包的声明和引入:在Java语言系统中,Java编译器为每一个类生成一个字节码文件(.class),为了对类文件进行分层和按用途分类管理,同时也为了解决相同类名的文件冲突的问题,Java提供了包机制来管理类名空间。一般情况下,应将相关的类组织到同一个包中。使用包提供了包的封装和存取权限。

一个包可以包含若干个类,还可以包含若干个包

包被放在当前目录或指定目录下,该指定目录要在操作系统环境变量表中的classpath参数的值包含着,以便系统能够搜索到该指定目录下的包和包中的类文件。

包名本身就是一个目录,包和子包之间用.隔开,以表明包的层次目录结构。(包名就是文件夹名,类名就是文件名)。

在编写Java源程序时,对一个Java程序文件可以使用声明报道语句指定其中每个类的字节码文件所属的包。

声明包语句的关键字为package,后面跟着包名或者包的层次目录名,该语句若存在则必须是Java程序文件中的第一条语句

改程序文件被编译后就把每个类的字节码文件保存到指定的包中。若一个Java程序文件不带有声明包的语句,则其中每个类的字节码文件被保存到当前目录中,即被编译的Java程序文件所在的的目录中

像程序中引入包的关键字为import,后面跟着包名和类名,包名和类名之间也必须用句点分开。

若需要引入包中的所有类,则需要用*代替类名,例如import java.io.*;,语句向所在的Java程序文件中引入了java.io包中的所有类。

引入包语句import必须出现在声明包语句package之后和所有类定义模块之前的位置。

当编译带有声明包语句的程序文件时,在编译命令中,必须使用-d参数项,后面跟着包所在的目录路径,若把包保存在当前目录时,则使用句点代替。
例如程序a.java开头为package myJava;,编译指令为javac -d . a.java,编译命令执行后将在当前目录下建立一个包名为myjava的目录,此目录中包含文件a.class

在一个Java程序文件中,系统将自动引入java.lang包中的所有类 (自动加上import java.lang.*;),在java.lang包中含有常用的系统类,如字符串类String,基本数据类型的包装类,数学函数类Math,系统基类Object,系统状态类System.Java系统类库中包含有各种用途的包,如进行文件操作的io包、进行网络应用的net包、进行数据库操作的sql包、进行可视化图形用户窗口界面操作的awt包、进行集合数据操作的util包等.

  • java.lang包:java.lang包是Java语言的核心类库,包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系统都会自动地引入java.lang包,所以这个包的加载是缺省的。
  • java.io包: java.io包是Java语言的标准输入/输出类库,包含了实现Java程序与操作系统、用户界面以及其他Java程序做数据交换所使用的类,如基本输入/输出流、文件输入/输出流、过滤输入/输出流、管道输入/输出流、随机输入/输出流等。凡是需要完成与操作系统有关的较底层的输入输出操作的Java程序,都要用到java.io包。
  • java.util包:java.util包包括了Java语言中的一些低级的实用工具,如处理时间的Date类,处理变长数组的Vector类,实现栈和杂凑表的Stack类和HashTable类等,使用它们开发者可以更方便快捷地编程。
  • java.awt包:java.awt包是Java语言用来构建图形用户界面(GUI)的类库,它包括了许多界面元素和资源,主要在三个方面提供界面设计支持:低级绘图操作,如Graphics类等;图形界面组件和布局管理,如Checkbox类、Container类、LayoutManager接口等;以及界面用户交互控制和事件响应,如Event类。
  • java.applet包:java.applet包是用来实现运行于Internet浏览器中的Java Applet的工具类库,它仅包含少量几个接口和一个非常有用的类:java . applet . Applet。
  • java.net包: java.net包是Java语言用来实现网络功能的类库。由于Java语言还在不停地发展和扩充,它的功能,尤其是网络功能,也在不断地扩充。目前已经实现的Java网络功能主要有:底层的网络通信,如实现套接字通信的Socket类、ServerSocket类;编写用户自己的Telnet、FTP、邮件服务等实现网上通信的类;用于访问Internet上资源和进行CGI网关调用的类,如URL等。
  • java.awt.event包: java.awt.event包是对JDK 1.0版本中原有的Event类的一个扩充,它使得程序可以用不同的方式来处理不同类型的事件,并使每个图形界面的元素本身可以拥有处理它上面事件的能力。
  • java.sql包: java.sql包是实现JDBC(Java database connection)的类库。利用这个包可以使Java程序具有访问不同种类的数据库的功能,如Oracle,Sybase,DB2,SQLServer等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统编程——线程池

http://blog.csdn.net/tennysonsky/article/details/46490099# 线程池基本原理 在传统服务器结构中,常是有一个总的监听线程监听有没有新的用户连接服务器,每当有一个新的用户进入,服务器就开启一个新的线程用户处理这 个用户的数据包。这个线…

【Java学习笔记五】Java异常处理

异常通常分为三类: 程序可控制的异常:一般是可预见的错误,不是致命的。例如:除数为0,数组下标越界。程序不可控制的的异常:这种异常往往是致命的,但是系统可以预见的。例如:系统栈溢…

【C++学习笔记一】C++类和对象详解

类定义是以关键字class开头,后面跟类的名称。主体是包含在一对花括号中。类定义后必须跟着一个分号或一个声明列表。 类的对象的公共数据成员可以使用直接成员访问运算符.来访问。需要注意的是,私有的成员和受保护的成员不能直接使用成员访问运算符来访…

C语言实现的简单的线程池

http://www.linuxidc.com/Linux/2013-01/77619.htm 有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带来的开销,我们可以使用线程池。下面是一个C语言实现的简单的线程池。 头文件: 1: #ifndef THREAD_POOL_H_…

C++获取当前时间

可以使用windowsAPI直接获取。 例如&#xff1a; #include<windows.h> #include<cstdio>using namespace std;int main() {SYSTEMTIME now;GetLocalTime(&now);printf("现在是%02d时%02d分%02d秒\n",now.wHour,now.wMinute,now.wSecond);printf(&…

成员函数后面加上const的作用

const表示成员函数不会修改类中的数据成员。 规则&#xff1a; 在类中被const 声明的函数只能访问const 函数&#xff0c;而非const 函数可以访问任意成员函数。在成员函数中不管数据是否具有const 属性&#xff0c;编译器检查的的是是否有修改&#xff08;赋值&#xff0c;自…

简单Linux C线程池

http://www.cnblogs.com/venow/archive/2012/11/22/2779667.html 大多数的网络服务器&#xff0c;包括Web服务器都具有一个特点&#xff0c;就是单位时间内必须处理数目巨大的连接请求&#xff0c;但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的&#xff1…

C++创建对象:栈和堆的区别

首先我们应该了解栈和堆的差别&#xff1a; 详细信息&#xff1a;传送门 栈相当于函数自带的存储空间&#xff0c;在windows下一般为2M,在Linux下一般为8M&#xff0c;存取速度稍微快一点。堆是系统的空间&#xff0c;相对较大&#xff0c;一般为2G&#xff0c;效率稍微慢一点…

IO多路复用之poll总结

http://www.cnblogs.com/Anker/p/3261006.html 1、基本知识 poll的机制与select类似&#xff0c;与select在本质上没有多大差别&#xff0c;管理多个描述符也是进行轮询&#xff0c;根据描述符的状态进行处理&#xff0c;但是poll没有最大文件描述符数量的限制。poll和select同…

【C++学习笔记二】C++继承

继承 继承允许我们一句另一个类来定义一个类&#xff0c;这使得继承和维护一个程序变得更加容易&#xff0c;也达到了重用代码功能和提高执行效率的效果。 一般格式为&#xff1a; class 派生类名 :访问修饰符 基类名{};其中访问修饰符是public protected private中的一个&a…

处理大并发之二 对epoll的理解,epoll客户端服务端代码

http://blog.csdn.net/wzjking0929/article/details/51838370 序言&#xff1a; 该博客是一系列的博客&#xff0c;首先从最基础的epoll说起&#xff0c;然后研究libevent源码及使用方法&#xff0c;最后研究nginx和node.js&#xff0c;关于select,poll这里不做说明&#xff0c…

C++基类指针指向派生类(指针)

我们常用基类指针指向派生类对象来实现多态性。 私有继承不允许基类指针指向派生类 基类指针只能访问到基类中含有的公有成员。 当用基类指针指向派生类对象在动态分配堆上内存的时候&#xff0c;析构函数必须是虚函数! 成员如果是数据成员的话访问的是基类的版本&#xff…

C++虚继承中构造函数和析构函数顺序问题以及原理

多重继承的问题&#xff1a;多个类B,C,…继承同一个类A导致如果X继承了B,C,…那么在X中将还有多个A中成员的拷贝&#xff0c;如果想要访问A中的成员如果不加名字空间将会导致二义性&#xff0c;这种拷贝大多是没有实际意义的&#xff0c;为了避免这种空间浪费&#xff0c;C有虚…

一个简单的linux线程池

http://blog.csdn.net/wzjking0929/article/details/20312675 线程池&#xff1a;简单地说&#xff0c;线程池 就是预先创建好一批线程&#xff0c;方便、快速地处理收到的业务。比起传统的到来一个任务&#xff0c;即时创建一个线程来处理&#xff0c;节省了线程的创建和回收的…

【C++学习笔记三】C++多态、抽象(接口)

当类之间存在多种层次结构&#xff0c;并且类之间通过继承关联时就会用到多态。 虚函数在子类中的覆盖版本和该函数在基类中的原始版本必须有相同的函数签名、函数名、形参名、常属性。如果返回值为非类类型&#xff0c;则必须相同&#xff0c;如果是类类型A的指针或者引用&am…

C++重载和重写的条件以及重写后对基类函数的覆盖

重载&#xff1a;同一个类中名字相同&#xff0c;参数列表不同的方法构成重载函数&#xff0c;和返回值没有关系。这就意味着就算返回值不同&#xff0c;只要名字相同参数列表相同编译器还是会报错&#xff0c;觉得一函数被定义了两次。 重写&#xff1a;派生类中只要函数名字…

C++静态成员和静态方法

在类中&#xff0c;静态成员可以实现多个对象之间共享数据&#xff0c;同时保证了安全性。静态数据对该类的所有对象是公有的&#xff0c;存储一处供所有对象使用。 注意&#xff1a; 静态成员定义时需要在前面加上关键字static静态成员必须初始化且必须在类外进行&#xff0…

基于epoll的简单的http服务器

http://blog.csdn.net/fangjian1204/article/details/34415651 http服务器已经可以处理并发连接&#xff0c;支持多个客户端并发访问&#xff0c;每个连接可以持续读写数据&#xff0c;当然&#xff0c;这只是一个简单的学习例子&#xff0c;还有很多bug&#xff0c;发表出来只…

C++单例模式简单实现

有时候我们需要某个类只能被实例化一次&#xff0c;并且其他类都可以访问到这个类&#xff0c;就需要这种设计模式。 例如我们想要做个资源管理器&#xff0c;显然这个管理器只能有一个。 这种模式有很多实现方式&#xff0c;这里介绍最简单的一种&#xff0c;想要了解更多可…

Linux C++ 实现线程池

http://blog.csdn.net/qq_25425023/article/details/53914609 线程池中的线程&#xff0c;在任务队列为空的时候&#xff0c;等待任务的到来&#xff0c;任务队列中有任务时&#xff0c;则依次获取任务来执行&#xff0c;任务队列需要同步。 Linux线程同步有多种方法&#xff…