![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaSE基础
文章平均质量分 74
Java基础知识。
华谨舞
QQ:1159968233
展开
-
Java使用青云客智能聊天接口做一个小助手
青云客:http://api.qingyunke.com/也可以使用其他公司的API,比如腾讯、阿里等。原创 2020-11-26 10:40:21 · 1501 阅读 · 1 评论 -
Java缓冲字符输出流BufferedWriter
描述常用方法描述父类:Writer常见IO流:InputStream、OutputStream、Reader原创 2020-11-20 16:59:27 · 201 阅读 · 0 评论 -
Java缓冲字符输入流BufferedReader
描述常用方法描述父类:Reader常见IO流:InputStream、OutputStream、Writer原创 2020-11-20 16:57:54 · 952 阅读 · 0 评论 -
Java字符流和字节流的桥梁OutputStreamWriter
miaoshu1常用方法描述父类:Writer子类:FileWriter常见IO流:InputStream、OutputStream、Reader原创 2020-11-20 16:50:52 · 148 阅读 · 0 评论 -
Java字符流和字节流的桥梁InputStreamReader
miaoshu常用方法描述父类:Reader子类:FileReader常见IO流:InputStream、OutputStream、Writer原创 2020-11-20 16:46:43 · 343 阅读 · 0 评论 -
Java文件字符输出流FileWriter
FileWriter是OutputStreamWriter的子类,用字符流的方式对文件进行写入操作。常用方法描述父类:OutputStreamWriter基类:Writer常见IO流:InputStream、OutputStream、Reader...原创 2020-11-20 16:41:44 · 157 阅读 · 0 评论 -
Java文件字符输入流FileReader
FileReader是InputStreamReader的子类,用字符流的方式对文件进行读取操作。常用方法描述父类:InputStreamReader基类:Reader常见IO流:InputStream、OutputStream、Writer...原创 2020-11-20 16:39:17 · 134 阅读 · 0 评论 -
Java字符输出流Writer
Writer是输出字符流的父类,它是一个抽象类,部分库不推荐使用Reader/Writer。用来写文本。常用方法描述(未实现,不可用)void write(int c)写入一个字符void write(char cbuf[])写入一个字符数组void write(char cbuf[], int off, int len)将cbuf[off]到cbuf[off+len-1]的数据写入void write(String str)写入一个字符串void w原创 2020-11-20 15:44:27 · 420 阅读 · 0 评论 -
Java字符输入流Reader
Reader是输入字符流的父类,它是一个抽象类,部分库不推荐使用Reader/Writer。只能用来读文本。常用方法描述(未实现,不可用)int read()从流中读取单个字符,返回字符值,如果到达流末尾且没有可用字符,返回-1int read(char cbuf[])从流中读取最多cbuf.length个字符,存入数组cbuf中,返回实际读取的字符数,如果到达流末尾且没有可用字符,返回-1int read(char cbuf[], int off, int len)原创 2020-11-20 15:08:32 · 191 阅读 · 0 评论 -
Java语法:try-with-resource处理IO异常
public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("D:\\a.txt"); BufferedInputStream bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream("D:\\cop.原创 2020-11-19 20:34:26 · 143 阅读 · 0 评论 -
Java缓冲字节输出流BufferedOutputStream
缓冲:缓和冲击,内存中预留了一部分空间,这些空间用来缓冲输入或输出的数据,叫做缓冲区。使用缓冲区可以提高程序读写效率,因为数据读写速度和处理速度不平衡,读写速度很慢,如果太多次读写数据,会浪费大量的时间。BufferedOutputStream会将写入外界设备的数据先放到缓冲区中,当缓冲区满时写入到外界设备(磁盘等),并清空缓冲区,减少IO操作,也可以调用flush()方法将缓冲区的数据强制写入到外界设备,并清空缓冲区。默认缓冲区大小是8K。public BufferedOutputStream.原创 2020-11-19 20:27:03 · 509 阅读 · 0 评论 -
Java缓冲字节输入流BufferedInputStream
缓冲:缓和冲击,内存中预留了一部分空间,这些空间用来缓冲输入或输出的数据,叫做缓冲区。使用缓冲区可以提高程序读写效率,因为数据读写速度和处理速度不平衡,读写速度很慢,如果太多次读写数据,会浪费大量的时间。BufferedInputStream会预先读取一段原始数据放入缓冲区中,使用read方法时读取的是缓冲区中的数据,如果读取的数据超过了缓冲区的数据范围,BufferedInputStream会重新从原始数据中读取下一段数据放入缓冲区。使用缓冲区可以避免大量的磁盘IO。不用缓冲区的类(如File.原创 2020-11-19 20:03:02 · 405 阅读 · 0 评论 -
Java文件字节输出流FileOutputStream
FileOutputStream是抽象类OutputStream的子类,用来对文件以字节流的方式进行写入操作。常用方法描述public FileOutputStream(String name)public FileOutputStream(File file)public FileOutputStream(String name, boolean append)public FileOutputStream(File file, boolean append)原创 2020-11-19 16:52:18 · 367 阅读 · 1 评论 -
Java字节输出流OutputStream
OutputStream是输入字节流的父类,它是⼀个抽象类(⼀般用他的子类)。输出时先从程序输出到缓冲区,当缓冲区满或调用flush()方法时输出到外界设备。常用方法描述(未实现,不可用)void write(int b)将指定的字节输出void write(byte b[])从b数组中输出b.length个字节void write(byte b[], int off, int len)从b数组中输出len个字节,从b[off]开始void flush()将原创 2020-11-19 15:42:15 · 391 阅读 · 0 评论 -
Java文件字节输入流FileInputStream
FileInputStream是抽象类InputStream的子类,用来对文件以字节流的方式进行读取操作。常用方法描述FileInputStream(String name)构造方法,传入文件所在地址,如果文件不存在会报异常FileNotFoundExceptionFileInputStream(File file)构造方法,传入文件对象,如果文件不存在会报异常FileNotFoundExceptionint read()从流中读取一个字节,返回该字节的码值,如果到达原创 2020-11-19 11:43:02 · 194 阅读 · 0 评论 -
Java字节输入流InputStream
InputStream是输入字节流的父类,它是⼀个抽象类(⼀般用他的子类)。常用方法描述int read()从流中读取单个字节,返回0~255之间的字节值,如果到达流末尾且没有可用字节,返回-1int read(byte b[])从流中读取一定数量的字节,存入缓冲数组b中,返回实际读取的字节数,如果到达流末尾且没有可用字节,返回-1int read(byte b[], int off, int len)从流中读取最多len个字节,从b[off]开始存入缓冲数组b中,返原创 2020-11-18 20:34:17 · 203 阅读 · 0 评论 -
Java的IO流
IO:Input/Output,输入输出输入流:从外界设备—>程序(内存)输出流:从程序(内存)—>外界设备按照处理数据的类型分类:字节流: 处理字节相关,比如音频、视频、图片、文本等二进制数据,以字节(8bit)为单位,可以处理几乎所有文件(InputStream/OutputStream)。字符流:处理字符相关,比如文本数据,以字符为单位,根据码表映射字符,一次读取多个字节(Reader/Writer)。字节流InputStream是输入字节流的父类,它是⼀个抽象类,原创 2020-11-18 20:33:20 · 141 阅读 · 0 评论 -
Java文件操作
相对路径:相对于某个基准目录或文件的路径,./表示当前路径,…/表示上级目录。绝对路径:储存在硬盘上的真正路径。Windows路径分割符:\表示Windows系统文件目录分隔符。\是反斜杠,在代码中用来转义,例如\n代表换行,\\代表单个反斜杠。如果是Java代码在Windows下写某个文件的话需要用下面的方式://单反斜杠是用来转义的 String dir = "D:\\test\\a.txt";Linux和Mac路径分隔符:/表示Linux和Mac的路径分隔符原创 2020-11-12 16:29:30 · 128 阅读 · 2 评论 -
Java集合框架之Collections工具类
Collections工具类是Java里关于集合的工具类,包含有各种关于集合操作的静态多态方法,不能实例化。和Collection的区别Collection是接口,提供了对集合对象进行基本操作的接口方法,有List、Set等多种具体的实现类。Collections是工具类,专门操作Collection接口实现类里面的元素。常用方法描述void sort(List list)对重写了compareTo方法的类的对象元素集合进行排序void sort(List list,原创 2020-11-11 19:29:00 · 77 阅读 · 0 评论 -
Java之Lambda表达式
关于Lambda表达式为什么出现,推荐看大佬的文章:https://blog.csdn.net/coderising/article/details/100021167?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160509164619724839215663%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=1原创 2020-11-11 18:48:56 · 117 阅读 · 0 评论 -
Java集合元素排序接口:Comparable
Comparable:public interface Comparable<T> { public int compareTo(T o);}Comparable是一个接口,用来定义排序规则。作用是对每个实现它的类的对象进行整体排序,compareTo方法是实现排序的具体方法。比如TreeSet、SortedSet、Collections.sort()方法等会调用类中实现的compareTo方法进行排序。String、Integer等类默认实现了这个接口,所以可以排序。comp原创 2020-11-11 18:28:42 · 500 阅读 · 0 评论 -
Java报错:Exception in thread “main“ java.lang.ClassCastException
具体错误:Exception in thread “main” java.lang.ClassCastException: a.b.c.A cannot be cast to java.lang.Comparableat java.util.TreeMap.compare(TreeMap.java:1294)at java.util.TreeMap.put(TreeMap.java:538)at java.util.TreeSet.add(TreeSet.java:255)at a.b.c.ce原创 2020-11-11 17:16:44 · 7085 阅读 · 0 评论 -
Java集合框架遍历之迭代器(Iterator)
迭代器Iterator是Java的一个接口,核心作用是用来遍历容器里的元素,容器实现了Iterator接口后,可以通过Iterator()方法获取一个Iterator对象。遍历容器有很多种方法,for循环、增强for循环等,为什么要用迭代器循环?因为容器的实现有很多种,比如ArrayList、LinkedList、HashSet、reeSet等,所以这些容器本身实现了Iterator接口后,开发人员就不用关心容器的遍历机制,直接使用对应的方法就可以。Iterator的三个核心方法:boolean原创 2020-11-09 16:00:28 · 236 阅读 · 0 评论 -
Java集合框架:Set(HashSet、TreeSet)API
Set相对于List是简单的一种集合,继承了Collection接口,它不保存相同的元素,不能保存基本数据类型(int等)。Set的实现细节可以参考Map,因为Set的实现类都是对应Map实现类的一种封装(HashSet是对HashMap的封装,TreeSet是对TreeMap的封装)。HashSet(封装HashMap):TreeSet(封装TreeMap):Map要储存键、值两个对象,Set只存储一个对象,当往Set集合中添加新元素时,Set会调用Map的put方法,将新元素作为键,在设置一原创 2020-11-08 18:43:43 · 178 阅读 · 0 评论 -
Java集合框架:Map(HashMap、TreeMap)API
Map集合中存储元素对(键(key)值(value)对),每个键映射一个值,就像List的每个索引代表一个值一样,可以把List看作自带数值键的Map,但他们并没有什么联系。Map集合中存储的元素键(key)不能相同,但值(value)可以相同。不能储存基本数据类型(int等)。Map的实现类有HashMap、TreeMap、LinkedHashMap等。HashMap:底层是一个数组结构(Node<K,V>[] table),数组中的每一项都是一个链表,HashMap是数组和链表的结原创 2020-11-08 17:01:42 · 199 阅读 · 0 评论 -
Java集合框架:List(ArrayList、LinkedList)API
List接口是一个有序存储的Collection(线性列表接口)。可以通过索引(类似数组下标)来访问List中的元素,第一个元素索引为0,允许存储相同的元素。常见的实现了List接口的类有ArrayList、Vector、LinkedList等。注意:不能存储基本数据类型(int、long、double…)。ArrayList:基于数组实现,是一个动态的数组队列,和数组不一样的是它的容量可以自动增长。只要内存够大,可以存储任意多的对象。插入和删除元素时速度慢,但是查找元素速度快。常用API:原创 2020-11-07 19:36:05 · 289 阅读 · 1 评论 -
Java自定义异常
自定义异常:当前JDK内置异常不满足需求,项目中会出现特有异常。使用自定义异常可以让业务逻辑更清晰。并没有实际功能,只有提示义意。自定义异常类需要继承JDK内置的异常类。当继承的是非RuntimeException类及其子类和Error类及其子类时为可查异常,需要在代码中进行捕获(try-catch)或者抛出(throw,throws)。否则就是不可查异常,对代码不进行要求。//自定义异常,库存异常class StockException extends Exception {原创 2020-11-06 16:39:33 · 74 阅读 · 0 评论 -
Java异常抛出:throw和throws
throws关键字用法: 返回类型 方法名(参数…) throws 异常类型A,异常类型B…{方法体},一般和throw一起使用。用于声明方法中可能出现的异常,并抛出异常到调用方。如果方法使用了throws,调用方需要对异常进行捕获(try-catch),如果不捕获,调用方也要使用throws关键字向上一级调用方抛出异常。主方法(main)抛出异常后由虚拟机处理。throw关键字用法: throw 异常对象;用于手动抛出一个异常,需要和throws关键字一起使用。一般和try-catc原创 2020-11-06 16:00:19 · 931 阅读 · 2 评论 -
Java为什么try的return不执行而finally的return执行了
因为finally是一定会执行的代码,try语句执行到return的时候会停止执行return,而去执行finally语句,如果finally语句没有return语句就会继续执行try语句的return。public class T { public static int divide(int num1, int num2){ try { int result = num1/num2;//2 return result;//3 }catch (Exception e){ Sys原创 2020-11-06 13:15:12 · 244 阅读 · 0 评论 -
Java异常捕获:try{}catch(异常类型){}finally{}
什么是异常:程序运行时发生的不被期望的事件,阻止了程序的正常运行。常见的程序错误可以分为三类:编译错误:没有遵循Java语法规范出错。运行时错误:程序在执行时出错。逻辑错误:程序没有按照预期的逻辑执行。java.long包中有一个java.long.Throwable类,这个类是java中所有错误和异常的超类,它有两个子类:Error类和Exception类。Error类中包含大量的子类,代表着程序无法处理的错误,比如OutOfMemoryError。Exception类也包含了大量的原创 2020-11-05 20:49:54 · 459 阅读 · 2 评论 -
Java关键字instanceof
instanceof是Java的一个二元操作符(运算符),也是Java的保留关键字。作用是判断一个类是否实现了某个接口,或者判断一个实例对象是否属于一个类。语法:/***如果该object是该class的一个实例,返回true,如果不是,或者object是null,返回false。*flag:boolean类型,接收运算数据。*object:任意对象表达式,必选项。*class:任意已定义的类名或接口名,必选项。*/boolean flag = object instanceof clas原创 2020-11-04 20:50:37 · 140 阅读 · 0 评论 -
Java接口interface
aef原创 2020-11-04 16:21:42 · 274 阅读 · 0 评论 -
Java面向对象——抽象abstract
什么是抽象:猫吃鱼,狗吃肉,他们都是动物,都会吃东西(吃的不一样),我们就可以把它们共有的东西提取出来,这就是抽象。一个猫类,一个狗类,他们都是动物,我们就可以抽象出一个动物类,这就是抽象类。猫类有eat()方法,狗类也有,我们抽象出来放到动物类,因为吃的不一样,动物类只声明不实现方法,就是抽象方法。...原创 2020-11-04 16:04:11 · 169 阅读 · 0 评论 -
Java-OOP特点:封装性、继承性、多态性
OOP:Object Oriented Programming面向对象程序设计。OOP有三个特点:封装性、继承性、多态性。封装性:什么是封装?封装就是把过程和数据包围起来,对数据的访问只能通过已定义的接口即方法。在java中通过关键字private,protected和public实现封装。封装定义程序如何引用对象的数据。封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。适当的封装可以让代码更容易理解和维护,也加强了代码的安全性。封装实现了高内聚,低耦合。Ja.原创 2020-11-04 14:48:14 · 397 阅读 · 0 评论 -
Java指针this和super
this关键字当⼀个对象创建后,JVM会给这个对象分配⼀个引用自身的指针,这个指针的名字就是 this。只能用于非静态⽅法体内,静态⽅法和代码块不能出现this。this就是指向当前对象本身。使用场景this(参数);表示当前类对应的构造方法。this.xxx;当前对象的属性,当方法形参和对象的属性重名,用this来区分。this.xxx(参数);调用当前对象的方法。class A { private int x; public A(){ System.o.原创 2020-11-03 17:13:53 · 118 阅读 · 0 评论 -
Java重载(overload)和重写(override)
overload(重载,过载)在⼀个类里面,⽅法名字相同,而参数不同,和返回类型无关 override(重写,覆盖)⼦类对⽗类的允许访问的方法的实现过程进行重新编写, 返回值、形参、返回值类型、方法名,参数类型以及个数都不能改变。⼦类能够根据需要实现父类的方法。需要在方法前写上@@Overrideclass A { public void sleep(int day) { System.out.println("睡了" + day + "天"); .原创 2020-11-03 16:51:09 · 163 阅读 · 0 评论 -
Java构造方法
构造方法⼀种特殊的方法。创建对象时用来初始化对象,每次使用new 创建对象的时候,就会使用构造方法。与类具有相同的名称,但是没有返回值,Java会⾃动为每个类提供⼀个默认构造方法。如果自己定义了构造方法,就不再使用默认构造方法,如果没有显示的写出默认构造方法, 则会消失。可以有多个构造方法,只要参数不同就可以。构造方法之间可以相互调用,使用this(参数);如果构造函数之间互相调用,务必写在方法第一行。且不可以递归调用。(C/C++中叫函数,Java中叫方法,作用是一样的。)(Java中.原创 2020-11-03 16:35:50 · 196 阅读 · 0 评论 -
Java创建对象数组报错:java.lang.NullPointerException
错误代码:class Student { public int id;}public class Test { public static void main(String[] args) { Student[] students = new Student[100]; for (int i = 0; i < 100; i++) { students[i].id = i; } }}代码未报错,原创 2020-11-02 18:13:20 · 995 阅读 · 0 评论 -
Java static详解
static关键字static 修饰的方法或变量,优先于对象执行,所以内存有会先有 static修饰的内容,后有对象的内容,因此,⼀个类里面 static修饰的不能访问非static修饰的成员或者方法,而非static修饰的可以访问static修饰的成员或者方法。可以⽤来修饰类的成员方法、类的成员变量,还可以编写static静态代码块。修饰变量就是类变量,修饰⽅法就是类方法,修饰代码块就是静态代码块。类变量或者类方法,可以直接通过类名.方法名或者变量名进行调用,不用经过对象。public clas原创 2020-11-02 17:36:32 · 110 阅读 · 0 评论 -
Java堆栈
数据类型基本数据类型: byte,short, int,long, float,doble,boolean,char。引⽤数据类型:即除了基本的变量类型之外的所有类型(字符串、数组、对象等)。java在内存中堆(Heap)、栈(Stack)两块存储空间。基本的变量类型只有⼀块存储空间(分配在栈中),传递的时候直接是值传递,对数据进⾏操作,不影响原先的值。引⽤类型有两块存储空间(⼀块在栈中,⼀块在堆中),⼀个对象在内存中会请求⼀块堆空间来保存数据,访问对象的时候不会直接是访问对象在堆内存中的数据.原创 2020-11-02 12:05:49 · 1673 阅读 · 0 评论