
Java_尚学堂笔记
Kadie_kk
这个作者很懒,什么都没留下…
展开
-
Java IO_文件分割_面向过程核心版 尚学堂187
https://www.bilibili.com/video/BV1ct411n7oG?p=188RandomAccessFile类的实例支持读取和写入随机访问文件。其构造器可以指定读写模式:它的第一个参数是文件的路径或文件的对象,不是放其它的流了,第二个参数mode:可以有读取和读写,"rws"和"rwd"不常用。他的操作方式和字节流是一样的。其seek(搜寻)方法:测试RandomAccessFile 的 seek方法:指定起始位置,读取剩...原创 2020-07-30 11:44:24 · 276 阅读 · 0 评论 -
Java IO_打印流 尚学堂186
https://www.bilibili.com/video/BV1ct411n7oG?p=187打印流也是处理流:System.out就是这个流。这个流方便我们打印各种数据。只见字节流。PrintStream的构造器:他的构造器可以直接指定文件,可以指定文件的编码,以及文件的对象,还可以指定字节流。他的字节流可以自动刷新,不用手动的flush了。以及可以指定字节流处理文本时候的编码的字符集。PrintStream的append方法的内部返回的是this对象。..原创 2020-07-29 21:08:54 · 300 阅读 · 0 评论 -
Java IO_对象流 尚学堂185
对象流操作的除了基本数据类型、字符串,还包括其他的各种对象,包括自定义的对象。ObjectInputStream和ObjectOutputStream有特殊的叫法。序列化:ObjectOutputStream,对象输出流。反序列化:ObjectInputStream,对象输入流。必须先写出后读取,写出的顺序与输出的顺序保持一致。不是所有的对象都可以序列化,必须有一个标识,告诉虚拟机这个对象可以序列化。ObjectOutputStream将原始的数据类型和对象写入字节流OutputS..原创 2020-07-29 19:54:29 · 265 阅读 · 0 评论 -
Java IO_数据流 尚学堂184
数据流是一种装饰流:DataInputStream 和 DataOutputStrean 的作用是方便我们处理8大基本数据类型和字符串,它不止保留了数据,还保留了数据类型,方便我们后期获取这个数据类型,而不用我们去强转了。处理的时候要保证顺序一致(数据类型的排序),读取的顺序和写出的顺序保持一致。一般来说,是先写出再读取。DataOutputStream以便携式方式将原始Java数据类型写入输出流(即保留了数据类型)。DataOutputStream的构造器:需要一个..原创 2020-07-29 16:04:37 · 244 阅读 · 0 评论 -
Java IO_转换流_字符集 尚学堂183
https://www.bilibili.com/video/BV1ct411n7oG?p=184转换流也是一种装饰流:转换流的作用是将字节流转换成字符流。字节流可以处理一切东西,包括图片、视频、音频、纯文本等,所以很多系统或则框架的底层返回给你的都是字节流。System.in 和 System.out 都是字节流。使用的前提是给的字节流全是纯文本的内容,非纯文本的内容使用字符流是处理不了的。在处理的过程中可以指定字符集。InputStreamReaderAn...原创 2020-07-29 14:28:46 · 318 阅读 · 1 评论 -
Java IO_字符缓冲流 尚学堂182
BufferedReader和BufferedWriter提供了很多新增的方法,所以不要发生多态。要用子类新的方法就不要发生多态的举例:https://blog.youkuaiyun.com/BOKEhhh/article/details/107654439用多态也可以,但BufferedReader和BufferedWriter很多新增的便利的方法就不能用了。BufferedReader从字将输入流读取文本(注意,是纯文本),缓冲字符,以提供字符,数组和行的高效读取。BufferedReader...原创 2020-07-29 10:26:30 · 339 阅读 · 0 评论 -
Java IO_字节缓冲流 尚学堂181
https://www.bilibili.com/video/BV1ct411n7oG?p=182装饰流也称为处理流。字节缓冲流是对字节流的缓冲。不管怎么套,最底层的一定是节点流。节点流始终处于第一线。每个流都释放也没有问题,释放的规则是从里到外释放。释放BufferedInputStream的时候,它内部会自己找要释放的节点流。1、缓冲流提高了性能。2、最底层的一定是节点流。节点流始终处于第一线。3、释放的时候只需要释放最外层的处理流,它的内部会自动释放节点流。如果想手原创 2020-07-28 21:33:45 · 281 阅读 · 0 评论 -
Java IO_原理剖析_装饰器设计模式 尚学堂180
https://www.bilibili.com/video/BV1ct411n7oG?p=181GOF设计模式装饰器设计模式模拟一个声音放大器:/** * 实现放大器对声音的放大功能 */public class Test { public static void main(String[] args) { Person p = new Person(); p.say(); //装饰 Amplifier am = new Amplifier(p);原创 2020-07-28 20:08:08 · 221 阅读 · 0 评论 -
Java IO_工具类 尚学堂179
FileInputStream的构造器可以直接传一个String类型的参数,它的内部会自己new File,我们就可以把创建源头这部给省略了:public FileInputStream(String name) throws FileNotFoundException { this(name != null ? new File(name) : null);}FileInputStream的构造器抛出异常FileNotFoundException,而FileNotFoundExcept原创 2020-07-28 19:00:52 · 289 阅读 · 0 评论 -
Java IO_综合_对接流 尚学堂178
https://www.bilibili.com/video/BV1ct411n7oG?p=1791、图片读取到字节数组2、字节数组写出到文件import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.原创 2020-07-27 17:38:43 · 203 阅读 · 0 评论 -
Java IO_字节数组流 尚学堂177
ByteArrayInputStream类往构造方法里传的参数是字节数组,不是文件:getBytes方法能得到字节数组。FileInputStream和FileOutputStream的源是文件,存在硬盘中,Java虚拟机不能直接去操作,要通过操作系统(OS),所以用完后要通知操作系统去释放资源(close方法)ByteArrayInputStream的是字节数组,在内存中,不用close,是靠GC回收的。所以,ByteArrayInputStream类的close方法是个空方法,.原创 2020-07-27 16:22:37 · 221 阅读 · 0 评论 -
Java IO_文件流 尚学堂176
用InputStream处理的时候://3、操作(读取)int temp;while((temp = is.read()) != -1) { System.out.println((char)temp);}(char)temp遇到中文字符可能转不出来,因为字节数可能不够。英文字符没有任何问题。FileReader就可以很方便地处理,内部不用管它。直接用,很少会出现乱码的问题,它的内部已经处理完了。FileInputStream处理的是字节数组,FileReader处理的就可以原创 2020-07-27 11:58:21 · 277 阅读 · 0 评论 -
Java IO_文件拷贝 尚学堂175
https://www.bilibili.com/video/BV1ct411n7oG?p=176拷贝图片文件的例子:import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import .原创 2020-07-27 10:57:15 · 243 阅读 · 0 评论 -
Java IO_文件字节流 尚学堂174
读到缓冲(缓存)里面,中间容器叫做缓冲。import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;public class Test { public static void main(String[] args) { //1、创建源 File src...原创 2020-07-25 16:10:04 · 190 阅读 · 0 评论 -
Java IO_标准步骤 尚学堂173
第一个程序:理解操作步骤1、创建源2、选择流3、操作4、释放资源在相对路径下创建一个文件abc.txt:FileInputStream类是InputStream抽象类的一个实现类:publicclass FileInputStream extends InputStream{......}第一个程序:理解操作步骤:import java.io.File;import java.io.FileInputStream;import java.io.FileNotF.原创 2020-07-25 15:29:19 · 222 阅读 · 0 评论 -
Java IO_四大抽象类 尚学堂172
https://www.bilibili.com/video/BV1ct411n7oG?p=173https://www.sxt.cn/Java_jQuery_in_action/ten-javaio-streamclass.html流的分类字节流和字符流(从处理数据的角度分)按照处理数据的角度分类,可以分为字节流和字符流。能使用字符流的地方,全部都可以使用字节流;但能使用字节流,不一定能使用字符流(比如音频文件)。输入流和输出流(从流向的角度分)从流向的角度..原创 2020-07-25 13:39:20 · 406 阅读 · 0 评论 -
Java IO_File_字符集_乱码 尚学堂171
https://www.bilibili.com/video/BV1ct411n7oG?p=172目录编码:字符串-->字节解码:字节-->字符串乱码问题:1、字节数不够:2、字符集不统一:编码:字符串-->字节查看当前工程使用的编码:UTF-8:一个中文字符占3个字节getBytes方法默认使用工程的字符集:public class Test { public static void main(String[] arg..原创 2020-07-25 11:29:31 · 268 阅读 · 0 评论 -
Java IO_File_文件夹统计 尚学堂170
递归打印所有子孙级目录和文件:import java.io.File;public class Test { public static void main(String[] args){ File src = new File("F:/workspace/Eclipse_Java_workspace"); printName(src); } /** * 打印子孙级目录和文件的名称 */ public static void printName(File src) {原创 2020-07-25 10:32:43 · 201 阅读 · 0 评论 -
Java IO_File_文件夹创建 尚学堂169
mkdir方法确保上级目录存在,不存则在创建失败。mkdirs方法:上级目录可以不存在,不存在则一同来创建。import java.io.File;import java.io.IOException;public class Test { public static void main(String[] args) throws IOException{ File src = new File("F:/dir/test"); boolean flag = src.mkdir();原创 2020-07-24 21:24:40 · 162 阅读 · 0 评论 -
Java IO_File_API学习 尚学堂168
基本信息:import java.io.File;public class Test { public static void main(String[] args) { File src = new File("F:\\workspace\\Eclipse_Java_workspace\\TableTennis\\src\\a.png"); System.out.println("名称:" + src.getName()); /** * getPath方法: * 如果给原创 2020-07-24 20:50:25 · 164 阅读 · 0 评论 -
Java IO_File_API使用规则 尚学堂167
文件时存在硬盘上的,是由操作系统对接的。File类是文件和目录路径名的抽象表示。File类的常量:pathSeparator:路径分割符separator:名称分隔符在Windows中配置环境变量的时候,如果多个路径,我们要加封号;在Linux中用的是冒号:路径分割符pathSeparator进行了跨平台的常量的表示。名称分隔符separator就是路径中的“\”(Windows中),比如“D:\a\b.txt”中的\pathSeparator和separator都是Fi原创 2020-07-24 18:19:39 · 186 阅读 · 0 评论 -
Java 表格数据存储_javabean和list结合存储整张表 尚学堂165
https://www.bilibili.com/video/BV1ct411n7oG?p=166每一行数据使用一个javabean对象。整个表格使用一个Map/List。一般情况,作为一个完整的javabean,有相关的set和get方法和无参构造器。import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;原创 2020-07-24 16:25:14 · 274 阅读 · 0 评论 -
Java 164. 表格数据存储_map和list结合存储整张表 尚学堂164
https://www.bilibili.com/video/BV1ct411n7oG?p=165每一行数据使用一个Map。整个表格使用一个List。ORM思想:对象关系映射这样一个表格形式的关系,如何映射成对象?import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;public class T.原创 2020-07-24 16:04:52 · 259 阅读 · 0 评论 -
Java Collections工具类 尚学堂163
https://www.sxt.cn/Java_jQuery_in_action/nine-collections.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=164Collections工具类和Collection接口是两码事,注意Collections后面有个simport java.util.ArrayList;import java.util.Collections;import java.util.List;public原创 2020-07-24 15:41:54 · 166 阅读 · 0 评论 -
Java迭代器Iterator JDK源码分析
要分析的Java程序先上代码:import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set; public class Test { public static void main(String[] args) { Map<Integer, String> map = new HashMap.原创 2020-07-24 11:42:03 · 276 阅读 · 0 评论 -
Java 迭代器的使用_遍历List和Set和Map 尚学堂161
https://www.sxt.cn/Java_jQuery_in_action/nine-iterator.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=162迭代器为我们提供了统一的遍历容器的方式。迭代器是在java.util包里面的,使用迭代器要导入:import java.util.Iterator;迭代器是一个接口,这个接口也提供了泛型:public interface Iterator<E> {....原创 2020-07-23 23:12:21 · 264 阅读 · 0 评论 -
Java TreeSet使用和底层原理_Comparable接口 尚学堂160
https://www.sxt.cn/Java_jQuery_in_action/nine-treeset-underlyingimplementation.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=161TreeSet底层实际是用TreeMap实现的,内部维持了一个简化版的TreeMap,通过key来存储Set的元素。TreeSet类源码:public class TreeSet<E> extends Abstract原创 2020-07-23 20:21:35 · 321 阅读 · 0 评论 -
Java Set接口_HashSet常用方法_JDK源码解读 尚学堂158
https://www.sxt.cn/Java_jQuery_in_action/nine-setinterface.htmlhttps://www.sxt.cn/Java_jQuery_in_action/nine-hashset-bottomimplementation.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=159Set容器特点:无序、不可重复。无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。更确切原创 2020-07-23 16:42:38 · 229 阅读 · 0 评论 -
Java TreeMap使用和底层原理_Comparable接口_HashTable特点 尚学堂157
https://www.sxt.cn/Java_jQuery_in_action/nine-treemap.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=158接口Map的实现类有:HashMap类、Hashtable类、TreeMap类:import java.util.HashMap;import java.util.Hashtable;import java.util.Map;import java.util.TreeMap;原创 2020-07-23 15:50:35 · 232 阅读 · 0 评论 -
Java HashMap底层原理_查找键值对过程_equals和hashcode方法 尚学堂151
https://www.sxt.cn/Java_jQuery_in_action/nine-hashmap-bottom.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=152取数据过程get(key) 我们需要通过key对象获得“键值对”对象,进而返回value对象。明白了存储数据过程,取数据就比较简单了,参见以下步骤: (1) 获得key的hashcode,通过hash()散列算法得到hash值,进而定位到数组...原创 2020-07-23 09:17:44 · 529 阅读 · 1 评论 -
Java HashMap底层原理_存储键值对底层过程 尚学堂150
https://www.sxt.cn/Java_jQuery_in_action/nine-hashmap-bottom.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=151目录HashMap类的源码:hashCode方法Integer类重写了hashCode方法HashMap类的源码:public class HashMap<K,V> extends AbstractMap<K,V> i..原创 2020-07-22 21:23:50 · 343 阅读 · 1 评论 -
Java Map接口_HashMap常用方法 尚学堂148
Map中键不能重复。如果重复的话,则新的覆盖旧的。是否重复是根据equals方法来判断的。import java.util.HashMap;import java.util.Map;public class Test { public static void main(String[] args) { Map<Integer, String> m1 = new HashMap<>(); m1.put(1, "one");//1和"one"都是对象,存储的时候原创 2020-07-22 20:12:26 · 156 阅读 · 0 评论 -
Java ArrayList_底层JDK源码解读 尚学堂137
https://www.sxt.cn/Java_jQuery_in_action/nine-arraylist.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=138ArrayList底层是用数组实现的存储。 特点:查询效率高,增删效率低,线程不安全。我们一般使用它。如果涉及到要频繁地增、删元素,可以用LinkedList如果需要线程安全,可以使用Vector打开ArrayList的无参构造器源码: /** * C原创 2020-07-22 16:46:37 · 192 阅读 · 0 评论 -
Java ArrayList_索引和顺序相关方法 尚学堂136
List接口常用的实现类有3个:ArrayList、LinkedList和Vector。ArrayList底层实现是用数组。LinkedList底层实现是用链表。Vector底层实现也是用数组,线程安全。import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { List<String> list = new原创 2020-07-22 15:56:16 · 315 阅读 · 0 评论 -
Java Collection接口对2个容器对象的操作的方法 尚学堂135
addAll方法:import java.util.ArrayList;import java.util.List;public class Test { public static void main(String[] args) { List<String> list01 = new ArrayList<>(); list01.add("aa"); list01.add("bb"); list01.add("cc"); List<St原创 2020-07-22 15:25:18 · 187 阅读 · 0 评论 -
Java Collection接口_List接口_ArrayList常用方法 尚学堂134
查看ArrayList的继承树(eclipse中选中ArrayList按Ctrl+t):ArrayList实现了List接口:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{......}List接口继承了Collection接口:public in原创 2020-07-22 13:48:11 · 200 阅读 · 0 评论 -
Java 容器泛型_底层源码解读 尚学堂133
先上代码:import java.util.List;import java.util.ArrayList;import java.util.Map;import java.util.HashMap;public class Test { public static void main(String[] args) { List<String> list = new ArrayList<String>(); Map map = new HashMap();.原创 2020-07-22 11:26:45 · 177 阅读 · 0 评论 -
Java 泛型概念_自定义泛型 尚学堂132
https://www.sxt.cn/Java_jQuery_in_action/nine-customgenerics.htmlhttps://www.bilibili.com/video/BV1ct411n7oG?p=133自己写一个容器:public class Test { public static void main(String[] args) { Mycollection mc = new Mycollection(); mc.set("JAVAEE", 0)原创 2020-07-22 10:51:48 · 160 阅读 · 0 评论 -
Java 容器架构介绍 尚学堂131
https://www.sxt.cn/Java_jQuery_in_action/nine-generics.htmlCollection:有的翻译成“容器”,有的人翻译成“集合”Set:有顺序可重复。List:无顺序不可重复。Set接口的实现类有HashSet,List接口的实现类有ArrayList和LinkedListMap接口存放键值对,他的实现类有HashMap...原创 2020-07-21 16:55:26 · 181 阅读 · 0 评论 -
Java 手动抛出异常 尚学堂127
https://www.sxt.cn/Java_jQuery_in_action/six-custom-exception.htmlpublic class Test { public static void main(String[] args) throws IllegalAgeException { Person p = new Person(); p.setAge(-8); }}class Person { private int age; public原创 2020-07-21 16:49:40 · 250 阅读 · 0 评论