● Java编程语言
文章平均质量分 80
李阿昀
昀,三尺微命,一介书生。只当穷且益坚,不坠青云之志!
展开
-
第五十七讲 TCP编程——上传文本和图片
本讲讲解TCP编程的两个案例,即如何上传文本或图片至服务器。上传文本首先编写上传文本的客户端程序,需要读取本地文本数据,发送给服务端,服务端接收完毕后,回馈"上传成功"字样。package cn.liayun.net.tcp.uploadtext;import java.io.BufferedReader;import java.io.FileReader;import java.i...原创 2018-12-17 23:57:15 · 975 阅读 · 0 评论 -
第四十七讲 I/O流——常用IO流(打印流、合并流、序列流、随机访问流以及管道流)
打印流打印流即输出流,分为字节打印流PrintStream和字符打印流PrintWriter。下面分别对它们进行介绍。字节打印流概述PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream永远不会抛出IOException;而是,异常情况仅设置可通过checkError方法测试的内部标志。另外,为了...原创 2018-11-29 23:44:40 · 471 阅读 · 0 评论 -
第四十三讲 I/O流——字符流
转换流出现的原因及思想由于字节流操作中文不是特别方便,所以,Java就提供了转换流。为了能更好地操作中文数据,我们就需要学习一下字符流(字符流 = 字节流 + 编码表)了,这样就不可避免地要学习InputStreamReader和OutputStreamWriter这两个类了。字节通向字符的桥梁InputStreamReader概述InputStreamReader是字节流通向字符流的桥梁...原创 2018-11-25 20:58:16 · 1170 阅读 · 0 评论 -
第三十五讲 集合框架——Map接口
Map接口的概述将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值。其实Map集合是一个双列集合,存储的就是键值对,而且Map集合中必须保证键的唯一性。Map接口的特点Map与Collection在集合框架中属并列存在,而且Map是双列的,Collection是单列的;Map的键唯一,Collection的子体系Set是唯一的;Map集合的数据结构只针对键有效,跟...原创 2018-11-17 22:11:28 · 600 阅读 · 2 评论 -
第三十四讲 初次认识泛型
第三十四讲 初次认识泛型泛型的简单概述泛型是JDK1.5版本以后出现的新特性。它用于解决安全问题,是一个类型安全机制。泛型的由来概念说完之后,我们来看看Java语言是如何引入泛型的。在JDK1.4版本之前,容器什么类型的对象都可以存储,但是在取出时,需要用到对象的特有内容时,这时需要做向下转型。比如下面的程序:public class MyGenericDemo { publi...原创 2018-11-17 15:25:19 · 398 阅读 · 0 评论 -
第四十二讲 I/O流——字节流在操作中文数据
本篇文章主要围绕字符编码展开,为了能够更好地讲述这一主题,我将从字节流操作中文数据开始。字节流操作中文数据假设编写有如下程序,代码贴出如下:package cn.liayun.readcn;import java.io.FileOutputStream;import java.io.IOException;public class ReadCNDemo { public sta...原创 2018-11-23 01:34:52 · 543 阅读 · 1 评论 -
第四十一讲 I/O流——字节流
字节流的基本操作与字符流类同,但它不仅可以操作字符,还可以操作其他媒体文件。这里,我列出比较常用的字节流,如下:FileInputStreamFileOutputStreamBufferedInputStreamBufferedOutputStream字节输出流——FileOutputStream查看API帮助文档,FileOutputStream类的构造方法有:这样,我们就能...原创 2018-11-22 23:08:55 · 397 阅读 · 0 评论 -
第四十讲 I/O流——IO流概述、特点及其分类
IO流的概述大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等。在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象的表述为“流”,程序允许通过流的方式与输入输出设备进行数据传输。Java中的“流”都位于java.io包中,称之为IO(输入输出)流。输入流和输出流是相对于内存设备而言的,将外设中的数据读取到内存...原创 2018-11-22 22:12:54 · 3822 阅读 · 1 评论 -
第三十三讲 集合框架——集合名称阅读技巧
JDK1.2以后出现的集合框架中的常用子类对象,存在的子类规律可总结为:前缀名是数据结构名,后缀名是所属体系名。原创 2018-11-15 02:21:03 · 361 阅读 · 0 评论 -
第三十二讲 集合框架——Set接口
Set接口概述Set集合不允许存储重复元素,而且不保证元素是有序的(存入和取出的顺序有可能一致[有序],也有可能不一致[无序])。通过查看JDK文档,发现Set集合的功能和Collection的是一致的,所以Set集合取出的方法只要一个,那就是迭代器。Set接口的常用子类HashSet查阅HashSet集合的API介绍,可发现:此类实现Set接口,由哈希表(实际上是一个HashMap...原创 2018-11-15 02:04:28 · 575 阅读 · 0 评论 -
第三十七讲 JDK1.5的一些简单新特性
高级for循环高级for循环的作用是用于遍历Collection集合或数组。其格式为:for(数据类型(一般是泛型类型) 变量名 : 被遍历的集合(Collection)或者数组) {}遍历Collection集合之前我们使用迭代器是这样遍历的。package cn.liayun.foreach;import java.util.ArrayList;import java.u...原创 2018-11-19 00:01:01 · 274 阅读 · 1 评论 -
第三十六讲 集合框架工具类
Collections工具类Collections类概述针对集合操作的工具类,里面的方法都是静态的,可以对集合进行排序、二分查找、反转、混排等。Collection和Collections的区别Collection是单列集合的顶层接口,有子接口List和Set;而Collections是针对集合操作的工具类,有对集合进行排序和二分查找等方法。Collections类的常用方法对List...原创 2018-11-18 23:34:35 · 362 阅读 · 0 评论 -
第三十一讲 集合框架——List接口
List接口概述Collection接口有两个子接口:List(列表)、Set(集),本文我们先重点学习List(列表)接口。查阅API,查看List的介绍,我们可以发现以下这些话语:有序的collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。与set不同,列表通常允许重复的元素...原创 2018-11-14 02:07:57 · 403 阅读 · 0 评论 -
第四十九讲 GUI(图形用户界面)
GUI的简单概述Graphical User Interface(图形用户接口),用图形的方式,来显示计算机操作的界面,这样更方便更直观。与之相对应的Command line User Interface (命令行用户接口),就是常见的Dos命令行操作,需要记忆一些常用的命令,操作不直观。Awt和SwingAwt概述Java为GUI提供的对象都存在java.awt和javax.swing...原创 2018-12-02 17:06:43 · 1711 阅读 · 0 评论 -
第四十四讲 I/O流——字符缓冲流的原理
上一讲中已经介绍完了字符流的两个缓冲区对象——BufferedWriter和BufferedReader,而缓冲区的原理我们并没搞明白,本文就来揭示其真正面目。缓冲区的原理临时存储数据,减少了对设备操作的频率,提高了效率,其实就是将数据临时缓存到了内存(数组)中。BufferReader类的read方法实现原理下面我们就来分别模拟BufferReader类的read方法实现原理和其read...原创 2018-11-27 21:22:55 · 1169 阅读 · 0 评论 -
第五十六讲 TCP编程
TCP传输协议概述TCP协议是面向连接的通信协议,即在传输数据前先在客户端和服务器端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。正是由于TCP协议的面向连接特性,所以它可以保证传输数据的安全性,是一个被广泛采用的协议,例如在下载文件时,如果数据接收不完整,将会导致文件数据丢失而不能被打开,因此,下载文件时必须采用TCP协议。三次握手的简单理解在TCP连接中必须要...原创 2018-12-17 23:14:05 · 366 阅读 · 0 评论 -
第五十五讲 UDP编程
Socket套接字为了更方便地开发网络应用程序,美国的伯克利大学在UNIX上推出了一种应用程序访问通信协议的操作系统调用套接字(Socket)。Socket的出现,使得程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序。后来,套接字被引进到Windows等操作系统,成为开发网络应用程序的有效工具。Socket原理机制网络通信的两端都要有Socket,网络通信其实就是Socket间...原创 2018-12-16 23:59:19 · 471 阅读 · 0 评论 -
第五十四讲 网络通讯三要素
上一讲中,网络编程的概述说完了,接下来我们就要进行网络通讯了,那么需要哪些要素呢?在这一讲中,你将会知道网络通讯的三要素:IP地址;端口;传输协议。IP地址下面将以一个通俗易懂的例子展开讲解。比如说,我要跟你说话。第一个条件:我要先找到你 (IP地址)要想使网络中的计算机能够进行通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接收数据的计算机或者发送数据的计算机。在...原创 2018-12-16 16:54:33 · 1986 阅读 · 0 评论 -
第五十三讲 网络编程概述
计算机网络计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信。更专业一点的说法就是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。网络编程网络编程就是如何在程序中实现两台计算机的通信。举个例子,当你使用浏览器访问V2EX时,你的计算机就和V2EX的某台服...原创 2018-12-16 02:01:45 · 473 阅读 · 1 评论 -
第五十二讲 正则表达式
概述正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。又或者可以这样理解:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这...原创 2018-12-15 10:50:04 · 522 阅读 · 1 评论 -
第五十一讲 GUI编程练习
文件(夹)搜索在文本框中输入目录,点击“确定”按钮,将该目录中的文件与文件夹名称列在下面的文本区域中,如图所示。package cn.liayun.swing;import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;im...原创 2018-12-07 01:23:53 · 796 阅读 · 0 评论 -
第六十讲 反射的应用——泛型擦除与反射配置文件
现在夜已深了,而我却还在做笔记,哎!泛型擦除好了,来思考这样一个问题:向已存在的ArrayList<String>集合中添加一个Ingeter类型的数据,如何实现呢?如果还是按照之前那样写代码,肯定是不行的,这用屁股想就可以了,而现在我们学了反射技术,想都不用想,就该知道要使用到反射这门技术了。我来告诉大家,其实程序编译后产生的.class文件中是没有泛型约束的,这种现象我们称为泛...原创 2018-12-19 23:47:18 · 433 阅读 · 4 评论 -
第五十九讲 反射
有一段时间没有接触反射了,Java Web学的越深,深刻认识到反射的重要性,所以今天抽空来复习一下反射,记录如下。有关类的加载类加载的步骤当程序要使用某个类时,如果该类还未被加载到内存中,则系统(JVM)会通过加载,连接,初始化三步来实现对这个类进行初始化,也即一个类的加载步骤。类加载的时机(类什么时候加载到内存中去)类加载器类加载器的作用是负责将class文件加载到内存中,并为之...原创 2018-12-19 21:58:51 · 631 阅读 · 0 评论 -
第五十八讲 网络编程——常见的客户端和服务器端
常见的客户端和服务器端最常见的客户端是浏览器,即IE/Google Chrome;最常见的服务器端是Tomcat服务器,它是你WEB学习阶段必定绕不过去的一个服务器。模拟服务器端(Tomcat服务器)知道了最常见的客户端是浏览器后,那么我们就知道了浏览器中内置了如Socket一样的客户端程序,用Java代码模拟:Socket s = new Socket("192.168.0.102", ...原创 2018-12-19 20:31:55 · 1418 阅读 · 0 评论 -
第四十八讲 I/O流——常用IO流(数据流和内存操作流)
数据流数据流是操作基本数据类型的流,分为数据输入流和数据输出流。下面分别来对它们进行介绍。数据输入流概述数据输入流DataInputStream允许应用程序以与机器无关方式从底层输入流中读取基本Java数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。数据输出流概述数据输出流DataOutputStream允许应用程序以适当方式将基本Java数据类型写入输出流中。然...原创 2018-11-30 23:42:40 · 2194 阅读 · 0 评论 -
第四十六讲 I/O流——Properties集合
Properties概述Properties是HashTable的子类,也就是说它具备Map集合的特点;而且它里面存储的键值对都是字符串,没有泛型定义;最后它是一个可以和IO流相结合使用的属性集合类。Properties常用操作方法Properties基本的存和取方法描述public Object setProperty(String key,String value)...原创 2018-11-27 23:14:49 · 369 阅读 · 0 评论 -
第四十五讲 I/O流——初次认识装饰设计模式
装饰设计模式的由来现在有以下需求:要实现自己的一套IO系统,实现文件的读取。没必要百分百的跟JDK的功能一模一样。首先,MyWriter类专门用于写出数据,为什么会有这个类呢?因为数据类型有很多,比如文本MyTextWriter,媒体MyMediaWriter,等等。就会向上提取公共方法类即MyWriter,可以有如下继承关系:MyWriter//专门用于写出数据的类 |---MyText...原创 2018-11-27 22:33:05 · 288 阅读 · 0 评论 -
第三十讲 集合框架——集合类与Collection接口
集合类概述为什么出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。数组和集合类同是容器,有何不同?集合类的特点集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。集合框架体系为什么会出现这么多的容器呢?因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构。Coll...原创 2018-11-13 23:53:13 · 374 阅读 · 0 评论 -
第二十九讲 常用类
System概述System类用于描述系统一些信息,该类中的方法和属性都是静态的。其中有两个最常见的属性,分别是:out:标准输出流,默认对应的设备是显示器;in:标准输入流,默认对应的设备是键盘。最常见的成员方法方法说明public static long currentTimeMillis()返回以毫秒为单位的当前时间public static Pr...原创 2018-11-05 01:13:40 · 544 阅读 · 1 评论 -
第十五讲 面向对象基础——包
包的概述对类文件进行分类管理;给类提供多层命名空间;写在程序文件的第一行;类名的全称是包名.类名;包也是一种封装形式。包之间的访问权限 public protected default private 同一类中 √ √ √ √ 同一包中 √ √ √ 子类 √ √ ...原创 2018-09-02 17:11:11 · 427 阅读 · 0 评论 -
第十讲 面向对象基础——继承
继承的概述多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可;多个类可以称为子类,单独这个类称为父类或者超类;子类可以直接访问父类中的非私有的属性和行为。对于父类中私有的部分,子类对象是无法直接访问的;通过extends关键字让类与类之间产生继承关系,如class SubDemo extends Demo{}。...原创 2018-08-23 01:53:26 · 465 阅读 · 0 评论 -
第十四讲 面向对象基础——异常
异常的概述异常就是程序在运行时出现的不正常情况。我们不仅要问异常是怎么来的呢?问题也是现实生活中一个具体的事物,也可以通过Java的类的形式进行描述,并封装成对象。异常其实就是Java对不正常情况进行描述后的对象体现。异常的体系 对于问题的划分有两种:一种是严重的问题,一种是非严重的问题。对于严重的,Java通过Error类进行描述(通常出现重大问题,如运行的类不存在或者内...原创 2018-08-26 20:39:44 · 702 阅读 · 1 评论 -
第十三讲 面向对象基础——Object类与内部类
Object类Object类的概述Object类是所有对象的直接或者间接父类,传说中的上帝。该类中定义的肯定是所有对象都具备的功能。Object类中的equals方法Object类中已经提供了对对象是否相同的比较方法,如果自定义类中也有比较相同的功能,没有必要重新定义。只要沿袭父类中的功能,建立自己特有比较内容即可,这就是覆盖。例,假如有一个Person类,其代码为:...原创 2018-08-26 18:22:40 · 607 阅读 · 0 评论 -
第十二讲 面向对象基础——多态
多态的概述多态可以理解为事物存在的多种体现形态。例如,猫这个对象对应的类型是猫类型:猫 x = new 猫();,同时猫也是动物中的一种,也可以把猫称为动物:动物 x = new 猫();。动物是猫和狗等具体事物中抽取出来的父类型。多态在程序中的体现和前提多态在程序中的体现为父类的引用或者接口的引用指向了子类的对象。多态出现的前提是必须是类与类之间有关系,要么继承,要么实现;通常还...原创 2018-08-26 16:27:26 · 534 阅读 · 0 评论 -
第十一讲 面向对象基础——抽象类与接口
抽象类抽象类的概述抽象就是从多个事物中将共性的、本质的内容抽取出来。例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。抽象类:Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类;抽象方法的由来:多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没...原创 2018-08-26 11:45:25 · 605 阅读 · 0 评论 -
第六讲 Java语法基础——数组
数组的概念同一种类型数据的集合,其实数组就是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。数组的定义格式格式一:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];例,需求:想定义一个可以存储3个整数的容器。int[] x = new int[3];格式二:元素类型[] 数组名 = new 元素类型[]{元素, 元素, ...原创 2018-08-13 23:48:08 · 505 阅读 · 0 评论 -
第五讲 Java语法基础——函数
函数的概述函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。函数的定义格式函数的格式:修饰符 返回值类型 函数名(参数类型 形式参数1, 参数类型 形式参数2, ... ){ 执行语句; return 返回值;}对于该格式的解释如下:返回值类型:函数运行后的结果的数据类型。参数类型:是形式参数的数据类型。形式参数:是一个变量...原创 2018-08-13 21:41:47 · 498 阅读 · 0 评论 -
第三讲 Java语法基础
关键字概述被Java语言赋予了特殊含义的单词。特点关键字中所有字母都为小写。 这里将Java语言中的关键字列出如下: 用于定义数据类型的关键字 class interface byte short int long float double char boolean void ...原创 2018-08-09 01:24:16 · 600 阅读 · 0 评论 -
第八讲 面向对象基础——构造函数、this关键字、static关键字和对象的初始化流程
构造函数构造函数的作用可用于给对象进行初始化,对象一建立就会调用与之对应的构造函数。构造函数的特点函数名和类名相同;没有返回值类型;没有具体的返回值。构造函数和一般函数的区别构造函数和一般函数在写法上有不同,在运行上也有不同。构造函数在对象创建时执行,给对象初始化,而且只执行一次。而一般函数是对象调用时才执行,是给对象添加对象具备的功能。一个对象建立,构...原创 2018-08-16 01:45:42 · 893 阅读 · 0 评论 -
第七讲 初始面向对象
初始面向对象面向对象概述面向对象是基于面向过程的编程思想,强调的是对象,然后由对象去调用功能。面向对象的特点是一种符合人们思考习惯的思想。可以将复杂的事情简单化。将程序员从执行者转换成了指挥者(即从过程的执行者,转换成了对象的指挥者)。完成需求时: 先要去找具有所需的功能的对象来用;如果该对象不存在,那么创建一个具有所需功能的对象,这样简化开发并提高复用。...原创 2018-08-16 00:16:34 · 460 阅读 · 0 评论