
Java札记
文章平均质量分 55
Jock.Liu
你以为失败的人生,也许是别人努力活着的结果!
展开
-
Java||继承--案例分析--发红包问题
综合案例:群主发普通红包群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。2. 成员领取红包后,保存到成员余额中。请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。分析:所以,我们需要定义三个类:User类:封装成员变量和成员方法package demo14;public class User { private String name;原创 2021-01-24 23:56:05 · 832 阅读 · 0 评论 -
【Java】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
需求:题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?分析:这是一个斐波那契数列数列问题同样,它的突破口在三个月之后开始,界定第一个月数目为1,第二个月也是1,从第三个月开始计算第一次出生的兔子数月份 对数 1 1 2 1 3 2 4 ...原创 2019-06-13 18:07:39 · 49139 阅读 · 20 评论 -
【Java--线程】多线程的实现方式,Thread 类和Runnable 接口
Thread 类结构:public class Thread implements RunnableThread 类实现了 Runnable 接口,它们之间具有多态关系实际中,使用 Thread 类的方式实现多线程,最大的局限就是不支持多继承,因为 Java 语言的特点就是单继承,所以为了支持多继承,完全可以实现 Runnable 接口的方式,一边实现一边继承。但用这两种方式创建...原创 2019-06-23 21:35:28 · 339 阅读 · 0 评论 -
【Java--线程】进程和线程的概念:什么是进程?什么是线程?
进程和线程:进程:启动一个QQ.exe就叫一个进程。 接着又启动一个360.exe,这叫两个进程。以此类推,每个独立执行的程序都称为进程。线程:线程是在进程内部同时做的事情,比如在QQ里,有很多事情要同时做,比如发送消息和接受消息,同时上传文件,这就是由多线程来实现的。如Windows任务管理器:可以看到,后台运行搜狗输入法这个程序看作是一个进程,而搜狗运行中又有多个线程在执行。可...原创 2019-06-23 20:59:55 · 1266 阅读 · 0 评论 -
【Java】Comparator 接口排序用法
集合比较器:java的比较器有两类,分别是Comparable接口和Comparator接口。Comparable是排序接口,若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序。让需要进行排序的对象实现Comparable接口,重写其中的compa...原创 2019-06-22 21:54:43 · 1084 阅读 · 0 评论 -
【Java】集合框架和集合基础
Java集合框架图(图片来源网络,侵删):集合框架: 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。 算法:是...原创 2019-06-22 21:15:58 · 385 阅读 · 0 评论 -
【Java】集合遍历的概念及遍历的几种方式
遍历的概念:遍历输出就是讲一个数组或者集合通过指针遍历后显示出来。举个例子:数组的输出for(int i = 0; i < a.length ; i++){ System.out.print(a[i] + " ");}这就是遍历,就是把数组或者集合中的元素一个一个的往外打印输出。遍历的方式:常见的for循环遍历:import java.util...原创 2019-06-22 19:18:12 · 2125 阅读 · 0 评论 -
【Java--线程】线程的生命周期及线程的几种状态
生命周期:线程是具有生命周期的,就好比你早上打开微信,晚上关掉微信一样,中途微信还要执行调用CPU资源,准备启动,以及后台等待消息一系列线程操作。状态:线程主要包括 7 种状态,分别是出生状态、就绪状态、运行状态、等待状态、休眠状态、阻塞状态和死亡状态。状态说明出生状态:用户在创建线程时所处的状态,在用户使用该线程实例调用 start() 方法之前,线程都处于出生状态。 就绪...原创 2019-06-25 15:21:10 · 855 阅读 · 0 评论 -
【Java-流】FileInputStream与FileOutputStream文件输入流和文件输出流的应用
理解:Java中的 File 类是文件和目录路径名的抽象形式。使用 File 类可以获取文件本身的一些信息,例如文件所在的目录、文件长度、文件读写权限等。File 文件类:File 类表示处理文件和文件系统的相关信息。也就是说,File 类不具有从文件读取信息和向文件写入信息的功能,它仅描述文件本身的属性,主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限...原创 2019-06-16 23:50:53 · 808 阅读 · 0 评论 -
【Java】排序方法--希尔排序(Shell Sort)
基本思想:希尔排序是对插入排序的一种改进改进,它是简单插入排序经过改进之后的一个更高效的版本。通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为最小值。希尔排序通过这种策略使得整个数组在初始阶段达到从宏观上看基本有序,小的基本在前,大的基本在后。然后缩小增量,到增量为时,其实多数情况下只需微调即可,不会涉及过多的数据移动。算...原创 2019-06-20 21:34:24 · 458 阅读 · 0 评论 -
【Java】集合类的概念以及集合中的接口
集合类的概念所有集合类都位于 java.util 包,其中提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。一个集合是一个对象,但它表示一组对象,Java 集合中实际存放的是对象的引用值,不能存放基本数据类型值。集合中的接口集合框架是一个类库的集合,包含实现集合的接口。接口是集合的抽象数据类型,提供对集合中所表示的内容进行单独操作的可能...原创 2019-06-04 21:13:14 · 1600 阅读 · 0 评论 -
【java】泛型类:生成10个1到20之间的不重复的随机数并降序输出
需求:编写一个程序,获取10个1至20的随机数,要求随机数不能重复。并把最终的随机数输出到控制台。分析:创建一个Random对象,用来生成随机数 创建一个hashset对象,泛型存储 循环生成10个1-20的随机数 对它们进行排序 遍历输出。Collections.sort实现代码:package edu.xalead;import java.util.*;p...原创 2019-06-11 00:02:01 · 3938 阅读 · 0 评论 -
【Java】排序方法--快速排序
基本思想:快速排序(Quicksort)是对冒泡排序的一种改进。通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法描述:设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边...原创 2019-06-16 15:05:06 · 314 阅读 · 1 评论 -
【Java--线程】多线程的同步机制(锁):synchronized
同步机制所谓同步机制,指的是两个线程同时作用在一个对象上,应该保持对象数据的统一性和整体性。synchronized 关键字专门负责管理线程对象中同步方法访问的工具——同步模型监视器,它的原理是为每个具有同步代码的对象准备唯一的一把“锁”。当多个线程访问对象时,只有取得锁的线程才能进入同步方法,其他访问共享对象的线程停留在对象中等待。实现代码:举个,吃包子的例子:同步块:...原创 2019-06-23 21:53:12 · 346 阅读 · 0 评论 -
Java线程||线程让步yield()及curentThread()方法的作用
yield()yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!curentThread()方法的定义:curentThread() 方法可返回代码段正在被哪个线程调用的信息...原创 2019-06-27 00:44:41 · 348 阅读 · 0 评论 -
Java线程||线程的加入join(),线程优先级,线程中断以及守护线程
线程的加入:执行该语句的线程必须要让步给新加入的线程先完成任务,然后才能继续执行。格式:以加入A线程为例线程对象B.join() :无参数,则A线程一直暂停,直到B线程运行结束。线程对象B.join(时间t) 有参数,则A线程每隔t时间暂停一次,直到B线程运行结束。while(true)作为无限循环,经常在不知道循环次数的时候使用,并且需要在循环内使用break才会停止...原创 2019-06-27 10:13:29 · 279 阅读 · 2 评论 -
Java||String类中indexOf的用法
indexOf的四种用法: int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 int ...原创 2019-09-19 22:27:00 · 2049 阅读 · 0 评论 -
Java||字符串String类及常用的方法
String类 String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。创建字符串创建字符串最简单的方式如下:String str = "Hello world!";在代码中遇到字符串常量时,这里的值是"Hello world!",编译器会使用该值创建一个...原创 2019-09-19 09:23:12 · 348 阅读 · 0 评论 -
Java||求集合数组中的中位数
中位数:简单解释就是最中间的那个数,如果集合是奇数个,则中位数是按大小排列最中间那个数,如果集合是偶数个,则中位数就是按大小排列最中间那两个数的平均数。求解:先判断这个集合是奇数还是偶数,如果是奇数那么就是第(n+1)/2个数 ,下标为(n-1)/2 如果是偶数 就是第n/2和n/2+1的数的平均值 也就是下标为n/2-1和n/2的平均值实现代码:import java.ut...原创 2019-08-03 22:05:44 · 8204 阅读 · 0 评论 -
Java网络||URL类和URLConnection类
URL:URL 是统一资源定位符(Uniform Resource Locator)的简称,它表示 Internet 上某一资源的地址。通过 URL 用户可以访问各种网络资源,比如常见的 WWW 以及 FTP 站点。浏览器可以通过解析给定的 URL 在网络上查找相应的文件或其他资源。协议名(protocol)指明获取资源所使用的传输协议,如 HTTP、FTP 和 file 等,...原创 2019-07-01 00:19:30 · 718 阅读 · 0 评论 -
Java网络||UDP通信:DatagramSocket类和DatagramPacket类
UDP通信协议:与TCP通信相似,UDP也是一种通信协议。与TCP不同,TCP指的是是一种面向连接的、可靠的、基于字节流的传输层通信协议,UDP 协议是用户数据报协议的简称,也用于网络数据的传输。虽然 UDP 协议是一种不太可靠的协议,但有时在需要较快地接收数据并且可以忍受较小错误的情况下,UDP 就会表现出更大的优势。UDP 协议发送数据的步骤:使用 DatagramSocket()...原创 2019-06-29 15:24:19 · 950 阅读 · 0 评论 -
Java网络||InetAddress类并利用其输出本地IP
InetAddress类:Internet 上的主机有两种方式表示地址,分别为域名和IP 地址。java.net 包中的InetAddress 类对象包含一个 Internet 主机地址的域名和 IP 地址。InetAddress 类提供了操作 IP 地址的各种方法。该类本身没有构造方法,而是通过调用相关静态方法获取实例。常用方法如下:方法名称 说明 boolea...原创 2019-06-29 00:43:58 · 760 阅读 · 0 评论 -
Java网络||socket实现多个客户端连接在一个服务器上
使用socket通信的步骤服务器端:在服务器端用socket()建立套接字,用accept()等待客户端连接,accept()有阻塞的作用,在没有接收到客户端连接时会阻塞服务器接下在的执行,知道客户端连接为止。 客户端:同样利用socket()建立套接字连接服务器,利用字节流从服务器里读写数据,直至数据交换完毕(交换完毕与字节流传输有关)。多客户端连接同一服务器设备连接服务器并不只是局...原创 2019-06-29 00:08:29 · 8244 阅读 · 1 评论 -
计算机基础||网络编程基础知识
网络分类计算机网络是指将有独立功能的多台计算机,通过通信设备线路连接起来,在网络软件的支持下,实现彼此之间资源共享和数据通信的整个系统。按照地理范围主要将网络分为局域网、城域网、广域网和因特网。局域网(LocalArea Network)简称 LAN,是一种在小范围内实现的计算机网络,一般在一个建筑物内或者一个工厂、一个事业单位内部独有,范围较小。 城域网(Metropolitan A...原创 2019-06-28 15:31:28 · 381 阅读 · 0 评论 -
【Java--线程】多线程死锁:什么事死锁?怎样解决死锁?
怎么是死锁?一个线程永远地持有一个锁,并且其他线程都尝试去获得这个锁时,那么它们将永远被阻塞。假如果线程A持有锁L并且想获得锁M,线程B持有锁M并且想获得锁L,那么这两个线程将永远等待下去,这种情况就是最简单的死锁形式。死锁的必要条件互斥条件:线程要求对所分配的资源进行排他性控制,即在一段时间内某 资源仅为一个进程所占有.此时若有其他进程请求该资源.则请求进程只能等待. 不剥夺条件:...原创 2019-06-24 22:13:34 · 456 阅读 · 0 评论 -
Java网络||TCP通信:ServerSocket类和Socket类
TCP 网络通信:TCP 网络通信是指利用 Socket 编写的通信程序。利用 TCP 协议进行通信的两个应用程序是有主次之分的,一个是服务器程序,一个是客户端程序,两者的功能和编写方法不太一样。其中ServerSocket 类表示 Socket 服务器端,Socket 类表示 Socket 客户端,两者之间的交互过程如下:服务器端创建一个 ServerSocket(服务器端套接字)...原创 2019-06-28 15:39:43 · 874 阅读 · 0 评论 -
Java线程||sleep方法的作用(sleep())
sleep方法:sleep() 方法的作用是在指定的毫秒数内让当前“正在执行的线程”休眠(暂停执行)。这个“正在执行的线程”是指Thread.currentThread() 返回的线程。所以主线程的时间并不会因为线程的休眠而受到影响。举个例子:class MyThread extends Thread { @Override public void run() { try {...原创 2019-06-27 10:46:31 · 2842 阅读 · 2 评论 -
【Java】流的理解及其流的运用(未完)
流的概念:流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。也可以这么理解:流在Java中是指计算中流动的缓冲区。流的分类字节流:1.字节输入流类:FileInputStream、Buffe...原创 2019-06-16 12:24:47 · 239 阅读 · 0 评论 -
【Java】BufferedOutputStream与BufferedInputStream字节缓存输出流和字节缓存输入流的使用
理解:BufferedInputStream:用于读取文本文件内容,它继承于FilterInputStream。BufferedOutputStream:本身带有一个缓冲区,在写入数据时,先放到缓冲区中,实现缓冲的数据流。BufferedOutputStream:是一个缓冲流,可以将你所想写入的内容先暂时放进缓冲区,然后一起写出,当然它的优点就是减少了对硬盘的读写次数,另外效...原创 2019-06-16 12:22:18 · 1018 阅读 · 1 评论 -
【Java】try--catch语句的理解和运用实例
作用在Java中通常采用 try catch 语句来捕获异常并处理。try{ 逻辑代码块;}catch( 类型 e){ 处理代码块;}把可能引发异常的语句封装在 try 语句块中,用catch语句以捕获可能发生的异常。如果 try 语句块中发生异常,那么一个相应的异常对象就会被拋出,然后 catch 语句就会依据所拋出异常对象的类型进行捕获,并处理...原创 2019-05-22 23:43:11 · 1910 阅读 · 0 评论 -
【Java】排序方法--插入排序
基本思想将数组中的全部元素依次跟前面已排元素进行比较,通常是先跟前面两个相比,如果该元素比已排序的元素小(大),则进行插入,直到全部元素都比较过为止。算法描述算法描述如下:①. 从前两个元素可以认为已经被排序,将其看成一个数组②. 取出下一个元素,在已经排序的元素序列中从后向前扫描③. 如果该元素比它的前一个小,将该元素移到下一位置,继续跟前一个元素比较④. 找到位置后将该元素插入...原创 2019-05-17 18:04:50 · 170 阅读 · 0 评论 -
【Java】包package的概念和理解以及访问权限
Java 包(package)为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。如何创建包创建包的时候,你需要为这个包取一个合适的名字。之后,如果其他的一个源文件包含了这个包提供的类、接口、枚举或者注释类型的时候,都必须将这个包的声明放在这个源文件的开头。包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每个类型都应用于它。如果一个源文件中没有...原创 2019-05-17 17:37:45 · 873 阅读 · 0 评论 -
【Java】 enum(枚举)使用详解和总结
Enum (枚举)类型的介绍e枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。举个例子就明白了;Public static class RainbowColor { //...原创 2019-05-26 21:28:37 · 541 阅读 · 0 评论 -
【Java】编写一个程序,计算表达式“((123456789*9)>(987654321*3))?true:false”的值
计算表达式“((123456789*9)>(987654321*3))?true:false”的值这里涉及三元运算符:三元运算符也称三目运算符,它的运算符是“ ?”,有三个操作数。操作流程如下:首先判断条件,如果条件满足,就会赋予一个变量一个指定的内容(冒号之前的),不满足会赋予变量另外的一个内容(冒号之后的)。操作语法:数据类型 变量 = 布尔表达式?条件满足设置内容:条...原创 2019-05-24 20:48:50 · 1613 阅读 · 1 评论 -
【Java】排序方法--选择排序
在需要排序的序列中找到最小(大)元素,将其存放到序列的起始位置。算法如下:①从待排序序列中,找到关键字最小的元素a[min];②如果a[min]不是该排序序列要的首元素,将其和首元素调换;③从之后的元素中,找出关键字最小的元素,重复①、②步,直到排序结束。举个例子:public class 选择排序 { public static void main(String[] args) {...原创 2019-05-17 15:42:31 · 180 阅读 · 0 评论 -
【Java】排序方法--冒泡排序
冒泡排序 Bubble Sort冒泡排序是一种简单的排序算法。它主要是通过重复访问要排序的数列,一次比较两个元素,如果他们的顺序不符合原来的设计就把他们调换过来。访问数列的工作是重复地进行直到没有再需要交换的数据,也就是说该数列已经排序完成。是不是有点类似于水泡慢慢的往上冒啊!所以就称为冒泡排序给大家找个动态图片就好理解了(图片来源于网络)我把过程写一下吧,方便大家理解。(以从小到大排序为...原创 2019-05-16 11:19:18 · 233 阅读 · 0 评论 -
【Java】对重写与重载的理解和示例分析
重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。在面向对象原则里,重写意味着可以重写任何现有方法。举个例子动物可以移动,比如狗public cla...原创 2019-05-16 11:07:12 · 401 阅读 · 0 评论 -
【Java】关于多态的概念和实例分析
在面向对象这里,多态是一个重要的方法。它可以实现代码的简化。定义:多态是同一个行为具有多个不同表现形式或形态的能力。举个通俗的例子:手机有WiFi功能模块,它可以连接不同的WiFi。这就是多态,一句话就是“一个对多个”。多态具有的优点有:1. 消除类型之间的耦合关系(简单地说就是,没有多态,那么等号左边是啥右边就得是啥,这就叫耦合;而有了多态,左边是父类(或者接口),右边是子类(或实现类)...原创 2019-05-16 11:03:20 · 525 阅读 · 0 评论 -
【Java】日历类的操作与实例分析
Calendar常用类:abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。 boolean after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。 boolean befo...原创 2019-05-20 23:33:31 · 367 阅读 · 0 评论 -
【Java】正则表达式分组匹配
分组匹配:正则表达式分组:如果想匹配3个数字,正则表达式可以用如下写法:\d{3}以上代码使用重复量词可以匹配3位数字。但是在实际应用中,往往需要重复多个字符,例如我想重复ab两个字符,使用以下代码就不合适了,代码如下:ab{3}以上正则表达式只能够重复3次b。为了实现重复多个字符可以使用小括号来指定子表达式或者说分组来实现此功能,例如:(ab){3}上面的正则就可以重复...原创 2019-05-20 23:07:17 · 4008 阅读 · 1 评论