JAVA基础教程
JAVA基础教程合集
蒋固金
天下大事必作于细,天下难事必作于易
展开
-
JAVA基础教程汇总
到这一篇博客为止,JAVA的基础部分已经介绍完了,这一篇为基础部分的汇总。原创 2016-01-08 16:11:26 · 8174 阅读 · 0 评论 -
JAVA访问数据库之增删改查(CRUD)
上一篇博客介绍了如何使用JAVA连接数据库,那么这一篇将继续为大家介绍如何使用JDBC对数据库的增删改查(CRUD)操作。 这一篇博客中的示例将使用上一篇中生成的H2数据库文件。查询查询在数据库的操作中是很重要的,我们把数据保存在数据库中,就是为了我们在需要的时候能够快速、高效的查询出来。修改在这里,我讲增删改作为一类,同属于对数据库的修改操作,在例子中,也会发现,我们使用的方法原创 2016-01-08 11:30:41 · 16662 阅读 · 0 评论 -
JAVA访问数据库之连接数据库
开发一个访问数据库的应用程序,首先要加载数据库的驱动程序,只需要在第一次访问数据库时加载一次,然后每次运行时创建一个Connection实例,紧接着执行操作数据库的SQL语句,并处理返回的结果集,最后在完成完成此次操作时销毁前面创建的Connection,释放与数据库的连接。加载数据库驱动在连接数据库之前,首先要把JDBC驱动类加载到java虚拟机,可以使用java.lang.Class类原创 2016-01-06 09:57:35 · 4224 阅读 · 0 评论 -
JAVA访问数据库之概述
JAVA类库中包含一组用于访问数据库的接口和类,作为开发数据库应用程序的API。这些接口和类统称为JDBC(Java DataBase Connectivity),JDBC是访问数据库的类和接口的结合。对于数据库的操作,在整个Java学习过程中至关重要。JDBC简介JDBC提供了连接各种常用数据库的能力。有了JDBC,访问数据库就是一件很容易的事,有了JDBC,就不必为访问Sysbase数据库和Or原创 2016-01-05 22:25:09 · 2852 阅读 · 0 评论 -
JAVA网络编程之UDP
上一篇博客中使用的Socket是基于TCP协议的,这一篇为大家简单介绍一下UDP协议。 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。 UDP协议全称是用原创 2016-01-05 20:36:06 · 2126 阅读 · 0 评论 -
JAVA网络编程之Socket
在前面博客中使用到的HttpsURLConnection实际上是基于HTTP协议完成获取网络资源的,而HTTP协议又是基于TCP/IP协议的,这一片博客将介绍在java中如何使用TCP/IP协议进行服务端与客户端之间的通信。 TCP/IP,Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,原创 2016-01-05 19:06:30 · 2584 阅读 · 3 评论 -
JAVA网络编程之模拟表单提交
这一篇博客是对上一篇《JAVA网络编程之获取网络资源》的扩充,这一篇将使用HttpURLConnection来模拟一个表单的提交。在B/S架构的系统中,请求时通过浏览器与服务端进行交互的,提交请求参数时使用form表单进行提交,但是有很多时候,我们需要在程序中直接调用HTTP接口,同时需要传递一些参数,那么这个时候我们就可以通过使用HttpURLConnection来模拟表单的提交过程。首先,我们可原创 2016-01-05 16:11:23 · 3276 阅读 · 0 评论 -
JAVA网络编程之获取网络资源
在应用程序开发过程中,很多时候我们会用网络资源,比如接口调用等。Java中也提供了相关的类去处理网络资源,而我们在处理网络资源的时候,用到的最多的就是IO,所以对IO还不了解的可以先看看前面的博客。 Java中,处理网络资源、网络通信所需要的类都在java.net包中。URL类URL代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例原创 2016-01-05 11:39:59 · 5552 阅读 · 1 评论 -
JAVA多线程机制之死锁
同步特性使用起来非常方便,功能很强大。但有的时候考虑不周的话有可能出现线程死锁。死锁主要是多个线程争抢资源造成的。 下面通过一个例子演示死锁:class Resource{ private int res = 0; public int getRes() { return res; } public void setRes(int res) {原创 2016-01-04 23:01:02 · 2361 阅读 · 0 评论 -
JAVA多线程机制之暂停、恢复和停止
在JDK1.2以前的版本如果要实现线程的暂停、恢复和停止的方法分别是suspend()、resume()、stop()。但是从JDK1.2以后这些方法已经被遗弃,因为它们有可能造成严重的系统错误和异常。 首先suspend()方法不会释放线程所占用的资源。如果使用该方法将某个线程挂起,则可能会使其他等待资源的线程死锁。而resume()方法本身并无问题,但是不能独立于suspend()方法存在。原创 2016-01-04 21:19:01 · 8751 阅读 · 1 评论 -
JAVA多线程机制之同步与互斥
一个多线程的程序,两个或者多个线程可能需要访问同一个数据资源。这时就必须考虑数据安全的问题,需要线程互斥或者同步。线程的互斥当多个线程需要访问同一资源时,要求在一个时间段内只能允许一个线程来操作共享资源,操作完毕后别的线程才能读取该资源,这叫线程的互斥。我们需要使用synchronized来给共享区域加锁,确保共享资源安全。 如果一个线程调用了某个对象的synchronized方法,它在这个方法运原创 2016-01-04 20:12:40 · 8389 阅读 · 1 评论 -
JAVA多线程机制之线程创建
在Java中创建线程有两种方式,一种是继承Thread,另一种是实现Runnable接口,Thread实际上也实现了Runnable接口。原创 2016-01-04 15:54:39 · 2573 阅读 · 2 评论 -
JAVA多线程机制之线程概念
在操作系统中,一个独立的正在运行的程序称为进程,通常一个程序又被分为称作任务的小块,任务又可以进一步分为称作线程的更小的块。如果一个程序多于一个线程同时执行,就可以称为多线程并行。 一个线程被定义为一个单一的连续控制流,线程也可以成为执行环境或者轻量级程序。当一个程序发起之后,会首先生成一个缺省的线程,这个线程被称作主线程,就是由main方法引导进入的线程,main方法调用的方法结构会在这个主线程原创 2016-01-03 22:15:49 · 2848 阅读 · 0 评论 -
JAVA图形界面(GUI)之菜单
菜单是我们很常见的一种组件,可以方便我们进行操作,JAVA中也提供了菜单的支持。这一篇博客将演示在JAVA中如何使用菜单。我们以记事本的部分菜单为例。import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JFrame;import javax.swing.JMenu;impo原创 2016-01-03 21:40:55 · 22124 阅读 · 0 评论 -
JAVA图形界面(GUI)之表格
表格(JTable)是我们在GUI开发中很常用的一个组件。表格在可视化编程中用于显示信息,在Swing编程中非常有用,当要显示大量数据时,用表格可以清晰的显示出来。 本篇博客将演示JTable的基本用法。构造方法: 方法名 说明 JTable() 构造一个默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化 JTable(int numRows,原创 2016-01-03 21:02:43 · 34101 阅读 · 0 评论 -
JAVA图形界面(GUI)之事件处理机制
之前几篇博客中,我们编写了一些示例,但是这些示例并不能与读者进行交互,读者之所以对图形界面感兴趣,就是因为图形界面与读者交互能力强。但是单纯的界面是没有使用价值的,要是图形界面能与读者交流,那么必须了解java的事件处理机制。 首先组件要先注册事件处理器,当读者单击组件、移动鼠标或者敲击键盘都会产生事件(Event)。一旦有事件产生,应用程序做出对该事件的响应,这些组件就是事件源(Event So原创 2016-01-03 20:31:04 · 12464 阅读 · 0 评论 -
JAVA图形界面(GUI)之布局管理器
一个友好的读者界面是一款软件成功的关键因素之一。布局管理器就是用来管理读者的界面。摆放的效果直接影响到界面是否美观。布局管理器通过布局管理类来对各种读者组件进行管理。 使用布局管理器,不仅可以有序的排列组件,而且当窗体发生变化时,布局管理器很根据新版面来适配窗口大小。 如果设计时未指定组件的布局管理器,则使用默认布局管理器。默认布局管理器层次关系如图所示: 下面为大家介绍几种常用的布局管理器。原创 2016-01-01 15:32:04 · 37483 阅读 · 2 评论 -
JAVA图形界面(GUI)之常用组件
前面提到容器是用来组织组件的,那么这一篇博客就为大家介绍一些Java的常用组件。最后通过一个例子展示这些组件的实际效果。按钮(JButton)JButton是我们常用的一个组件,其表现形式为一个按钮。构造方法 方法 说明 JButton() 创建不带有设置文本或图标的按钮 JButton(Action a) 创建一个按钮,其属性从所提供的 Action 中获取 JButto原创 2015-12-31 16:58:09 · 28207 阅读 · 2 评论 -
JAVA图形界面(GUI)之容器
在Swing中,容器可以用来组织界面布局,容器中可以添加容器和组件。常用的有如下几种: 顶层容器:JFrame,JApplet,JDialog,JWindow 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane. 这篇博客将抽取其中几个常用原创 2015-12-31 14:31:57 · 7173 阅读 · 0 评论 -
JAVA图形界面(GUI)
前面的博客中,我们写的程序都属于控制台程序,从这一篇开始,将为大家介绍如何编写GUI程序,GUI意思是图形读者界面,比如我们用的QQ就属于GUI程序。抽象工具集(AWT)和SwingJAVA GUI基本类库位于java.awt 包中,这个包称为抽象窗口工具箱(Abstract Window Toolkit,AWT)。AWT中包含了很多图形界面编程的类。它包括用来容纳其它组件的容器类、用来控制进行组件原创 2015-12-31 09:01:50 · 5756 阅读 · 1 评论 -
JAVA输入输出(IO)之常用流
这一篇博客为大家介绍一下JAVA中常用的流的使用方法。 注:示例仅起到演示作用,不对异常做处理。ByteArrayInputStream、ByteArrayOutputStreamByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。 ByteArrayOutputStream类实现了一个输出流,其中的数据被原创 2015-12-30 15:02:07 · 2419 阅读 · 1 评论 -
JAVA输入输出(IO)之字符流
上一篇《JAVA输入输出(IO)之字节流》介绍了JAVA字节输入输出流的一些用法,字节流一般是用于读写二进制数据的,当我们要读些字符数据的时候,如文本文件,就显得有些麻烦。所以JAVA还提供了专门用于读写字符数据的字符流。字符输入流java.io.Reader用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义原创 2015-12-30 11:10:08 · 3498 阅读 · 2 评论 -
JAVA输入输出(IO)之字节流
在之前的博客中,当介绍某个类的时候,我会将类的构造方法以及方法摘要通过表格展示出来,这些内容在JDKAPI上面都可以找到,所以从这一篇博客开始,这些方法将不再全部列出,会从中抽取一部分常用的方法。 言归正传,在上一篇博客《JAVA输入输出(IO)之文件》中介绍了File类的简单使用,如果我们要对文件进行读取、写入,仅有一个File是远远不够的,这一篇为大家介绍字节流的概念,通过本片博客,我们可以原创 2015-12-29 21:14:15 · 2482 阅读 · 1 评论 -
JAVA输入输出(IO)之文件
计算机文件是以计算机硬盘为载体存储在计算机上的信息集合。JAVA中对文件的操作主要是使用java.io.File类。这一篇博客也将围绕着File类进行讲解。构造方法 方法名 说明 File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例 File(String pathname) 通过将原创 2015-12-29 14:52:24 · 2630 阅读 · 4 评论 -
JAVA泛型
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实原创 2015-12-29 14:14:57 · 2148 阅读 · 3 评论 -
JAVA集合框架之Map接口实现类
java.util.HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 co原创 2015-12-29 09:47:17 · 4177 阅读 · 3 评论 -
JAVA集合框架之List接口实现类
上一篇博客《JAVA集合框架之Set接口实现类》中介绍了Set接口的相关实现类,这一篇将介绍List接口的实现类。java.util.ArrayList< E >ArrayList有点类似于数组,相比较于数组而言,ArrayList可以动态的更改元素个数,相对于数组较为灵活。 每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 Ar原创 2015-12-28 14:18:44 · 2885 阅读 · 3 评论 -
JAVA集合框架之Set接口实现类
在上一篇《JAVA集合框架》中为大家介绍了JAVA集合框架的基本组成,这一片开始将为大家介绍集合框架中常用的实现类的用法。java.util.HashSet< E >此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。这是我们最常用的Set接口的实现类。构造方法 方法名 说明原创 2015-12-28 09:47:05 · 11494 阅读 · 5 评论 -
JAVA集合框架
在JAVA中专门设计了一组类,他们实现了各种各样的数据存储,这种专门用来存储其他对象的类,被称为容器类,这组类和接口的设计结构也被称为集合框架(Collection Framework)。 JAVA集合主要分为三种类型。Set(集):集合中的对象不按照特定顺序排序,不允许有重复对象。某些实现类可以对集合中对象按特定方式排序。List(列表):集合中的对象按照索引位置排序,允许有重复对象。Lis原创 2015-12-27 22:22:09 · 2558 阅读 · 3 评论 -
JAVA异常处理
异常的概念异常就是在程序运行过程中由于硬件设备的问题、软件设计错误、缺陷等导致的程序错误。在软件开发的过程中,很多情况都将导致异常的产生,例如文件不存在、网络异常等。 在java中,异常用对象表示。在一个方法的运行过程中,如果发生了异常,则这个方法(或者java虚拟机)生成一个代表该异常的对象,该异常对象中包括了异常事件类型以及发生异常时应用程序目前的状态和调用过程。异常的分类java类库中定了了原创 2015-12-27 15:09:00 · 2602 阅读 · 2 评论 -
JAVA常用类之包装类
JAVA语言包装类把基本数据类型转换为对象。每个JAVA基本类型在java.lang包中都有一个相应的包装类。 基本类型 包装类 boolean Boolean byte Byte char Character short Short int Integer long Long float Float double Double原创 2015-12-27 12:44:13 · 4406 阅读 · 1 评论 -
JAVA常用类之格式化
日期格式化在之前的博客中我们使用到了操作日期的一些类,我们发现,如果我们想要获得指定格式的日期字符串可以做到但是很麻烦,下面为大家介绍几种日期的格式化方式。java.text.DateFormatDateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文原创 2015-12-27 10:08:32 · 3845 阅读 · 1 评论 -
JAVA常用类之日期处理
在应用程序设计中,我们经常会用到日期时间,比如出生日期之类的,JAVA中为我们提供了一些处理日期的类。这一片博客将为大家介绍一下。java.util.DateDate类是我们用的比较多的一个处理时间的类。表示特定的瞬间,精确到毫秒。 在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的原创 2015-12-26 18:10:45 · 3334 阅读 · 2 评论 -
JAVA常用类之Math
在应用程序设计时,我们经常会用到一些数学函数进行计算,比如三角函数、指数等。在Java中提供了Math类方便我们进行数学计算。 Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 与 StrictMath 类的某些数学方法不同,并非 Math 类所有等价函数的实现都定义为返回逐位相同的结果。此类在不需要严格重复的地方可以得到更好的执行。 默认情况下,很多 Ma原创 2015-12-26 18:10:21 · 2326 阅读 · 1 评论 -
JAVA常用类之StringBuffer
上一篇博客中为大家介绍了String类的使用,这一篇再为大家介绍一个用于处理字符串的类StringBuffer。 在JDK API中对StringBuffer类的描述如下: 线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 可将字符串缓冲区安全地用于多个线程。可以在必要原创 2015-12-26 18:09:43 · 2206 阅读 · 2 评论 -
JAVA常用类之String
多个字符排成一串就构成了字符串,字符串在程序设计中使用广泛。在JAVA中定义了String和StringBuffer两个类来处理字符串的各种操作。这两个类位于java.lang包中,默认情况下不需要导入该包。构造方法 方法名 说明 String() 初始化一个新创建的 String 对象,使其表示一个空字符序列 String(byte[] bytes) 通过使用平台的默认字符集原创 2015-12-26 18:08:59 · 2448 阅读 · 4 评论 -
JAVA面向对象之内部类
内部类在一个类的内部声明的类,称为内部类(也叫内嵌类)。内部类只能在包含它的类中使用,同时它可以看作是该包含类的一段特殊代码,可以直接使用该包含类的变量和方法。 内部类编译后也会形成一个单独的class,但它附属于其包含类。创建内部类的对象时会有一个对外部类对象的引用,所以一般只能在非静态方法里创建内部类对象。 创建一个外部类Outer,在其非静态方法中调用内部类。public class Ou原创 2015-12-26 17:54:03 · 2393 阅读 · 1 评论 -
JAVA面向对象之抽象类和接口
抽象类接口抽象类与接口比较前面为大家介绍了类的相关概念以及使用方式,在Java中有两种特殊的类,分别为抽象类和接口(本质上还是类),这一片博客就为大家介绍一下抽象类以及接口的使用。对这两种特殊的类进行比较。抽象类如果一个类中存在某个或某些方法必须由继承该类的子类实现,这个时候我们就可以使用抽象类。使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指原创 2015-12-25 16:19:44 · 2717 阅读 · 2 评论 -
JAVA面向对象之多态
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。 多态指同一个实体同时具有多种形式。它是面向对象程序设计(原创 2015-12-25 09:55:05 · 2440 阅读 · 2 评论 -
JAVA面向对象之继承
继承是指通过某种机制使得当前定义的类可以使用现有类的所有可以继承的功能(属性和方法)而不用重新编写原来的类,从而简化类的定义,实现代码的复用。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。所以继承的另一种表述为:子类可以继承父类的属性和方法,以实现代码复用。 JAVA只支持单继承,不允许多重继承,即一个类只能有一个父类,但可以有多层继承,即一个类可以继承某原创 2015-12-24 21:23:06 · 2471 阅读 · 2 评论