BAIZHAN课程
憨憨老婆伍
此时此刻,恰如彼时彼刻
展开
-
SXT 面向对象
4.1 面向过程和面向对象面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。面向过程思想思考问题时,我们首先思考-怎么按照步骤实现?,并将步骤对应成方法,一步一步,最终完成。这个适合简单任务,不需要过多协作的情况下。比如:如何开车?面向过程适合简单、不需要协作的事务,但是当我们思考比较复杂的问题,比如"如何造车?",就会发现列出1234这样的步骤,是不可能的。那是因为,造车太复杂,需要很多协作才能完成,此时面向对象思想就应运而生了。面向对象和面向原创 2020-08-11 09:56:36 · 410 阅读 · 0 评论 -
10.3 CommonsIO
首先老师带我们了解了一下网站链接: link,计算机的权威网站第一段代码讲:文件/目录的大小package com.sxt.commons;import java.io.File;import org.apache.commons.io.FileUtils;/** * 大小 * @author 韩文韬 * */public class CIOTest01 { public static void main(String[] args) { //文件大小 long len=原创 2020-05-24 14:41:33 · 202 阅读 · 0 评论 -
10.2.11 文件分割 文件合并 序列流
RandomAcessFile:该类的实例支持读取和写入随机访问文件。随机访问文件的行为类似于存储在文件系统中的大量字节。下面这段代码为随机读取,并且指定了读取位置,读取剩余所有内容:package com.sxt.io;import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;/** * 随机读取和写入流 RandomAccessFile * @author 韩文韬 * */pub原创 2020-05-23 16:05:49 · 122 阅读 · 0 评论 -
10.2.10 打印流PrintStream&&PrintWriter
PrintStream我们每天用到的System.out就是这个流!我们看一下API:A PrintStream将功能添加到另一个输出流,即能够方便的打印各种数据值的表示;下面是PrintStream的具体事例:package com.sxt.io;import java.io.BufferedOutputStream;import java.io.FileDescriptor;import java.io.FileNotFoundException;import java.io.Fi原创 2020-05-22 16:02:04 · 144 阅读 · 0 评论 -
10.2.9 对象流
数据流操作的是基本数据类型和字符串,对象流操控的除了基本数据类型还包括其他的各种对象,以及自定义对象;ObjectInputStream && ObjectOutputStream1 先写出后读取2 读取的顺序与写出的顺序一致3 不是所有对象都可以序列化,必须实现serializable接口;打开API看一下:ObjectOutputStream:将Java对象的对象和图形写入OutputStream,可以使用ObjectInputStream读取(重构)对象;下面的代码为具原创 2020-05-22 15:33:31 · 112 阅读 · 0 评论 -
10.2.8 数据流
DataInputStream && DataOutputStream: 方便我们处理八大基本数据类型和字符串,简单来说,它不仅保留了我们的数据,而且还保留了我们的数据类型原创 2020-05-22 09:35:04 · 108 阅读 · 0 评论 -
10.2.7 转换流
InputStreamReader/OutputStreamWriter: 是字节流与字符流之间的桥梁,能将字节流转换为字符流,并且能为字节流指定字符集,可处理一个个的字符;作用:1 将字节流转成字符流,方便我们处理,但是前提是提供的字节流为纯文本;2 处理过程中可以指定字符集;我们打开APIInputStreamReader:是从字节流到字符流的桥梁;它读取字节,并使用指定的charset将其解码为字符。OutputStreamWriter:是从字符流到字节流的桥梁;使用指定的charset将写原创 2020-05-21 20:08:49 · 80 阅读 · 0 评论 -
10.2.6 字节缓冲流&&字符缓冲流
BufferedInputStream以及BufferedOutputStream1 缓冲流提升了性能2 最底层一定是节点流3 释放的时候只需要释放外层的数据流,内部会自动释放,如果想一个个释放,则从里到外依次释放现在我们看一下APIA BufferedInputStream为另一个输入流添加了新功能,即缓冲输入并支持mark和reset方法的功能,创建BufferedInputStream将创建一个内部缓冲区数组。当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多原创 2020-05-21 15:14:48 · 108 阅读 · 0 评论 -
10.2.5 装饰器设计模式
我们先写几个装饰器的例子帮助领悟原理第一个例子为模拟放大器功能:package com.sxt.io;/** * 实现放大器对声音的放大功能 * @author 韩文韬 * */public class DecorateTest01 { public static void main(String[] args) { Person p=new Person(); p.say(); //装饰 Amplifier am=new Amplifier(p); am.s.原创 2020-05-19 15:49:57 · 108 阅读 · 0 评论 -
10.2.4 封装拷贝过程&&封装释放资源&&try代码跃进
下面我们来对拷贝方法以及释放进行封装,下面是完整代码原创 2020-05-19 09:04:18 · 172 阅读 · 0 评论 -
10.2.3 字节数组流ByteArrayInputSream&&ByteArrayOutputStream&&字节数组的“拷贝过程”
之前处理的那些流的特点都是文件,它是存储在硬盘上的,我们必须借助操作系统,所以我们接完之后,就必须通知它释放资源;现在我们把源头(文件)换成另外一种源头,电脑上的一块内存,也就是所谓的字节数组,既然是内存,那么java是可以直接访问的,所以由垃圾回收机制来释放,所以待会我们要讲的字节数组流不用关闭;所有东西都可以转为字节数组,这就是这个流的好处,因为变成了二进制,方便我们网络上进行传输;字节数组不要太大;我们打开API来看一下:A ByteArrayInputStream包含一个缓冲区,其中包含原创 2020-05-18 18:02:42 · 194 阅读 · 0 评论 -
10.2.2 FileReader&&FileWriter
FileReader: 通过字符的方式读取文件,仅适合字符文件FileWriter: 通过字节的方式写出或追加数据到文件中,仅适合字符文件如果处理图片会怎么样,文件会损坏!我们可以看一下API:int read() 读一个字符int read(char[] cbuf) 将字符读入数组(读取字符数组)void write(int c) 写一个字符void write(String str) 写一个字符串void write(char[] cbuf) 写入一个字符数组其中,write中多了一个原创 2020-05-17 15:34:05 · 154 阅读 · 0 评论 -
10.2.1 写IO流程序InputStream&&OutputStream&&文件的拷贝
四个抽象类:InputStream的几个方法:close():关闭此输入流并释放与流相关联的任何系统资源;read():从输入流读取数据的下一个字节;蚂蚁搬家read(byte[] b):从输入流中读取一些字节数,并将它们存储到缓冲器阵列b;搬家公司OutputStream的几个方法:close():关闭此输出流并释放于此流相关联的任何系统资源;flush():刷新此输出流并强制任...原创 2020-05-17 14:16:49 · 198 阅读 · 0 评论 -
10.1 IO流前期准备&&File
01IO:input output,输入输出流关注将客户的需求转化为代码;–CommonsIO流:流动、流向,从一端移动到另一端;一段指的是程序,另一端指的是数据源;流是一个抽象、动态的概念,是一连串连续动态的数据集合;数据源:data source,提供原始数据的原始媒介,常见的有:数据库、文件、其他程序、内存、网络连接、IO设备;与程序之间的交互如下图所示:一切以程序为中心,输入...原创 2020-05-07 11:13:12 · 101 阅读 · 0 评论 -
9.X 使用容器存储表格数据
111原创 2020-05-05 12:41:03 · 163 阅读 · 0 评论 -
9.8 Collection工具类
类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。void sort(List) :对List容器内的元素排序,排序的规则是按照升序进行排序;void shuffle(List):对List容器内的元素进行随机排列;void reverse(List):对List容器内的元素进行逆续排列 ;void fill(List, O...原创 2020-05-04 21:54:33 · 115 阅读 · 0 评论 -
9.7 遍历集合的方法总结
遍历List方法一:普通for循环for(int i=0;i<list.size();i++){ String temp=(String)list.get(i); System.out.println(temp);}遍历List方法二:增强for循环(使用泛型!)for(String temp:list){ System.out.println(temp);}遍历L...原创 2020-05-04 19:55:06 · 130 阅读 · 0 评论 -
9.6 使用Iterator迭代器遍历容器元素
迭代器为我们提供了统一的原创 2020-05-04 19:25:55 · 227 阅读 · 0 评论 -
9.5 Set接口&&HashSet常用方法&&底层实现&&手动实现HashSet&&TreeSet的使用和底层实现
Set方法与Collection方法基本一样,只不过Set方法是(核心要点)没有顺序不可重复的,无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素,新元素如果和Set中某个元素通过equals()方法对比为true,则不能加入;甚至,Set中也只能放入一个null元素,不能多个;下面我们用代码来测试HashSet:打开Set源码public interface S...原创 2020-05-04 15:05:12 · 105 阅读 · 0 评论 -
9.4.4 TreeMap使用和底层原理
TreeMap和HashMap实现了同样的接口Map,因此,用法对于调用者来说没有区别;HashMap效率高于TreeMap,在需要排序的Map时才选用TreeMap。下面通过代码来学习如何使用TreeMap:如何建立一个TreeMapMap<Integer,String> treemap1=new TreeMap<>();.put(key,value)方法输入...原创 2020-05-04 12:16:26 · 130 阅读 · 0 评论 -
9.4.1 HashMap底层原理
HashMap底层实现采用了哈希表,这是一种非常重要的数据结构;哈希表的基本结构就是数组+链表;数组:占用空间连续,寻址容易,查询速度快,但是,增加和删除效率非常低;链表:占用空间不连续,寻址困难,查询速度慢,但是,增加和删除效率非常高;HashMap的源码有两个核心内容:1 static class Node<K,V> implements Map.Entry<K,...原创 2020-05-02 15:23:26 · 164 阅读 · 0 评论 -
9.4 Map接口--HashMap常用方法
现实生活中,我们经常需要成对存储信息;Map就是用来存储"键(key)-值(value)对"的。Map类中存储的"键值对"通过键来标识,所以"键对象"不能重复。下面我们用代码来测试HashMap的使用:首先定义一下HashMapMap<Integer,String> m1=new HashMap<>();其中键和值的类型可以是任意的;下图为Map接口中常用的方...原创 2020-05-02 12:25:21 · 227 阅读 · 0 评论 -
9.3.4 Vector向量
Vector底层是用数组实现的list,相关的方法都加了同步检查,因此“线程安全,效率低”。比如,indexOf方法就增加了synchronized同步标记。public synchronized int indexOf(Object o,int index){}一般都使用ArrayList如何选用ArrayList、LinkedList、Vector?需要线程安全时,用Vector。...原创 2020-05-02 09:57:22 · 212 阅读 · 0 评论 -
9.3.3 LinkedList源码解读&&手工实现
########LinkedList特点和底层实现########LinkedList底层是双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全;因此一般情况下不常用;下面这个图很重要,需理解 每一个节点(Node或者Entry)都包含三个部分----上、数据、下增加:把相邻的两个链表拆开指向我;删除:a1指向a3,a2指向空格;这就是链表的好处,很简单########L...原创 2020-05-02 09:39:18 · 154 阅读 · 0 评论 -
9.3.2 ArrayList源码解读&&手工实现
AraryList底层是用数组实现的存储,特点:查询效率高,增删效率低,线程不安全,我们仍然一般使用它数组的长度是有限的,但是ArrayList是可以存放任意数量的对象,长度不受限制,那么它是怎么实现的呢?-------------是通过数组扩容实现的下面我们来一步步的剥开ArrayList的源码:public ArrayList() { this.elementData = DEFAU...原创 2020-05-01 16:26:06 · 112 阅读 · 0 评论 -
9.3.1 List特点和常用方法
List是有序、可重复的容器;有序:List中每个元素都有索引标记,可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素;可重复:List允许加入重复的元素,更确切的讲...原创 2020-04-29 10:09:35 · 102 阅读 · 0 评论 -
9.2 Collection容器中的常用方法
Collection接口中定义的方法如下图所示:Collection中的方法List和Set已经全部继承,现在用ArrayList实现类来做:原创 2020-04-28 21:46:57 · 158 阅读 · 0 评论 -
9.1 泛型
#####################################基本概念#####################################数组就是一种容器,可以在其中放置对象或基本类型数据数组的优势:是一种非常简单的线性序列,可以快速地访问数组元素,效率高。如果从效率和类型检查的角度讲,数组是最好的;数组的劣势:不灵活,容量需要事先定义好,不能随着需求的变化而扩容。所以我...原创 2020-04-28 17:13:32 · 103 阅读 · 0 评论 -
6.1--6.3 异常机制
软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是Exception,意思是例外。我们来对比一下老司机与新司机,重点关注新司机public class Test1 { public static void main(String[] args) { //将d:/a.txt复制到e:/a.txt if("d:/a.txt"这个文件...原创 2020-04-27 16:12:54 · 129 阅读 · 0 评论 -
8.6 枚举
如果我们有必要定义一组常量的话,我们就需要使用枚举,所有的枚举都是常量,尽量不要使用枚举得到高级特性。接下来测试怎样使用枚举public class TestEnum { public static void main(String[] args) { System.out.println(Season.SPRING); Season a=Season.AUTUMN; ...原创 2020-04-26 22:13:41 · 76 阅读 · 0 评论 -
8.4 Math类与Random类
纯记忆内容~如下:1. abs 绝对值2. acos,asin,atan,cos,sin,tan 三角函数3. sqrt 平方根4. pow(double a, double b) a的b次幂5. max(double a, double b) 取大值6. min(double a, double b) 取小值7. ceil(double a) 大于a的最小整数8....原创 2020-04-26 17:12:59 · 90 阅读 · 0 评论 -
JAVA300讲之第五章练习题答案详解
一. 选择题使用权限修饰符( )修饰的类的成员变量和成员方法,可以被当前包中所有类访问,也可以被它的子类(同一个包以及不同包中的子类)访问。(选择一项)ApublicB.protectedC.默认D.private答案:B ,由下图可得以下关于继承条件下构造方法执行过程的代码的执行结果是( )。(选择一项)class Person { public Pe...原创 2020-04-26 15:35:40 · 954 阅读 · 0 评论 -
8.3.3 Calendar日历类&&可视化日历程序
如何利用Calendar来获得日期的相关元素呢?.get()public class TestCalendar { public static void main(String[] args) { //获得日期的相关元素 Calendar calendar=new GregorianCalendar(2999,10,9,22,10,50); int year=calendar.g...原创 2020-04-25 18:18:40 · 267 阅读 · 2 评论 -
8.3-8.3.2 时间处理相关类
核心类:java.util.Datejava.text.DateFormat 用来将字符串的时间对象进行转化java.util.Calendar 将常见的年月日等日期对象进行转化今天主要学习这三个Date类:用 long 类型的变量来表示时间,精确到毫秒获得当前的时刻的毫秒数方法如下long now=System.currentTimeMillis();创建date对象时会出...原创 2020-04-25 14:25:25 · 138 阅读 · 0 评论 -
8.2 StringBuffer&&StringBuilder
StringBuilder源码public final class StringBuilder extends AbstractStringBuilder与String源码不同的地方在于:char[] value没有final修饰,说明数组随时可以修改!因此吧StringBuilder称为可变的字符序列。下面是本节课的代码块:package cn.next.test;/...原创 2020-04-25 10:14:23 · 109 阅读 · 0 评论 -
JAVA300讲之第四章练习题答案详解
作业选择题1.以下语句中关于Java构造方法的说法错误的是( )2.在Java中,以下程序编译运行后的输出结果为( )3.在Java中关于静态方法,以下说法中正确的是( )4.下列选项中关于Java中类方法的说法错误的是( )5.分析如下Java程序的代码所示,则编译运行后的输出结果是( )简答题1. 面向过程和面向对象的区别2. 类和对象的关系3. 构造方法的作用和特征4. this关键字的作用...原创 2020-04-21 23:03:20 · 2252 阅读 · 0 评论