
java学习
love the future
愿那些年的努力,可以成为更好的你
展开
-
javaGOF23种设计模式
相关信息链接:https://zhuanlan.zhihu.com/p/75253493转载 2020-03-08 16:53:27 · 191 阅读 · 0 评论 -
网络编程模拟在线聊天室,实现群聊与私聊
基本的思想在线聊天室:服务器端和客户端目标是实现多个客户可以收发多条信息,加入多线程,可以开启多个用户端如果直接用lamda写入线程可能存在问题:线程代码太多,不好维护客户端读写没有分开,必须先写后读。所以将线程代码放入一个类中,进行封装群聊:加入容器实,将创建的客户端都加入client容器中,在进行发送消息的时候,遍历整个容器,依次将消息发给各个客户端。私聊:规定一种私聊的...原创 2020-02-25 00:01:42 · 1031 阅读 · 0 评论 -
TCP,UDP编程的简单应用
TCP编程服务器tcp编程步骤:1.指定端口。使用ServerSocket创建服务器2.阻塞式等待连接accept3.操作:输入输出流操作4.释放资源客户端TCP编程步骤:1.建立连接:使用Socket创建客户端,指定服务器的地址和端口2.操作:输入输出流操作3.释放资源利用TCP编程,实现模拟多个用户的登陆:可以开启多个客户端,提交登录信息,服务器根据内容进行判断,并...原创 2020-02-24 23:50:01 · 175 阅读 · 0 评论 -
java网络编程的基本知识
URLURL(universal Resource Locator)用于:定位一个软件之间的某个资源url的组成包含:协议:存放资源的主机域名端口名;默认80资源文件名URI可以分为URL和URNURL:包含资源,也包含了资源访问的方式URN:没有包含访问资源的方式。例如:https://www.baidu.com:80/index.html?uname=lsy&...原创 2020-02-24 23:35:56 · 143 阅读 · 0 评论 -
守护线程与lambda的推导
lambda的推导:是为了避免匿名内部类定义过多。public class lambdaTest { public static void main(String[] args) { // TODO Auto-generated method stub new Thread(()->//括号中写的是参数,如果是一个参数则可以省略括号直接写参数 System.out....原创 2020-02-20 18:46:31 · 1377 阅读 · 0 评论 -
线程的创建以及线程的状态
线程创建的三种方式创建线程的方式一:1.创建:继承Thread,重写run方法2.启动线程:创建子类对象,调用start方法。创建线程的方式二:(推荐方式)因为java是单继承的,所以一般不建议使用继承实现Runnable接口,创建实现类对象,创建代理类Thread对象。创建方式三:继承Callable接口重写call方法。public class TestThread...原创 2020-02-20 18:46:21 · 511 阅读 · 0 评论 -
线程安全与同步线程
线程不安全:数据有负数,相同的情况比如在进行抢票的时候。可能会出现在第数据不准确的现象public class Unsafe implements Runnable { private static int ticketNum=10; private boolean flag=true; @Override public void run() {//run 不可以throws异...原创 2020-02-20 18:46:09 · 1422 阅读 · 0 评论 -
多线程模拟电影院选位置
public class HappyCinema { public static void main(String[] args) { // TODO Auto-generated method stub List<Integer> available=new ArrayList<Integer>(); available.add(3); availab...原创 2020-02-20 18:45:59 · 765 阅读 · 0 评论 -
预防死锁的生产者与消费者模型
协作模型:生产者消费者实现的方式之一:管程法角色生产者消费者缓冲区数据public class Cotest { public static void main(String[] args) { // TODO Auto-generated method stub SynContainer container=new SynContainer(); new Pro...原创 2020-02-20 18:45:47 · 524 阅读 · 0 评论 -
字节数组输入输出流
我们知道,文件是存放在硬盘上,java虚拟机不可访问,要通过os来访问,所以在文件输入输出的时候就要操作系统来管理相应的资源。字节数组是java虚拟机可以直接访问,该字节数组可以理解为计算机的内存,远程服务器上的内存,或者是 网络上的内存。 所有的数据都可以转换为字节数组。但是因为内存的大小有限,所以字节数组不宜过大、步骤1.创建源:源不是文件,而是字节数组(可以理解为计算机的内存...原创 2020-02-20 18:23:26 · 1809 阅读 · 0 评论 -
装饰器的简单了解
四大组成部分:1.抽象组件:需要装饰的抽象对象接口或者抽象父类。2.具体组件:需要装饰的对象3.抽象装饰类:包含了对抽象组件的引用以及装饰者共有的方法4.具体的装饰类:被装饰的对象。public class DecorateTest { public static void main(String[] args) { // TODO Auto-generated method s...原创 2020-02-20 18:23:13 · 170 阅读 · 0 评论 -
文件的分割与合并
RandomAccessFile:随机访问文件分割与合并面向对象的思想,封装分割文件。要素//源头private File src;//目的地(文件夹)private String destDir;//所有分割后的文件存储路径private List destPaths;//将所有的文件存入一个容器中。//每块的大小private int blockSize;//块数pr...原创 2020-02-20 18:22:48 · 316 阅读 · 0 评论 -
文件输入输出流和字节数组输入输出流结合使用
文件通过文件输入流,以程序为中转,程序通过字节数组输出流写入字节数组通过字节数组输入流将字节数组读到程序中,然后通过文件输出流在还原为文件。以程序为中心1.图片转为字节数组2.将字节数组还原为文件public class TestCombine { public static void main(String[] args) { // TODO Auto-generated me...原创 2020-02-20 18:22:20 · 3209 阅读 · 0 评论 -
ArrayList,LinkedList,HashSet,HashMap(熟悉和理解容器,手动写一些简单的容器)
ArrayListimport java.util.ArrayList;public class myArrayList<E> { private Object[] elementDate; private int size; private static final int DEFAULT_CAPACITY=10;//默认数组的容量 //构造器 public m...原创 2020-02-14 18:51:52 · 223 阅读 · 0 评论 -
java中的容器
接口两个常用的接口Collection是接口 :Set,List是继承了接口Collection的两个接口,Set中有HashSet实现类;List中有ArrayList实现类和LinkedList实现类。Map是接口:有HashMap实现类(1) CollectionSet:HashSetList:ArrayList,LinkedList,Vector(2) MAp:...原创 2020-02-14 18:45:37 · 147 阅读 · 0 评论 -
java中的字节流和字符流
字节输入流InputStreamIo程序的操作步骤1.创建源2.选择流3.操作4.释放资源InputStream,OutputStream是可用于处理,字符文件,视频,语音,图片等文件public class TestIO { public static void main(String[] args) { //1.创建源 File src=new File("ab...原创 2020-02-14 18:32:29 · 163 阅读 · 0 评论 -
java中IO基本知识点
java IO技术核心类(5个)和接口(3个)file:文件类InputStream:字节输入流OutputStream:字节输出流Reader:字符输入流Writer:字符输出流Closeable:关闭流接口Flushable:刷新流接口Serializable:序列化接口java中的输入输出,说的是以java的程序为中心的。输入流:数据源到程序,(InputStrea...原创 2020-02-14 18:22:15 · 252 阅读 · 0 评论 -
异常处理机制的简单介绍
异常的处理:异常机制的本质就是:当程序出现问题时,能使程序安全的退出。1.抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前的执行路径,并把异常对象提交给JRE2.捕获异常JRE得到该异常后,寻找相应的代码来处理该异常,JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。异常的分类:Throwable是所有异常...原创 2020-02-11 11:04:55 · 392 阅读 · 0 评论 -
利用Calendar打印当天所在的月份信息
public class TimeTest { public static void main(String[] args) throws ParseException { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); System.out.println("输入时间,格式为:yyy...原创 2020-02-11 10:57:28 · 192 阅读 · 0 评论 -
java中的时间Date类和日期Calendar类
时间类Date在java中,返回的时间是以起始时间:1970年00:00:00,开始计算的,以毫秒为单位。Date d=new Date();//返回当前的时间;但是在java中,Date时间类,很多的方法已经被废弃。基本不再使用了。现在基本都是使用Calendar类。日期Calendar类在Calendar类中的时间格式化类:SimpleDateFormat是继承DateForma...原创 2020-02-09 23:20:24 · 261 阅读 · 0 评论 -
java中的包装类
8中基本的包装类型在java中基本数据类型是不面向对象的,而有很多时候要用到对象,所以对于基本数据类型来说,就会不适用,因此在java中引入了8中包装类基本数据类型变量中存储的就是原始值,包装类型属于引用数据类型,变量中存储的是存储原始值地址的引用。Integer类型与int类型之间的区别与转化public class WrappedTest { public static voi...原创 2020-02-09 23:07:59 · 155 阅读 · 0 评论 -
java中的String和StringBuffer
不可变序列String类String类是不可变字符串:因为在java的源码中,String被放在一个final中的数组中,是不可变的。可变的字符序列StringBuilder:线程不安全,效率高(一般使用这个)StringBuffer:线程安全,效率低String类:讲一个字符串定义为String类s时,s中的值就不可再发生变化,如果对其进行了操作,则需要重新将其赋值给新的String类...原创 2020-02-09 22:53:58 · 132 阅读 · 0 评论 -
java中冒泡排序及二分法查找
冒泡排序法及其优化冒泡排序就是通过两层循环,对于相邻的数进行比较,大的数就往后移,第一轮完成后,就会将最大的数放在最后,第二轮完成后就会将第二大的数放在倒数第二的位置3,4,2,1,8,6,7,4,1,6,9第一轮:3,2,1,4,6,7,4,1,6,8,9第二轮:2,1,3,4,6,4,1,6,7,8,9第三轮:1,2,3,4,4,1,6,6,7,8,9第四轮:1,2,3,4,1,4...原创 2020-02-09 10:42:26 · 226 阅读 · 0 评论 -
数组的复制
数组的拷贝System.arraycopy(src, srcPos, dest, destPos, length);public class Arraycopy { public static void main(String[] args) { // TODO Auto-generated method stub String[] s1= {"a1","a2","a3",...原创 2020-02-09 10:27:25 · 145 阅读 · 0 评论 -
内部类的分类
成员内部类:静态内部类,非静态内部类非静态内部类:public class inClass { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个内部类的对象; Outer.Inner inner=new Outer().new Inner();//先创建外部类,...原创 2020-02-09 10:19:55 · 160 阅读 · 0 评论 -
300集飞机小游戏
相关要点:paint函数中的Graphics g的使用Color c=g.getColor(); //保存当前画笔的颜色 Font f=g.getFont();//保存当前的字体 g.drawRect(100, 100, 100, 100); g.setColor(Color.green);//修改画笔的颜色 g.setFont(new Font("宋体",Font.BOLD,...原创 2020-02-07 11:21:54 · 314 阅读 · 0 评论 -
java中的多态
多态的条件多态指的是同一方法的调用,由于不同的对象可能会有不同的行为,现实生活中,同一方法,具体实现会完全不同。多态的要点1.多态是方法的多态,不是属性的多态,(多态与属性无关)2.多态的存在要有3个必要的条件:继承,方法重写,父类引用指向子类的对象3.父类引用指向子类的对象后,用该父类引用调用子类重写的方法。public class State { public static ...原创 2020-02-07 10:49:19 · 140 阅读 · 0 评论 -
java中的static,传值机制,package
static关键字:在类中,用static 申明的成员变量为静态成员变量,也叫类变量,类变量的生命周期和类相同,在整个应用程序执行期间都有效。static修饰的成员变量和方法从属于类,普通变量和方法从属于对象。静态类中只能使用静态的方法和变量,非静态对象可以使用静态和非静态的变量和方法。静态初始化块:构造方法用于对象的初始化,静态初始化块用于类的初始化操作,在静态初始化块中不能直接...原创 2020-02-05 12:10:16 · 526 阅读 · 0 评论 -
java中对象的内存管理
对象用于管理数据(是一个内存块,存放变量和方法)数据无管理时代: 只有基本的数据类型,比较简单,不涉及数据管理的问题。数组管路和企业部门制: 将同类型的数据放在一起,即是数组,这种“归类”的思想,便于管理数据,管理人对象和企业项目制: 对象中有不同类型的变量和方法。方便调用和管理数据。对象和类: 类是对象的抽象(模板)以类为模板来产生对象。类的对象=类的实例。对象:包含属性和方法。...原创 2020-02-04 20:24:55 · 212 阅读 · 0 评论 -
java中常见的方法
方法和语句块语句块: 即是放在花括号中的语句,不可以多次调用。方法:即是加了名字的语句块,可以反复调用,用来完成特定功能的的定片段。根据需要进行调用,在方法后面可以添加参数,也可以有返回值。普通的方法需要通过对象来进行调用。方法的组成:形参:定义方法是写的 *实参:是调用方法时实际用的参数返回值:可有可无。return有两个作用,1.结束方法的运行,2.返回一个值返回值类型:...原创 2020-02-03 11:56:38 · 232 阅读 · 0 评论 -
类型转换以及相应的溢出解决
自动类型转换容量小的类型可以自动转化为容量大的数据类型(容量所表示的就是数据类型表示的范围的大小)int,long转换为float和double类型的时候会损失相应的精度,可以将整型常量直接赋值给byte,short,char等数据类型,而不需要进行强制类型转换,只要不超出表示范围即可。int a=324; long b=a; double c=a; c=b; //a=b;//...原创 2020-02-02 19:46:57 · 1297 阅读 · 0 评论 -
相关的运算符
算术运算符二元运算符:+、-、*、/、%一元运算符:++、–整数运算:如果两个操作数有一个是Long,则结果为long没有long时,结果为int,即是操作数全部为short,byte,结果也为int浮点运算如果两个操作数有一个是double,则结果也为double只有两个操作数都是float,则结果才为float。a++:表示的是先使用,使用完了之后在自增。++a:先自增...原创 2020-02-02 14:52:57 · 415 阅读 · 0 评论 -
变量,常量及其数据类型
变量的本质就是代表一个可操作的存储空间,空间的位置是确定的,但是里面放置什么值是不去确定的, 我们可以通过变量名来访问对应的存储空间,从而操作这个存储空间的值根据所需定义的变量的大小来定义,不同的类型分配的存储空间的大小时不一样的。变量包含变量名,数据类型,作用域变量只有申明并且初始化之后才能使用。变量的类型1.局部变量:在方法或者语句块中定义的变量,只能在方法和语句块中使用2.成员...原创 2020-02-02 13:48:16 · 736 阅读 · 0 评论 -
java中的桌球弹动游戏
需要的东西1.两张图片,桌面,小球设计思路画出一个窗口,设计相关的大小及其在屏幕中的位置加载图片,将桌面和小球的图片加载到窗口,然后根据图片的呈现效果修改相关窗体的大小及其位置移动小球,如果左右移动的话就是对于x坐标的修改,如果是进行弹回的话,那么就根据相应的角度进行修改,在移动小球的时候,是对窗口的不断重画,更新。简易的小球游戏小球只进行左右移动package myball...原创 2020-02-01 17:26:27 · 279 阅读 · 0 评论 -
java中final关键字
在eclipse中链接源码在JRE System Library 中有很多源文件,在某些包下打开.class文件,当没有看见源码的时候,点击Attached source:Workspace:表示源码在当前的工作区中External File:表示源码在某个压缩包中External Folder:表示源码在某个目录中比如可以看String.class的源码。(shift+Ctrl+T)...原创 2020-02-01 12:07:46 · 127 阅读 · 0 评论