- 博客(30)
- 收藏
- 关注
原创 Java单例设计模式
饿汉式方式一:直接实例化饿汉式(简洁直观)class Singleton1 { private static final Singleton1 INSTANCE = new Singleton1(); private Singleton1(){ }}方式二:枚举式(最简洁)enum Singleton2{ INSTANCE;}方式三:静态代码块饿汉式(适合复杂实例化)class Singleton3{ public static final Si
2022-03-15 21:31:26
371
原创 Java-----URL网络编程
1.URL:统一资源定位符,对应着互联网的某一资源地址2.格式:http://localhost:8080/examples/beauty.jpg?username = Tom协议 主机名 端口号 资源地址 参数列表 public static vo
2022-03-06 00:25:27
146
转载 Java------UDP协议的网络编程
//发送端 @Test public void sender() throws Exception { DatagramSocket socket = new DatagramSocket(); String str = "我是UDP方式发送的导弹"; byte[] data = str.getBytes(); InetAddress inet = InetAddress.getLocalHost(); ...
2022-03-06 00:18:49
90
原创 Java------实现TCP的网络编程
例子1:客户端发送信息给服务端,服务端将数据显示在控制台上例子2:客户端发送文件给服务端,服务端将文件保存在本地。例子3:从客户端发送文件给服务端,服务端保存到本地。并返回“发送成功”给客户端。并关闭相应的连接。例子1:客户端发送信息给服务端,服务端将数据显示在控制台上 //客户端 @Test public void client() { Socket socket = null; OutputStream os = null; .
2022-03-06 00:17:38
249
转载 Java网络编程
一、网络编程中有两个主要问题:1.如何准确地定位网络上一台或多台主机;定位主机上的特定的应用2.找到主机后如何可靠高效地进行数据传输二、网络编程中的两个要素:1.对应问题一:IP和端口号2.对应问题二:提供网络通信协议:TCP/IP参考模型(应用层、传输层、网络层、物理+数据链路层)三、通信要素一:IP和端口号1.唯一的标识 Internet 上的计算机(通信实体)2.在Java中使用InetAddress类代表IP3.IP分类:IPv4 和 IPv6; 万维网 和 局域网4.域名: w
2022-03-06 00:09:29
77
原创 Java-------随机存取文件流
RandomAccessFile的使用1.RandomAccessFile直接继承于java.lang.Object类,实现了DataInput和DataOutput接口2.RandomAccessFile既可以作为一个输入流,又可以作为一个输出流3.如果RandomAccessFile作为输出流时,写出到的文件如果不存在,则在执行过程中自动创建;如果写出到的文件存在,则会对原有文件内容进行覆盖。(默认情况下,从头覆盖)4.可以通过相关的操作,实现RandomAccessFile“插入”数据的效果
2022-03-06 00:02:08
226
原创 Java-----对象流
对象流的使用:1.ObjectInputStream 和 ObjectOutputStream2.作用:用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。3.要想一个java对象是可序列化的,需要满足相应的要求。见Person.javaPerson需要满足如下的要求,方可序列化1.需要实现接口:Serializable2.当前类提供一个全局常量:serialVersionUIDpublic static final
2022-03-05 23:59:07
1094
原创 Java-------IO流
测试FileReader和FileWriter测试FileInputStream和FileOutputStream处理流之一:缓冲流的使用处理流之二:转换流的使用其他流的使用一、流的分类1.操作数据单位:字节流、字符流2.数据的流向:输入流、输出流3.流的角色:节点流、处理流二、流的体系结构1.抽象基类:InputStreamOutputStream ReaderWriter2.节点流(或文件流):FileInputStream ( read(byte[] buffer) ).
2022-03-05 23:46:12
94
原创 Java-------File类的使用
File类的使用:1.File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)2.File类声明在java.io包下3.File类中涉及到关于或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。4.后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”。如何创建File类的实例File(String filePath)File(String parentPath, Stri
2022-03-05 23:01:27
284
原创 Java泛型的使用
如何自定义泛型结构:泛型类、泛型接口;泛型方法public class Order<T> { String orderName; int orderId; //类的内部结构就可以使用类的泛型 T orderT; public Order(){ //编译不通过// T[] arr = new T[10]; //编译通过 T[] arr = (T[])new Object[10];
2022-02-11 21:35:06
124
原创 Java泛型
1.jdk5.0新增的特性2.在集合中使用泛型①集合接口或集合类在jdk5.0时都修改为带泛型的结构。②在实例化集合类时,可以指明具体的泛型类型。③指明完以后,在集合类或接口中凡是定义为类或接口时,内部结构(比如:方法、构造器、属性等)使用到类的泛型的位置,都指定为实例化的泛型类型。比如:add(E e) -----> 实例化以后:add(Integer e)④注意点:泛型的类型必须是类,不能是基本数据类型。需要用到基本数据类型的位置,拿包装类替换。⑤如果实例化时,没有指明泛型的类型,默
2022-02-11 21:17:23
86
原创 Java----- Collections工具类
排序操作:(均为static方法)reverse(List):反转 List 中元素的顺序shuffle(List):对 List 集合元素进行随机排序sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换查找、替换Object max(Coll
2022-02-10 01:39:10
108
原创 Java----Map的实现类的结构
Map的实现类的结构:----Map接口:双列集合,用来存储 key-value对的数据 —>高中函数:y = f(x) ----HaspMap:作为Map的主要实现类;线程不安全的,效率高;可以存储null的key和value ----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。 原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。对于频繁的遍历操作,此类执行效率高于HashMap。
2022-02-10 01:36:00
305
原创 Java----Set接口的框架
1.Set接口的框架:----Collection接口:单列集合,用来存储一个一个的对象 ----Set接口:存储无序的、不可重复的数据。 —>高中讲的“集合” ----HashSet:作为Set接口的主要实现类;线程不安全的:可以存储null值 ----LinkedHashSet:作为HashSet的子类;遍历其内部数据时,可以按照添加的顺序遍历;在添加数据的同时,每个数据还维护了两个引用,记录此数据前一个数据和后一个数据;对于频繁的遍历操作,Linke
2022-02-10 01:18:18
391
原创 Java----List接口中的常用方法
void add(int index, Object ele):在index位置插入ele元素boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来Object get(int index):获取指定index位置的元素int indexOf(Object obj):返回obj在集合中首次出现的位置int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置Object r
2022-02-10 01:02:12
168
原创 Java-----List接口的框架
List接口的框架:ArrayList的源码分析:LinkedList的源码分析:Vector的源码分析:List接口的框架:----Collection接口:单列集合,用来存储一个一个的对象 ----List接口:存储有序的、可重复的数据。 —>“动态”数组 ----ArrayList:作为List接口的主要实现类;线程不安全的,效率高;底层使用Object[] elementData存储 -----LinkedList:对于频繁的插入、删除操作,使用此类.
2022-02-10 00:55:24
83
原创 Java-----foreach循环
jdk5.0 新增了foreach循环,用于遍历集合、数组 @Test public void test1() { Collection coll = new ArrayList(); coll.add(123); coll.add(456); coll.add(new Person("Jerry", 20)); coll.add(new String("Tom")); coll.add(false);
2022-02-10 00:40:24
81
原创 Java集合框架概述
集合框架的概述集合框架Collection接口方法Iterator迭代器接口集合框架的概述1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt / .jpg / .avi / 数据库中)。2.1 数组在存储多个数据方面的特点:①一旦初始化以后,其长度就确定了。②数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。比如:String[] arr; int[] arr1; Object.
2022-02-10 00:33:43
180
原创 Java比较器
说明:Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的。但是在开发环境中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。如何实现?使用两个接口中的任何一个:Comparable 或 ComparatorComparable接口的使用举例:自然排序1.像String、包装类等实现了Comparable接口,重写了compareTo()方法,给出了比较两个对象大小的方式。2.像String、包装类重写compareTo()方法以后,进行了从
2022-02-07 20:06:34
80
原创 Java----JDK8中新日期时间API
LocalDate、LocalTime、LocalDateTime的使用Instant的使用DateTimeFormatter:格式化或解析日期、时间LocalDate、LocalTime、LocalDateTime的使用说明:1.LocalDateTime相较于LocalDate、LocalTime,使用频率要高2.类似于Calendar @Test public void test1(){ //now():获取当前的日期、时间、日期+时间 Loc.
2022-02-07 19:47:27
103
原创 Java----- JDK8之前日期时间API
1. System类中currentTimeMillis()2. java.util.Date和子类java.sql.Date3. SimpleDateFormat的使用4. Calendar日历类(抽象类)的使用1. System类中currentTimeMillis() @Test public void test1(){ long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之.
2022-02-07 17:14:49
94
原创 Java------String练习题
面试题public class StringTest { String str = new String("good"); char[] ch = { 't', 'e', 's', 't' }; public void change(String str, char ch[]) { str = "test ok"; ch[0] = 'b'; } public static void main(String[] args)
2022-02-07 16:25:11
668
原创 Java-----关于StringBuffer和StringBuilder的调用
String、StringBuffer、StringBuilder三者的异同?String:不可变的字符序列;底层使用。StringBuffer:可变的字符序列;线程安全的,效率低。StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全,效率高。源码分析:String str = new String();//char[] value = new char[0];String str1 = new String(“abc”);//char[] value = new char
2022-02-07 16:11:00
175
原创 Java-----String类与其他结构之间的转换
String 与 基本数据类型、包装类之间的转换String --> 基本数据类型、包装类:调用包装类的静态方法:parseXXX(str)基本数据类型 --> String:调用String重载的valueOf(xxx) 或 连接运算 @Test public void test1(){ String str1 = "123"; int num = Integer.parseInt(str1); String str2 =
2022-02-07 15:46:12
193
原创 Java-----String常用方法
String常用方法1 int length():返回字符串的长度: return value.length char charAt(int index): 返回某索引处的字符return value[index] boolean isEmpty():判断是否是空字符串:return value.length == 0 String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写 String toUpperCase():使用默认语言环境,将 St
2022-02-07 15:34:38
82
原创 Java----String类
String类String:字符串,使用一对""引起来表示。String的实例化字符串拼接的特性String:字符串,使用一对""引起来表示。1.String声明为final的,不可被继承。2.String实现了Serializable接口:表示字符串是支持序列化的;实现了Comparable接口:表示String可以比较大小。3.String内部定义了final char[] value用于存储字符串数据。4.String:代表不可变的字符序列。简称:不可变性。体现:1)当对字符串重新赋值时,
2022-02-07 15:14:33
69
原创 Java设计模式-----单例设计模式
单例设计模式饿汉式懒汉式概念:所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。饿汉式class Bank{ //1.私有化类的构造器 private Bank() { } //2.内部创建类的对象 //4.要求此对象也必须声明为静态的 private static Bank instance = new Bank(); //3.提供公共的静态的方法,返回类的对象 public stat
2022-02-05 20:31:07
88
原创 Java线程的通信
线程的通信问题的引入:生产者/消费者问题问题的引入:使用两个线程打印 1-100。线程1,线程2交替打印。涉及到的三个方法:wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。notify():一旦执行此方法,就会唤醒wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。说明:1.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或同步方法中。2.wai
2022-02-05 19:24:47
65
原创 Java多线程同步
线程同步方式一:同步代码块方式二:同步方法方式三:Lock锁(JDK5.0新增)问题引入:创建三个窗口卖票,总票数为100张。使用实现Runnable接口的方式1.问题:卖票过程中,出现了重票、错票 ---->出现了线程的安全问题2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票。3.如何解决:当一个线程在操作ticket的时候,其他线程不能参与进来。直到线程a操作完ticket时,其他线程才开始操作ticket。这种情况即使线程a出现了阻塞,也不能
2022-02-05 18:55:53
155
原创 Java创建多线程的四种方式
Java多线程创建多线程的4种方式1. 继承Thread类的方式2. 实现Runnable接口的方式3. 实现Callable接口的方式(JDK5.0新增)4. 使用线程池的方式(JDK5.0新增)创建多线程的4种方式1. 继承Thread类的方式①创建一个继承于Thread类的子类②重写Thread类的run() ------>将此线程执行的操作声明在run()中③创建Thread()类的子类的对象④通过此对象调用start()注:①如果自己手动调用run()方法,那么就只是
2022-02-05 17:46:20
784
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人