![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习
MyLight1109
这个作者很懒,什么都没留下…
展开
-
[网络编程]4.URL下载网络资源
类似于爬虫需要用到的类:URL类package lesson4;import java.io.FileOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;public class URLDemo01 { public static void main(String[] args) throws Exception { //1.下载地原创 2021-07-15 22:46:12 · 66 阅读 · 0 评论 -
[网络编程]3.UDP消息发送
接收端package lesson3;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.SocketException;public class UDPServerDemo01 { public static void main(String[] args) throws Exception { //开放端口 DatagramSocket sock原创 2021-07-15 21:40:27 · 90 阅读 · 0 评论 -
[网络编程]2.文件上传
服务器package lesson2;import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.nio.charset.StandardCharsets;public class TCPServerDemo02 { public static void main(String[] args) throws Exception { ServerSocket socke原创 2021-07-15 20:10:08 · 72 阅读 · 0 评论 -
[网络编程]1.TCP实现聊天
服务端package lesson2;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class TCPServerDemo01 { public static void main(String[] args) { ByteArrayOutputStream baos = null; ServerSocket serverSocket = null;.原创 2021-07-15 19:42:31 · 77 阅读 · 0 评论 -
[Java进阶]BigInteger类
构造方法BigInteger(String val) 将BigInteger的十进制字符串表示形式转换为BigInteger。//String不可能超过范围四则运算结果不是一个数据,是一个BigInteger对象全部通过调用方法实现加法add(BigInteger val)返回值为 (this + val)的BigInteger。减法subtract(BigInteger val)返回值为 (this - val)的BigInteger。乘法multiply(BigInt.原创 2021-04-11 16:42:04 · 64 阅读 · 0 评论 -
[Java进阶]学习笔记36:Thread类常用方法
一,获取线程的名称1.使用Thread类的getName()方法String getName() //返回该线程的名称。2.可以先获取到当前正在执行的线程,使用线程的方法getName()获取名称static Thread currentThread() //返回对当前正在执行的线程对象的引用。线程的名称:主线程:main新线程:Thread-0, Thread-1, Thread-2,1.使用Thread类的getName()方法String getName() //返回该线程的名称。原创 2020-12-08 21:30:29 · 713 阅读 · 0 评论 -
[Java进阶]学习笔记35:多线程原理
随机打印结果分析多线程内存图解原创 2020-12-08 21:30:12 · 62 阅读 · 0 评论 -
[Java进阶]学习笔记34:创建多线程程序的第一种方式_创建Thread类的子类
java.long.Thread创建多线程第一种方式:创建Thread的子类步骤:1.将类声明为 Thread 的子类。2.重写 Thread 类的 run 方法。设置线程任务3.创建Thread子类的对象4.调用Thread子类的start方法,开启新的线程,执行run方法。void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。MyThread.java//1.将类声明为 Threa原创 2020-12-08 21:30:01 · 144 阅读 · 0 评论 -
[Java进阶]学习笔记33:线程调度 &&主线程
线程调度分时调度 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。抢占式调度 优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为 抢占式调度。抢占式调度详解 大部分操作系统都支持多进程并发运行,现在的操作系统几乎都支持同时运行多个程序。比如:现在我 们上课一边使用编辑器,一边使用录屏软件,同时还开着画图板,dos窗口等软件。此时,这些程序是 在同时运行,”感觉这些软件好像在同一时刻运行着“。 实际上,CPU(中央处理器)原创 2020-12-08 13:26:10 · 85 阅读 · 0 评论 -
[Java进阶]学习笔记32:并发与并行 && 进程和线程的概念
并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。并发:交替执行(反复横跳,一个人吃两个馒头)并行:同时执行(两个人吃两个馒头)进程进入到运行内存中的程序就是进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多 个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创 建、运行到消亡的过程。线程线程:线程是进程中的一个执行单元,负责当前进程中程序原创 2020-12-07 19:53:02 · 129 阅读 · 0 评论 -
[Java进阶]学习笔记31:自定义异常类
自定义异常类:java提供的异常类不够我们使用,需要自己定义一些异常类格式:public class XXXException extends Exception | RunTimeException{添加一个空参数的构造方法添加一个带异常信息的构造方法}要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册。RegisterException.javapublic class RegisterException extends Exception{ /原创 2020-12-07 19:28:48 · 154 阅读 · 0 评论 -
[Java进阶]学习笔记30:异常注意事项
多个异常使用捕获又该如何处理呢?多个异常分别处理。多个异常一次捕获,多次处理。多个异常一次捕获一次处理。一般我们是使用一次捕获多次处理方式,格式如下:try{ 编写可能会出现异常的代码 }catch(异常类型A e){ 当try中出现A类型异常,就用该catch来捕获. 处理异常的代码 //记录日志/打印异常信息/继续抛出异常 }catch(异常类型B e){ 当try中出现B类型异常,就用该catch来捕获. 处理异常的代码 //记录日志/打印异常信息/继续抛出异常原创 2020-12-07 16:56:43 · 76 阅读 · 0 评论 -
[Java进阶]学习笔记29:finally代码块
finally:有一些特定的代码块无论异常是否发生,都需要运行。格式:try{}catch(异常变量){}catch(异常变量){}finally{} try { readFile("D:\\\\a"); } catch(IOException e){ e.printStackTrace(); } finally { System.out.println("资源释放");原创 2020-12-07 16:27:28 · 91 阅读 · 0 评论 -
[Java进阶]学习笔记28:Throwable类中3个异常处理的方法
Throwable类中定义了三个异常处理的方法String getMessage() //返回此throwable的简短描述String toString() //返回此throwable的详细消息字符串void printStackTrace() //JVM打印异常对象,信息是最全面的 public static void main(String[] args) { try { readFile("D:\\\\a"); }原创 2020-12-07 16:21:05 · 115 阅读 · 0 评论 -
[Java进阶]学习笔记27:try_catch捕获异常
try_catch:异常处理的第二种方式,自己处理异常格式:try{}catch(异常变量){}catch(异常变量){}public class Demo06try_catch { public static void main(String[] args) { try { readFile("D:\\\\a"); } catch(IOException e){ System.out.原创 2020-12-07 16:13:11 · 173 阅读 · 0 评论 -
[Java进阶]学习笔记26:throws关键字
throws关键字:处理异常的第一种方式,交给别人处理作用:当方法内部抛出异常时,我们就必须处理这个对象,可以使用throws处理异常对象会把异常对象抛出给方法的调用者处理(自己不处理,给别人处理)最终交给jvm处理–>中断使用方式:在方法声明时使用修饰符 返回值类型 方法(参数列表) throws xxxException…{}public class Demo05throws { //public static void main(String[] args) thro原创 2020-12-07 16:03:57 · 279 阅读 · 0 评论 -
[Java进阶]学习笔记25:Objects非空判断 requireNonNull方法
Objects类的一个方法public static T requireNonNull(T obj) {if (obj == null)throw new NullPointerException();return obj;}public class Demo03Objects { public static void main(String[] args) { method(null); } private static void method(O原创 2020-12-07 15:42:25 · 265 阅读 · 0 评论 -
[Java进阶]学习笔记24:throw关键字
throw关键字作用:可以使用throw关键字在指定的方法中抛出指定的异常使用格式:throw new xxxException(“原因”);注意:1.必须写在方法的内部2.后面new的对象必须是Exception或者是其子类3.抛出指定的异常对象,我们就必须处理若throw关键字后面创建的是RunTimeException或者是其子类,我们可以不处理,默认交给jvm处理(打印并中断)若throw关键字后面创建的是编译异常(写代码),我们必须要处理这个对象,要么throws,要么try{原创 2020-12-07 15:33:19 · 263 阅读 · 0 评论 -
[Java进阶]学习笔记23:异常
java.lang.Throwable类是 Java 语言中所有错误或异常的超类。Exception:编译期异常(写代码)可以进行处理,处理后可以继续运行 try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM--DD"); Date date = sdf.parse("2021-01-01"); System.out.println(date); }原创 2020-12-07 15:16:50 · 101 阅读 · 0 评论 -
[Java进阶]学习笔记22:斗地主案例2
package DouDiZhu2;import java.util.*;public class Game { public static void main(String[] args) { //准备牌 List<Integer> index = new ArrayList<Integer>(); for(int i=0;i<54;i++){ index.add(i); .原创 2020-12-06 22:37:49 · 114 阅读 · 0 评论 -
[Java进阶]学习笔记21:Debug追踪
Debug调试程序:可以让代码逐行执行,查看代码的过程,调试程序出现的bug使用方式:在行号的右边,点击添加断点(每个方法的第一行)右键,选择Debug执行程序程序会停留在添加的第一个断点处执行程序:8:逐行执行程序f7:进入的方法中shift+f8:跳出方法f9:跳到下一个断点,如果没有下一个断点,就结束程序ctrl+f2:退出Debug模式,停止程序Console:点击跳到控制台...原创 2020-12-06 17:28:44 · 109 阅读 · 0 评论 -
[Java进阶]学习笔记20:of方法
JDK9对集合添加的优化 of方法JDK9新特性:List接口,Set接口,Map接口,里面增加了一个静态的方法of,可以一次性添加多个元素static List of(E… elements) 返回包含任意数量元素的不可变列表。使用前提:当集合中存储的元素的个数已经确定了,不再改变时使用注意:1.of方法只适用于List接口,Set接口,Map接口,不适用于接口的实现类2.of方法的返回值是一个不可改变的集合,集合不能再使用add,put方法添加元素,会抛出异常3.Set接口和Ma原创 2020-12-06 17:14:31 · 1201 阅读 · 0 评论 -
[Java进阶]学习笔记19:LinkedHashMao集合和Hashtable集合
LinkedHashMap集合public class LinkedHashMap<K,V>extends HashMap<K,V>Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。底层原理:哈希表+链表(记录元素的顺序) public static void main(String[] args) { HashMap<String,String> map = new HashMap<>(); map.pu原创 2020-12-06 16:40:16 · 106 阅读 · 0 评论 -
[Java进阶]学习笔记18:HashMap存储自定义类型键值
HashMap存储自定义类型键值Map集合保证key是唯一的作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一。第一种情况HashMap存储自定义类型键值key:String类型String类重写hashCode方法和equals方法,可以保证key唯一value:Person类型value可以重复(同名,同年龄) private static void show01() { HashMap<String,Person> m原创 2020-12-06 16:19:51 · 255 阅读 · 0 评论 -
[Java进阶]学习笔记17:Map集合的方法
public V put(K key, V value) //将指定的值与此映射中的指定键关联(可选操作)。public V get(Object key) //返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。public V remove(Object key) //如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。public boolean containsKey(Object key) //如果此映射包含指定键的映射关系,则返回 true。public Se原创 2020-12-06 15:53:21 · 186 阅读 · 0 评论 -
[Java进阶]学习笔记16:Map集合概述及其常用子类
Collection集合是单列集合Map集合是双列集合概述java.util.Map接口 Map<K,V>有两个泛型类型参数:K - 此映射所维护的键的类型V - 映射值的类型特点:1.Map集合是双列集合,一个元素包含两个值,一个是key,一个是value2.Map集合中的元素,key和value的数据类型可以相同,也可以不同3.Map集合中的元素,key不允许重复,但是value可以重复4.Map集合中的元素,key和value是一一对应的Map常用子类1)j原创 2020-11-22 20:33:23 · 132 阅读 · 0 评论 -
[Java进阶]学习笔记15:Collections集合工具类的方法
java.util.Collections是集合工具类,用来对集合进行操作部分方法如下:public static boolean addAll(Collection,T…elements); //往集合中添加一些元素public static void shuffle(List<?> list) //打乱集合顺序public static void sort(List list); //将集合中元素按照默认规则排序(默认是升序)public static void sort(L原创 2020-11-21 17:52:32 · 170 阅读 · 0 评论 -
[Java进阶]学习笔记14:可变参数
可变参数:JDK1.5之后出现的新特性使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数使用格式:定义方法时使用修饰符 返回值类型 方法名(数据类型…变量名){}原理:可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数注意事项:1.一个方法的参数列表,只能有一个可变参数2.如果方法的参数有多个,那么可变参数必须写在参数列表的末尾终极用法:public void method(Object…obj){}public c原创 2020-11-21 16:48:59 · 110 阅读 · 0 评论 -
[Java进阶]学习笔记13:Set && HashSet集合
java.util.set接口 继承了Collection接口Set特点:1.不允许存储重复的元素2.没有索引,没有带缩印的方法,也不能使用普通的for循环遍历java.util.HashSet接口HashSet特点:1.不允许存储重复的元素2.没有索引,没有带缩印的方法,也不能使用普通的for循环遍历3.是一个无序的集合,存储元素和取出元素额顺序有可能不一样4.底层是一个哈希表结构(查询速度非常快)因为没有索引值,则不可以使用普通for遍历但可以使用迭代器和增强for循环遍历!pa原创 2020-11-21 16:30:13 · 127 阅读 · 0 评论 -
[Java进阶]学习笔记12:LinkedList集合
java.util.LinkedList集合 实现了List接口特点:1.底层是一个链表接口,查询慢,增删快2.里面包含了大量操作首尾元素的方法注意:使用LinkedList集合特有的方法,不能使用多态public void addFirst(E e) //将指定元素插入此列表的开头。public void addLast(E e) //将指定元素添加到此列表的结尾。public void push(E e) //将元素推入此列表所表示的堆栈。public E getFirst() //返.原创 2020-11-21 15:27:29 · 102 阅读 · 0 评论 -
[Java进阶]学习笔记11:List集合
java.util.List接口 extends Collection接口List是抽象的; 无法实例化,但是比如可以将ArrayList上转型。List接口的特点:1.有序的集合,存储元素和取出元素的顺序是一致的2.有索引,包含了一些带索引的方法3.允许存储重复的元素List接口中带索引的方法(特有)public void add(int index,E element) //将指定的元素,添加到该集合中的指定位置。public E get(int index) //返回集合中指定位置的元原创 2020-11-18 19:42:49 · 152 阅读 · 0 评论 -
[Java进阶]学习笔记10:斗地主案例
代码实现:package DouDiZhou;import java.util.ArrayList;import java.util.List;import java.util.Collection;import java.util.Collections;public class Game { public static void main(String[] args) { //准备牌 Collection<String> cardT..原创 2020-11-14 20:42:41 · 90 阅读 · 0 评论 -
[Java进阶]学习笔记9:泛型
概念不使用泛型使用泛型定义和使用含有泛型的类泛型可以接收任意的数据类型,可以使用Integer,String,Student创建对象时确定泛型的数据类型GenericClass.javapublic class GenericClass<E> { private E name; public E getName() { return name; } public void setName(E name) {原创 2020-11-14 17:40:33 · 109 阅读 · 0 评论 -
[Java进阶]学习笔记8:增强for
专门用来遍历数组和集合!增强for循环:底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写public interface Iterable实现这个接口允许对象成为 “foreach” 语句的目标。所有的单列集合都可以使用增强for格式:for(集合/数组的数据类型 变量名:集合名/数组名){ ...}public class Demo02Iterator { public static void main(String[] args) { de原创 2020-11-14 16:22:27 · 128 阅读 · 0 评论 -
[Java进阶]学习笔记7:Iterator迭代器
迭代java.util.Iterator接口:迭代器两个常用方法:boolean hasNext() //如果仍有元素可以迭代,则返回 true。E next() //返回迭代的下一个元素。使用Iterator接口,需要使用实现类;获取实现类的方法:Collection接口中有一个方法,叫做iterator(),这个方法返回的是Iterator对象 Iterator<String> it = coll.iterator();使用步骤:1.先使用集合中的方法itera原创 2020-11-14 16:13:40 · 88 阅读 · 0 评论 -
[Java进阶]学习笔记6:Collection集合
集合概述集合存储的都是对象!集合框架学习目标学习方法Collection集合所有单列集合最顶层的接口,里面定义了所有单列集合共性的方法任意的单列集合都可以使用Collection接口中的方法共性的方法:public boolean add(E e); //把给定的对象添加到当前集合public void clear(); //清空集合中的所有元素public boolean remove(E e); //把给定的元素在集合中删除public boolean contains原创 2020-11-14 15:51:07 · 84 阅读 · 0 评论 -
[Java进阶]学习笔记5:包装类
1.概念2.装箱与拆箱装箱:把基本类型的数据,包装到包装类中(基本数据类型->包装类)构造方法:Integer(int value) //构造一个新分配的 Integer 对象,它表示指定的 int 值。Integer(String s) //构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。 //传递的字符串必须是基本类型的字符串静态方法:static Integer valueOf(String s)原创 2020-11-11 20:22:15 · 108 阅读 · 0 评论 -
[Java进阶]学习笔记4:System类和StringBuilder类
System类 常用的方法:static long currentTimeMillis() //返回以毫秒为单位的当前时间。static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)//从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。1.static long currentTimeMillis() //返回以毫秒为单位的当前时间。通常用来测试程序运行时间练原创 2020-11-11 19:36:28 · 82 阅读 · 0 评论 -
[Java进阶]学习笔记3:Calendar类
java.util.Calendar类,日历类是一个抽象类,无法直接创建使用需要用getInstance()方法获取一个日历对象static Calendar getInstance() 使用默认时区和语言环境获得一个日历。提供了很多操作日历字段的方法:YEAR、MONTH、DAY_OF_MONTH、HOUR常用成员方法:public int get(int field) 返回给定日历字段的值。public void set(int field, int value) 将给定的日历字段设原创 2020-11-11 18:49:08 · 136 阅读 · 0 评论 -
[Java进阶]学习笔记2:毫秒值的概念和作用
1.Date类类 Date 表示特定的瞬间,精确到毫秒。毫秒:千分之一秒作用:可以对时间和日期进行计算可一把日期转换为毫秒进行计算,计算完毕,再转换为日期。把日期转换为毫秒:当前的日期:2020-11-10;时间原点(0毫秒):1970-1-1 00:00:00计算当前日期到原点一共多少毫秒把毫秒转换为日期:1天 = 24x60x60 = 86400秒 = 86400000毫秒注意:中国属于东八区,需要把时间加8小时Date的构造方法1.无参构造方法Date()的空参数构造方原创 2020-11-10 22:40:13 · 891 阅读 · 0 评论