Java进阶
文章平均质量分 60
Java进阶:多线程、集合、泛型、反射
陈皮话没
这个作者很懒,什么都没留下…
展开
-
Java进阶(四十九)Java的反射机制
一、Java的反射机制概述1.1 Java ReflectionReflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取的任何类的内部信息,并能直接操作人已对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以称之为:反射。正常方式:...原创 2022-03-23 17:35:30 · 192 阅读 · 0 评论 -
Java进阶(四十八)网络编程4:URL类
一、URL类的理解与实例化二、URL网络编程实现Tomcat服务端数据下载原创 2022-03-15 18:45:49 · 3819 阅读 · 0 评论 -
Java进阶(四十七)网络编程3:UDP网络编程
一、概述类DatagramSocket 和 DatagramPacket 实现了基于UDP协议网络协议程序。 UDP数据报通过数据报套接字DatagramSocket发送和接受,系统不保证UDP数据一定能够安全送到目的地,也不能确定什么时候可以抵达。 DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。 UDP协议中每个数据报都给出了完整的地址信息,因此无需建立发送方和接收方的链接。如同发快递包裹一样。二、举例impor原创 2022-03-14 17:25:44 · 987 阅读 · 0 评论 -
Java进阶(四十六)网络编程2:TCP网络编程
1.实际原创 2022-03-14 14:43:15 · 925 阅读 · 0 评论 -
Java进阶(四十五)网络编程1:网络编程概述、通信要素概述
一、网络编程概述1.1计算机网络把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据库信息等资源。1.2网络编程的目的直接或间接地通过网络协议与其他计算机实现数据交换,镜像通讯。1.3网络编程中有2个主要的问题如何准确地定位网络上一台或多台主机;定位主机上的特定的应用 找到主机后如何可靠高效地进行数据传输二、网络通信要素概述2.1通信双方地址IP 端口号2.2一定的规则,即原创 2022-03-11 15:11:49 · 3437 阅读 · 0 评论 -
Java进阶(四十四)IO流12:NIO.2中Path、Paths、Files类的使用
一、NIO1.1概述Java NIO(new IO,No-Blocking IO)是从Java1.4版本开始引入的一套新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO类。NIO将以更加高效的方式进行文件的读写操作。 Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。 |-----java.nio.channels.Channel原创 2022-03-10 16:19:45 · 402 阅读 · 0 评论 -
Java进阶(四十三)IO流11:随机存取文件流
一、RandomAccessFile类1.1概述实现了DataInput、DataOutput两个接口,意味着这个类既可以读也可以写。 支持“随机访问”的方式。程序可以直接跳到文件的任意地方来读、写文件。 支持只访问文件的部分内容 可以向已存在的文件后追加内容 RandomAccessFile类对象包含一个记录指针,用以标示当前读写处的位置。 RandomAccessFile类对象可以自由移动记录指针: long getFilePointer():获取文件记录指针的当前原创 2022-03-09 17:40:37 · 233 阅读 · 0 评论 -
Java进阶(四十二)IO流10:对象流 ObjectInputStream、ObjectOutputStream
一、概述1.1作用用于存储和读取基本数据类型数据或对象的处理流。它的强大之处是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。1.2序列化序列化:用ObjectOutputStream类保存基本数据类型或对象的机制。 反序列化:用ObjectInputStream类读取基本数据类型或对象的机制。1.3注意ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量。...原创 2022-03-07 14:56:13 · 333 阅读 · 0 评论 -
Java进阶(四十一)IO流9:其他流:标准输入输出流、打印流、数据流
一、概述1.1System.in和System.out分别代表了系统标准的输入和输出设备。 默认输入设备时:键盘,输出设备是:显示器。 System.in的类型是InputStream,字节输入流。 System.out的类型是PrintStream,是OutputStream的子类FilterOutputStream的子类。1.2重定向 System类的 setInt()、setOut() 方式重新指定输入和输出的流。 setInt(InputStream is) ..原创 2022-03-03 22:57:09 · 327 阅读 · 0 评论 -
Java进阶(四十)IO流8:转换流
一、转换流的概述转换流也属于处理流的一种。 转换流提供了在字节流和字符流之间的转换。 Java API中提供了2个转换流: InputStreamReader:InputStream——> Reader OutputStreamWriter:Writer ——> OutputStream 字节流中的数据都是字符时,转成字符流操作更高效。 很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。...原创 2022-03-03 22:33:03 · 133 阅读 · 0 评论 -
Java进阶(三十九)IO流7:缓冲流的练习
练习1分别使用节点流:FileInputStream、FileOutStream和缓冲流:BufferedInputStream、BufferedOutStream实现图片视频文件的复制,并比较在数据复制方面的效率。见前几篇文章。练习2实现图片加密操作。提示:int b = 0;while ((b = bis.read()) != -1) { fos.write(b ^ 5)}练习3获取文本上每个字符出现的次数提示:每遍历文本每一...原创 2022-03-03 11:03:47 · 206 阅读 · 0 评论 -
Java进阶(三十八)IO流6:缓冲流
一、概述1.1缓冲流缓冲流为处理流的一种,分别对4个节点流进行了包装处理。节点流 缓冲流 FileInputStream BufferedInputStream FileOutputStream BufferedOutputStream FileReader BufferedReader FileWriter BufferedWriter 1.2作用提高流的读取、写入的速度。 原因:内部提供了一个缓冲区 byte buf[8192]。二、B原创 2022-03-02 22:36:35 · 209 阅读 · 0 评论 -
Java进阶(三十七)IO流5:FileInputStream、FileOutputStream
一、小结对于文本文件(txt,java ,c,cpp),使用字符流处理。 对于非文本文件(jpg,mp3,mp4,avi,doc,ppt),使用字节流处理。二、使用FileInputStream和FileOutputStream复制非文本文件2.1步骤同之前。 /** * 实现对图片的复制 */ @Test public void testFileInputOutputStream() { //1.实例化file对象原创 2022-03-02 21:50:19 · 151 阅读 · 0 评论 -
Java进阶(三十六)IO流4:FileReader、FileWriter
一、FileReader1.1FileReader读入数据的基本操作1.File类的实例化,指明要操作的文件。2.提供具体的流,实例化FileReader流。3.数据读入。4.流的关闭操作。 @Test public void testFileReader() { FileReader fr = null; try { //1.实例化file对象,指明要操作的文件 File file =原创 2022-03-02 15:54:01 · 198 阅读 · 0 评论 -
Java进阶(三十五)IO流3:原理及分类
1.Java IO原理I/O是Input/Output的缩写,I/O是非常实用的技术,用于处理设备之间的数据传输。如读写文件,网络通讯等。 Java程序中,对于数据的输入输出操作以“流stream”的方式进行。 java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。2.流的分类按操作数据单位的不同分为:字节流(8bit),字符流(16bit)。 字节流适合处理图片、视频等非文本文件。 字符流适合处理文本文件。 按数据流的流向不同分原创 2022-03-01 20:26:57 · 517 阅读 · 0 评论 -
Java进阶(三十四)IO流2:File类的练习
1.利用File构造器,new一个文件目录file在其中创建多个文件和目录 编写方法,实现删除file中指定文件的操作2.判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称3.遍历指定目录所有文件名称,包括子文件目录中的文件。并计算指定目录占用空间的大小 删除指定文件目录及其下的所有文件。...原创 2022-03-01 17:27:03 · 546 阅读 · 0 评论 -
Java进阶(三十三)IO流1:File类的使用
1.File类的使用java.io.File类:文件和文件目录路径的抽象表达形式,与平台无关。 File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入输出流。 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。 File对象可以作为参数传递给流的构造器。2.常用构造器public File(String pathname) 以p原创 2022-02-28 23:54:59 · 147 阅读 · 0 评论 -
Java进阶(三十二)泛型3:练习
题目定义个泛型类DAO<T>,在其中定义一个Map成员变量,Map的键为String,值为T类型。分别创建以下方法:public void save(String id ,T entity) :保存T类型的对象到Map成员变量中。 public T get(String id):从map中获取id对应的对象。 public void update(String id ,T entity):替换map中key为id的内容,改为entity对象。 public List<T&原创 2022-02-28 22:16:33 · 611 阅读 · 0 评论 -
Java进阶(三十一)泛型2
3.自定义泛型结构4.泛型在继承上的提现5.通配符的使用6.泛型应用举例原创 2022-02-28 21:45:34 · 142 阅读 · 0 评论 -
Java进阶(三十)泛型1
为什么要有泛型原创 2022-02-23 13:35:47 · 97 阅读 · 0 评论 -
Java进阶(二十九)集合12:集合练习题
1.从键盘随机输入10个整数保存到List中,并按照倒序、从大到小的顺序显示出来。import java.util.ArrayList;import java.util.Collections;import java.util.Scanner;public class exer1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Arr原创 2022-02-21 16:46:27 · 1056 阅读 · 0 评论 -
Java进阶(二十八)集合11:Collections工具类
概述Collections:对Collection、Map等集合进行操作的工具类。 Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、 对集合对象实现同步控制等方法。排序操作(均为static方法)reverse(List) 反转List中元素的顺序。 shuffle(List) 对List集合元素进行随机排序。 sort(List) 根据元素的自然排序对指定List集合元素进行升序排序。 sort(List,Compar原创 2022-02-21 14:47:49 · 315 阅读 · 0 评论 -
Java进阶(二十七)集合10:Map接口实现类:Properties
Properties类是Hashtable的子类,该对象用于处理属性文件。 由于属性文件里的key、value都是字符串类型,所以Properties里的key-value都是字符串类型。 存取数据时,建议使用setProperty(String key,String value)方法和getProperty(String key)方法。...原创 2022-02-20 22:08:36 · 142 阅读 · 0 评论 -
Java进阶(二十六)集合9:Map接口实现类:TreeMap
TreeMap中添加key-value,要求key要求必须是由同一个类创建的对象。 因为要按照key进行排序:自然排序、定制排序User类:public class User implements Comparable { private String name; private int age; ... @Override public boolean equals(Object o) { System.out.println("Us原创 2022-02-20 21:42:36 · 284 阅读 · 0 评论 -
Java进阶(二十五)集合8:Map中的常用方法
Map接口中定义的方法:添加、删除、修改Object put(Object key,Object value):将指定的key-value添加(修改)到当前map对象中。 void putAll(Map m):将m中所有key-value对存放到当前map中。 Object remove(Object key):移除指定key-value对,并返回value。 void clear:清空当前map中的所有数据。元素查询Object get(Object key):获取指定key对应的va原创 2022-02-20 21:29:33 · 189 阅读 · 0 评论 -
Java进阶(二十四)集合7:Map接口实现类:HashMap、LinkedHashMap
一、Map接口实现类 存储kay-value键值对的数组。 具体有以下实现类:HashMap:作为Map的主要实现类;线程不安全,效率高;存储null的key和value。 LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因是在原有的HashMap底层结构基础上,添加了前后的指针,即双向链表。对于频繁的遍历操作,此类执行效率高于HashMap。 TreeMap:保证按照添加的key-value进行排序,实现排序遍历。此时考虑key的自然排序或定制排序..原创 2022-02-20 20:44:46 · 473 阅读 · 0 评论 -
Java进阶(二十三)集合6:练习题
练习一定义一个Employee类 。该类包含:private成员遍历 name、age、birthday,其中birthday为MyDate类的对象; 为每个属性定义get、set方法; 重写toString方法输出name、age、birthdayMyDate类包含:private 成员变量 year、month、day; 为每一个属性定义get、set方法;创建该类的5个对象,并把这些对象放入TreeSet集合中(之后TreeSet需要使用泛型来定义),分别按以下两种方式对集合中的原创 2022-02-20 16:49:55 · 367 阅读 · 0 评论 -
Java进阶(二十二)集合5:Set接口实现类:HashSet、HashLinkedSet、TreeSet
一、Set Set接口存储无序、不可重复的数据。但这里的无序跟遍历的顺序不是一个意思。Set接口框架HashSet:作为Set的主要实现类;线程不安全;可以存储null值。 LinkedHashSet:作为HashSet的子类,在遍历数据时可以按添加的顺序遍历。 TreeSet:底层为红黑树,可以按照添加对象的指定属性,进行排序。无序性和不可重复性的理解以HashSet为例说明:无序性:不等于随机性。存储的元素在底层数组中并非按照数组索引的...原创 2022-02-20 14:02:22 · 275 阅读 · 0 评论 -
Java进阶(二十一)集合4:List接口中常用方法及面试题
List中的常用方法原创 2022-02-20 12:04:15 · 146 阅读 · 0 评论 -
Java进阶(二十)集合3:List接口实现类:ArrayList、LinkedList、Vector
Q&A:ArrayList、LinkedList、Vector的异同?相同:都是List接口的实现类,都存储有序、可重复的数据。不同点:ArrayList:作为List接口的主要实现类,线程不安全,效率高。底层使用Object[] elementData存储,即Object数组。 LinkedList:对于频繁的插入、删除操作,使用此类效率比较高。底层使用的是双向链表存储。 Vector:作为古老实现类,线程安全,效率低。底层使用Object[] elementData存储,即Obj原创 2022-02-18 17:30:48 · 303 阅读 · 0 评论 -
Java进阶(十九)集合2:Iterator迭代器
概述Iterator对象成为迭代器(设计模式的一种),主要用于遍历Collection集合中的元素。 Collection接口集成了java.lang.iterator接口,该接口有一个iterator()方法。那么,所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象。 Iterator仅用于遍历集合,本身不提供承装对象的能力。如果需要创建Iterator对象,则必须有一个被迭代的集合。 集合对象每次调用iterator()都得原创 2022-02-18 15:12:02 · 222 阅读 · 0 评论 -
Java进阶(十八)集合1:Collection
概述一方面,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端。而Java集合就像一种容器,可以动态地把多个对象的引用放入容器中。数组在内存存储方面的特点: 初始化后长度确定。 数组声明的类型,决定了进行元素初始化时的类型。 数组在存储数据方面的弊端: 初始化后长度固定,不方便扩展。 数组提供的属性和方法少,不便于进行增删插入,且效率不高,同时无法直接获取存储元素的个数 数组存储的数据是有序的、可重复 ...原创 2022-02-18 13:44:55 · 724 阅读 · 0 评论 -
Java进阶(十七)枚举类和注解
一、枚举类1.枚举类的使用类的对象只有有限个,确定的。举例如下: 星期:Monday、...、Sunday 性别:Man、Woman 季节:Spring...Winter 支付方式:Cash、WechatPay、AliPay、BankCard、CreditCard 就职状态:Busy、Free、Vocation、Dimission 订单状态:Nonpayment(未支付)、Payid(已支付)、Fulfilled(已配货)、Delivered(已发货)、Return(退货..原创 2022-02-15 23:13:02 · 596 阅读 · 0 评论 -
Java进阶(十六)常用类8:System、Math、BigInteger、BigDecimal
一、System概述代表系统,系统级的很多属性和控制方法都放在该类的内部。 构造器为private,所以无法创建对象。内部的成员变量、成员方法都是static的,方便调用。 成员变量: in、out、err,分别代表标准输入流(键盘)、标准输出流(显示器)、标准错误输出流(显示器)。 成员方法 native long currentTimeMillis():计算机时间。 void exit(int status):退出程序。其中status的值为0表示正常退出,非0表示异常退出。该原创 2022-02-09 18:51:10 · 311 阅读 · 0 评论 -
Java进阶(十五)常用类7: 比较器-Comparable或Comparator
java中的对象正常情况下只能进行 == 或 != 的比较,不能使用 < 或 > 。在实际开发中,需要对多个对象进行排序,即比较对象的大小。如何实现? 使用两个接口中的任何一个Comparable或Comparator。...原创 2022-02-09 18:06:47 · 498 阅读 · 0 评论 -
Java进阶(十四)常用类6:日期时间API(JDK8)
目录一、背景二、新时间日期API三、LocalDate、LocalTime、LocalDateTime1.实例化①now():获取当前的日期、时间、日期和时间②of():设置指定的年、月、日、时、分、秒,没有偏移量2.get、set、加减操作①获取相关属性:getXxxx()方法②设置相关属性:withXxxx()方法③加减操作 plusXxx()、minusXxx()方法一、背景 我们通常希望时间与昼夜、四季有关,而不是简...原创 2022-01-12 21:00:33 · 216 阅读 · 0 评论 -
Java进阶(十三)常用类5:日期时间API(JDK8之前)
1.System.currentTimeMillis():时间戳2.Date类 java.util.Date 构造器 //构造器一:Date() :创建一个对应当前时间的Date对象Date date = new Date();//构造器二:创建指定时间戳的Date对象Date date1 = new Date(1639904830266L); 方法: 1.toString():显示当前Date对象的年、月、日、时、分、秒。...原创 2021-12-19 21:14:44 · 334 阅读 · 0 评论 -
Java进阶(十二)常用类4:StringBuffer常用方法
增:StringBuffer append(xxx):字符串拼接。删:StringBuffer delete(int start,int end):删除指定位置的内容。改:StringBuffer replace(int start,int end,String str):把[start,end)的位置替换成str。StringBuffer reverse():当前字符串逆转。查 char ch...原创 2021-12-19 16:40:25 · 84 阅读 · 0 评论 -
Java进阶(十一)常用类3:String、StringBuffer、StringBuilder
QA:String、StringBuffer、StringBuilder三者的异同?相同点:都跟字符串有关,底层用的都是char[]。不同点:String:不可变的字符序列。StringBuffer:可变的字符序列。线程安全的,效率低。StringBuilder:可变的字符序列。jdk5.0新增的,线程不安全的,效率高。源码分析String str = new String(); //char[] value = new char[0]; String str1= new原创 2021-12-19 16:22:18 · 208 阅读 · 0 评论 -
Java进阶(十)常用类2:String类的常用方法
int length() :返回字符串长度。 char charAt(int index) :返回某索引处的字符。 boolean isEmpty():判断是否空字符串。 String toLowerCase() :所有字符转为小写。 String toUpperCase():所有字符转为大写。 String trim():返回字符串副本,忽略前导空白和尾部空白。 @Test public void test1(){ String s1 = "HelloWorld原创 2021-12-19 15:09:23 · 118 阅读 · 0 评论