
Java一二阶段 - 基础 - javaSE
java基础以及常用API的概念和使用
CV键都碎了
真·前端小垃圾,努力混饭的智障
展开
-
java List
List接口介绍:java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。List接口特点:它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。原创 2022-04-15 16:22:52 · 402 阅读 · 0 评论 -
设计模式(简略)
什么是设计模式使用设计模式是为了重用代码,让代码更容易被理解,保证代码可靠性,程序的重要性。设计模式的种类共23种简单工厂模式根据字符串返回相应的对象public abstract class food { public abstract String getName();}public class check extends food { @Override public String getName() { return ..原创 2021-12-02 00:23:43 · 388 阅读 · 0 评论 -
lambda表达式
什么是lambda表达式JDK8之后推出的新特性,是使用java可以以“函数式编程”专用表达式。可以代替匿名内部类,就地对抽象类或接口进行实现。为什么需要lambda表达式lambda最直接的感受是用更短的语句创建匿名内部类,代码更少更简单,但是同时也带来代码不易读的特点lambda表达式的格式(参数) -> {方法体}...原创 2021-12-01 23:13:12 · 177 阅读 · 0 评论 -
新日期api
新日期类简介Java 8在java.time包下提供了很多的新API,以下两个比较重要Local(本地) - 简化了日期时间的处理,没有时区的问题。Zoned(时区) - 通过制定的时区处理日期时间。为什么还需要新的时期类Java 8通过发布新的Date-time API来进一步加强对日期和时间的处理。非线程安全java.util.Date是非线程安全的,所有的日期都是可变的设计很差,时区处理麻烦。如何使用public class LocalTestDemo {..原创 2021-12-01 15:52:24 · 328 阅读 · 0 评论 -
Calendar(下)
public class CalendarDemo3 { public static void main(String[] args) { //获得Valendar对象 Calendar cal = Calendar.getInstance(); System.out.println(cal); /* * void set(int field,int value) * 第一个参数是日期常量,第二个参数是原创 2021-12-01 11:07:40 · 73 阅读 · 0 评论 -
Calender类(上)
什么是CalendarCalendar本身是一个抽象类,不能实例化。只规定了操作时间的相关方法。为什么需要CalendarDate类的设计有很多缺陷,比如2020年的Date对象获得getYear()返回值为120等,使用Calendar能够补充很多Date的不便。如何使用可以通过Calender提供的静态方法getInstance来根据当前系统所在地区获取一个使用的实现类。获得年月日和常量的使用。public class CalenderDemo2 { publi..原创 2021-11-29 13:50:16 · 318 阅读 · 0 评论 -
SimpleDateFormat类
什么是SimpleDateFormat它是一个能将date对象和字符串对象互相转换的类,可以按照约定好的格式转换,操作方便。日期转字符串操作具体类型查询文档public class SimpleDate { public static void main(String[] args) { //实例化日期 Date now = new Date(); System.out.println(now); //使用Si..原创 2021-11-28 21:41:55 · 172 阅读 · 0 评论 -
Date类(不常用,很多方法被废)
什么是Date类java.util.Date类是java中可以表示时间(精确到毫秒的对象,内部维护用一个long值,保存自1970年元旦到当前Date所表示的时间之间经过的毫秒注意事项Date类内部由于存在千年虫和时区的问题,因此大部分方法被声明为过时的,不在建议使用。获得时间偏移量public class DateDemo { public static void main(String[] args) { //时间偏移量,1970-1-1 l..原创 2021-11-26 10:18:14 · 456 阅读 · 0 评论 -
线程池的作用
什么是线程池线程池就是java程序中统一调度和保存线程的容器对象为什么需要使用线程池可以避免反复创建和销毁线程,从而降低资源的浪费,提高运行效率。同时约束线程出现的数量/** * 线程池的主要作用 * 1. 能够宠用 * 2. 控制线程数量,约束能源消耗 */public class ThreadPoolDemo { public static void main(String[] args) { //实例化线程池的对象 Executo..原创 2021-11-25 17:06:07 · 122 阅读 · 0 评论 -
反射(下)
//获得反射对象 Class cls = Class.forName("reflect.Person"); //通过反射对象获得实体类对象 Object o = cls.newInstance(); //获得方法反射 Method method = cls.getMethod("sayHello"); //调用 method.invoke(o);输入包名和类名,输入调用的方法就可以调用pub原创 2021-11-25 09:43:46 · 261 阅读 · 0 评论 -
反射(中)
新建Student类public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public void show(){ System.out.pr原创 2021-11-24 11:18:19 · 186 阅读 · 0 评论 -
反射(上)
什么是反射?反射机制是一个动态机制,允许我们在程序运行期间再确定对象的实例化以及方法和属性的调用。为什么需要反射?使用反射可以在程序运行在确定下面执行的内容,像生活中的“见机行事”,这样可以大大提高代码的灵活度使用反射注意事项反射机制有更多的内存开销和较慢的运行效率。所以不能过度依赖反射机制。获取类名的方式/** * 反射机制演示 */public class ReflectDemo1 { public static void main(String[] ar..原创 2021-11-23 17:06:52 · 310 阅读 · 0 评论 -
XML解析
XML解析方式SAX: 速度快,但是不能修改元素内容DOM:速度慢,但是可以修改元素内容DOM4J解析这个固定格式称为坐标,编写坐标后maven会自动到远程中央仓库下载指定的jar包<dependencies> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> ..原创 2021-11-22 22:07:52 · 204 阅读 · 0 评论 -
XML概述和基本注意事项
什么是XMLxml是可扩展标记语言(extensible markup language)XML被设计用来传输和储存数据。树状结构XML有结构,可以有格式的储存数据。标签可以随意写<root> <a></a> <![CDATA[ 123123ajfksjf<>adkljfakd>fklda ><><><>jdlskjfajdfs<akjfl>fdak>..原创 2021-11-21 20:51:01 · 325 阅读 · 0 评论 -
利用Map解析消息头
//key消息头的名字 value:消息头对应的值private Map<String,String> headers = new HashMap<String, String>(); public void parseHeaders(){ System.out.println("开始解析消息头"); try { while (true){ String line = readLine()原创 2021-11-18 10:34:09 · 338 阅读 · 0 评论 -
Map接口(操作键值对)
Map接口什么是Mapjava.util.Map 查找表Map体现的样子是一个多行两列的表格,其中左列成为key,右列成为value为什么使用MapMap总是成对保存数据(Key-value),并且根据key来获取对应的value.因此我们可以将查询的数据作为value,而查询条件作为key进行保存数据。HashMap称为散列表或哈希表,是当今查询速度最快的数据结构怎么使用MapMap是接口,其常用的实现类为java.util.HashMapMap的使用** *原创 2021-11-17 19:22:04 · 582 阅读 · 0 评论 -
WebServer解析请求行和消息头
新建Maven项目目录结构:ClientHandlerpublic class ClientHandler implements Runnable { private Socket socket; //新建构造方法,实话化时将传入的socket赋值 public ClientHandler(Socket socket){ this.socket = socket; } public void run() { /**原创 2021-11-17 16:46:43 · 394 阅读 · 0 评论 -
Http概述
什么是httphttp是超文本传输协议。浏览器和服务端传输数据的协议,底层为TCP。协议规定客户端与服务端通讯方式为:一次请求一次响应。即:客户端发请求,服务器向客户端发送响应,服务端不会主动发送内容给客户端。采取“一问一答”形式Http请求格式一个http请求格式分为三部分:请求行,消息头,消息正文请求行。分为三部分:请求方法 资源路径 协议(CRLF)举个栗子: GET /index.html HTTP/1.1(CRLF) 请求行以CRLF结束 CR:回车符,..原创 2021-11-17 10:52:49 · 504 阅读 · 0 评论 -
Maven概述
什么是maven Maven翻译为“专家”,“内行”,Apache下的一个纯java开发的开源项目. Maven是一个项目管理工具,可以对java项目进行构建,依赖管理。为什么需要mavenMaven已经成为行业规范,几乎所有项目都在用Maven可以根据项目需要,导入合适的jar。在非常复杂的项目中起到非常重要的作用Maven可以将一个大型项目拆分成多个子项目并管理,方便团队开发...原创 2021-11-17 09:22:34 · 78 阅读 · 0 评论 -
队列和栈的操作
队列: 先进先出双向队列:两端都可以进出现在只有a和d可以出栈:先进后出出队入队操作public class QueueDemo { public static void main(String[] args) { Queue<String> queue = new LinkedList<>(); /** * offer(E e)入队操作 */ queue.offer("o.原创 2021-11-16 16:20:47 · 237 阅读 · 0 评论 -
集合的排序操作
排序/** 排序现在只考虑List集合* java.util.Collection 提供了操作集合的很多工具性质的方法* sort()方法,就可以将List集合中的数据进行自然排序(升序)* */public class SortListDemo { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); Random ran原创 2021-11-16 14:59:17 · 564 阅读 · 0 评论 -
集合转换数组操作
集合转数组public class CoolectionToArrayDemo { public static void main(String[] args) { Collection<String> c = new ArrayList<>(); c.add("one"); c.add("two"); c.add("three"); c.add("four"); c.add.原创 2021-11-16 10:30:28 · 978 阅读 · 0 评论 -
List接口
java.util.List接口是collection接口的子接口,在父接口的基础上添加一些方法List接口的特点是元素是有序的,但是可以存放重复元素使用的常用实现类java.util.ArrayList:内部控制一个数组,查询、获取元素效率高,插入删除效率差java.util.LinkedList:内部由链表数据结构支持,增删效率高,查询/遍历效率低在增删性能要求不是非常苛刻时,一般使用ArrayListArrayList和Linkedlist储存方式LinkList只需要改变指向。原创 2021-11-15 22:29:46 · 559 阅读 · 0 评论 -
Collection - 遍历结合,增强for循环,泛型集合
使用迭代器遍历集合Collection接口下提供的方法Iterator iterator();java.util,Iterator接口三个步骤:1.问 2.取 3.删/** * 使用迭代器遍历集合 * Collection接口下提供的方法 * Iterator iterator(); * * java.util,Iterator接口 * 三个步骤:1.问 2.取 3.删 */public class IteratorDemo { public static void ma原创 2021-11-15 18:14:15 · 309 阅读 · 0 评论 -
集合中的各种方法
public class SyncDemo4 { public static void main(String[] args) { Collection c = new ArrayList(); c.add("one"); c.add("two"); c.add("three"); c.add("four"); c.add("five"); System.out.println(c);原创 2021-11-12 10:16:18 · 385 阅读 · 0 评论 -
线程安全 - synchronized同步代码块,互斥锁
synchronized代码块可以使一部分代码不能同时运行,最大的提高了线程的运行效率和安全性package sync;public class syncDemo { public static void main(String[] args) { Shop s = new Shop(); Thread hlw = new Thread(){ public void run(){ s.buy();原创 2021-11-07 22:48:56 · 169 阅读 · 0 评论 -
java线程高级 - 插队方法,同步方法
join方法join方法是一条线程的运行插入到另一条线程之前的操作。被插队的线程进入阻塞状态,插队线程运行完毕后阻塞取消。同步运行: 多个线程存在先后顺序异步运行: 多个线程并发运行public class JoinDemo { public static void main(String[] args) { Thread dw = new Thread(){ @Override public void run() {原创 2021-10-27 19:00:22 · 304 阅读 · 0 评论 -
线程高级 - 优先级,线程休眠,守护线程
线程优先级,理论上优先级按照从高到低顺序运行,但基本只存在理论上。实际运行关系不大。public class priorityDeni { public static void main(String[] args) { Thread min = new Thread(){ @Override public void run() { for (int i = 0;i<1000;i++){ .原创 2021-10-27 14:34:47 · 106 阅读 · 0 评论 -
java线程基础
什么是线程一条线程就是一组任务执行序列什么是多线程某一时间段内并发多个任务执行序列为什么需要多线程多线程可以“同时”运行多个任务。有更好的使用体验。开启一个线程,方式一要想开启一个新线程,在继承Thread类之后重写父类中的run方法。优点: 代码简单,适合编写匿名内部类的形式缺点:java代码单继承,不能继承其他类。将这个线程直接固定,不能修改,增加了程序中的耦合性,不利于线程重用。public class ThreadDemo1 { publi..原创 2021-10-26 23:02:16 · 217 阅读 · 0 评论 -
聊天室程序练习
import java.io.IOException;import java.net.Socket;public class Client { private Socket socket; public Client() { try { System.out.println("链接开始"); socket = new Socket("localhost",8088); System.out.p原创 2021-10-25 10:38:11 · 109 阅读 · 0 评论 -
网络编程概述
架构:B/S: browbeC/STCP与UDPTCP:可靠传输协议传统的信息必须保证送达目标计算机,但是速度慢,占资源多。及时性不强,如暂停后,可继续播放UDP:不可靠传输协议传输的信息不保证送达目标计算机,但是速度快,即时性强,占用资源少。即时性强,如直播。java网络编程socket封装了两条流,输入和输出...原创 2021-10-25 09:08:48 · 57 阅读 · 0 评论 -
异常高级 - 自定义异常
异常的分类运行时异常,无需用trycatch包起来。运行时异常是调用方法时都有可能发生异常,如果都需要trycatch明显不合理。按ctrl按钮进入源代码即可查看是否需要每次都用try/catch包裹,继承自runtimeException是运行异常,check异常是继承自Exception.try/catch包裹因为有时出现异常需要自己进行处理。自定义异常自定义异常,通常用来说明我们程序中的业务逻辑问题。注意事项:类名见名知意继承Exception(直接或间接均可)要定义.原创 2021-10-22 15:45:57 · 127 阅读 · 0 评论 -
JAVA中的异常
public class TryCatchDemo { public static void main(String[] args) { System.out.println("开始"); try{ String str = null; System.out.println(str.length()); System.out.println(str.charAt(1)); }ca原创 2021-10-21 15:20:34 · 157 阅读 · 1 评论 -
IO练习与小结
public class Note { public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException { Scanner scan = new Scanner(System.in); System.out.println("请输入文件名"); String fileName = scan.nextLine();原创 2021-10-20 09:42:06 · 64 阅读 · 0 评论 -
IO字符流
字符流java IO提供了两类流,按读写信息的内容分为字节流: InputStream,OutputStream. 读写的内容以字节为单位。字符流: Reader,Writer。 读写的内容以字符为单位。转换流:是一组高级流,能够将字节流转换成字符流。输出字符转入文件public class OWSDemo { public static void main(String[] args) throws IOException { FileOutputStream.原创 2021-10-19 17:09:07 · 68 阅读 · 0 评论 -
IO对象序列化
对象序列化就是持久化写入硬盘。相当于打游戏时的存档。Person类public class Prerson implements Serializable {/** 序列化时会将这个版本信息也写入到硬盘* 反序列化时会对比版本的数值是否相同,相同可转,不相同不可转* */ private static final long serialVersionUID = 2L; private String name; private int age; private.原创 2021-10-19 10:42:22 · 1426 阅读 · 0 评论 -
IO缓冲流
定义缓冲数组进行文件复制public class CopyDemo1 { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("Kalimba/.mp3"); FileOutputStream fos = new FileOutputStream("Kaliba2.mp3"); //创建一个10.原创 2021-10-18 16:17:51 · 107 阅读 · 0 评论 -
IO流基础操作
什么是IO流IO: input output,java的标准输出。io是循序读写方式,只能顺序向后进行读或写操作,并且不能同时进行。为什么需要IO功能和RandomAccessFile一样。但是RAF是随机读写形式,而文件流是循序读写形式。读写灵活度不如RAF,但是基于链接流可以完成复杂的数据读写。IO的分类java.io.InputStream:所有字节输入流的超类,规定读取字节相关方法。java.io.OutputStream:所有字节流输出的超类,规定写入字节相关方法。流就..原创 2021-10-15 16:43:00 · 97 阅读 · 0 评论 -
RandomAccessFile读文件与修改练习题
public class ShowAllUserDemo { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("data.txt","r"); for (int i = 0;i<raf.length()/100;i++) { byte[] data = new byte[原创 2021-10-15 09:45:55 · 169 阅读 · 0 评论 -
RAF指针操作
RandomAccessFile可以对文件进行读写操作,通过指针可以控制读写的位置。写入操作public class RafSeekDemo { public static void main(String[] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("dat.dat","rw"); //获取当前指针位置 long pos = raf.getFil原创 2021-10-11 17:37:54 · 217 阅读 · 0 评论