JAVA第二阶段2
文章平均质量分 90
幸运小新
这个作者很懒,什么都没留下…
展开
-
第二十七章 正则表达式
就是:虽然上面的正则表达式是匹配到的连续重复的字,但是捕获的是圆括号里面的内容, 所以捕获的组里面的字只有一个,因此使用replaceAll(“$1”)的意思是:用捕获到的单个字去替换匹配到的多个字。下面如果我们只写一个 . ,表示我们要找到所有字符。下面这个表示要出现一个任意的数字,出现两次。注意:如果这里没有转义字符,编译是错误的。这里一个都匹配不到,因为不是以数字开头的。这里有个问题,下面这种写法也是正确的。这里的中文的范围用16进制来表示。查找到第一个字符1998的过程。+表示一个或多个的意思。原创 2024-01-02 22:55:41 · 1217 阅读 · 0 评论 -
第二十三章 反射
这里我们的Dog类不一定会用到,但这里不管这么多,怎么在加载的时候就会报错,这里称为静态加载。我们下面修改一下,getDeclaredConstructor可以得到所有的构造器对象。这里会报错,getConstructor返回的是public构造器对象。这里不在idea中写,因为在idea中写马上就会报错了。这里父类不局限于它的直接父类,它的父类的父类也可以。我们的源码没有修改,但我们的功能已经发生了变化。这里还是会报错,一个非法的访问异常。下面我们调整一下给出的类的示例。在示例的类上加一个注解信息。原创 2024-01-01 16:57:42 · 433 阅读 · 0 评论 -
第二十二章 多用户即时通信系统(推消息 私聊 发文件)
服务端在9999端口监听,如果有一个客户端来了,那么就启动一个线程T1,跟他进行一个通讯。我们这边设置一个布尔值b,如果我们可以成功登入(即进入if语句),那我们的b就变为true,否则还是为false,我们在最后返回这个布尔值b。这里我们的线程发送了一次就退出了,如果我们想要发送多次,我们需要用一个while循环将其包起来,下面写服务端的代码,注意:服务端也有User,Message,MessageType类。下面我们再登入另一个用户,我们发现系统不允许并行登入(parallel)原创 2024-01-01 15:07:23 · 882 阅读 · 0 评论 -
第二十一章 网络编程
三次握手之后,client正式给server发送数据,三次握手成功表示可以接收到数据。我们能够上网,看b站等等,都是因为我们遵守了TCP/IP协议。第一次client发一个包过去,发包的时候连接已经形成了。只有在我们购买服务器的时候,才是真正的公共的静态地址。注意:我们做网络编程一定要知道对方的IP地址。一般情况下,我们的IP地址都是自动分配的。之后我们的client端再回一个包过去。发过去之后server再回一个包。下面这种方式也可以看IP地址。下面这个就是百度的地址。下面这个是淘宝的地址。原创 2023-12-28 23:46:54 · 355 阅读 · 0 评论 -
第二十章 坦克大战3
发现将敌人信息作为一个字符串,后续操作十分麻烦,但将其保存为一个node对象,候选操作会简单很多。如果一开始就选择2继续上局游戏,会抛出异常。首先要判断被击毁的坦克是敌方坦克。Node类 表示敌人坦克的信息。当我们x掉窗口时,存盘退出。在paint方法中调用。原创 2023-12-21 16:48:08 · 859 阅读 · 0 评论 -
第十九章 IO流2
我们实际开发中,有这样一个需求,我们在保存一个数据的值的时候,同时也希望将它的数据类型保存起来。里面的name,age,nation和color分别为String,int类型的,这两个类型都实现了序列化,但是此时我们新增一个master,而Master类是没有实现序列化,此时运行。加上这一句话,我们在类中添加新的属性时,比如hobby时,系统不会认为因为你添加了一个属性,这个类就变成了一个全新的类,他认为只是原先类的修改版。这里还是错误的,因为复制过去的Dog类跟原来的Dog类本质上不是同一个类。原创 2023-12-19 18:42:50 · 895 阅读 · 0 评论 -
第十九章 IO流
比如一张图片有1025个字节,读一次后剩1个字节,下次进行读取,如果使用write(buf)这个方法,第二次还是读取1024个字节(实际只应该读1个字节),出现了错误。同样的BufferedWriter类中有属性Writer,也可以封装一个节点流,只要的Writer子类。在finally中,最后还要关闭这个流,不然会堆积在其中,最后造成资源的浪费。我们发现每次,我们输入新内容都会覆盖原来的内容,如果我们不想覆盖原来的内容。编码为utf-8 ,一个英文字母占一个字节,一个汉字占三个字节。原创 2023-12-19 17:53:21 · 818 阅读 · 0 评论 -
第十八章 坦克大战2
这里出现一个问题,我们的子弹没有在击中坦克时消失(击中坦克后,消失的原因是我们没有画出子弹),它到出了边界才真正消失,我们要做出修改,使子弹碰到敌方坦克时就立刻消失。上面的写法也有问题,我们会发现,当第一个子弹飞出边界后,再点击J,仍然没有子弹飞出,因为虽然这个子弹的线程结束了,但我们new出来的shot并没有消失。此时出现一个问题,我们将一个坦克打爆炸后,在原来的位置再开一炮,它还是会出现爆炸图案。这里出现一个问题,虽然敌方坦克击中我方坦克,发生了爆炸,但我方坦克还是存在的,原创 2023-12-14 21:25:54 · 773 阅读 · 0 评论 -
第十七章 多线程基础
下面写一个代码查看当前电脑有多少CPUcat.run()会先将run方法执行完,才去执行下面的代码,是属与串行化执行,并不是真正的多线程。原创 2023-12-14 20:22:01 · 50 阅读 · 1 评论 -
第十六章 坦克大战1
有一个奇怪的地方MyPanel中的paint方法没有调用,但也运行了这就涉及到一个绘图的原理性的东西以下四种情况会调用paint方法之前我们点击小窗口的×,程序并不会退出,还在运行,但加上下面这句话,我们就能在点击×后退出程序。原创 2023-11-30 12:27:38 · 25 阅读 · 0 评论