![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 56
woai3364
热爱技术,喜欢编程,保持初心。
展开
-
小球乱撞游戏
顾名思义,就是获取你需要操作的对象将它“聚焦”,例如:平时你在登陆qq界面时,有个账号输入框和密码输入框,假如你先鼠标点击了电脑桌面的app,这时聚焦点不在qq账号输入框那,你需要用鼠标点击一下(聚焦一下),才能输入。在小球类中,我们实现了小球撞墙反弹功能,在这里我们有设置小球speedX,speedY的关于x,y轴上的速度,只要当球碰撞到边界时,把速度修改为负的就好了。④我们实现小球添加是通过创建一个动态数组,点击一下“添加”就新建一个小球对象,后面画的时候再遍历它。1、用一个线程控制所有的小球对象。原创 2023-03-09 19:06:22 · 185 阅读 · 0 评论 -
java-再习多线程
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中不可缺少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。由于某种原因线程放弃CPU执行权,暂停自己的执行。原创 2023-03-05 09:24:22 · 47 阅读 · 0 评论 -
java单链表实现一个ListMap
思路:我们在写增逻辑时,其实是将增改放在一起的,我们先判断传入的key值是否为空,是否存在ListMap中,若存在就将原有的key节点修改val值,并将原来的val值返回,若不存在LsitMap中,咋们就创建一个节点接在头节点head后面(在链表里添加元素模块,我们必须找到前驱节点,head最好找到),最后将size++,别忘记了。思路:我们创建链表节点去实现Map.Entry接口,这个接口是标准库里的,你只要实现这里面的方法就可以称之为Map.主要就是存储键值对,即K,V。原创 2023-02-16 20:58:52 · 192 阅读 · 0 评论 -
java多线程之流水线工厂模式
在主函数里我们创建一个队列来储存任务,并将任务传到每一个线程里来完成加工操作,然后调用start方法开起线程,再调用join方法等待所有线程都完成之后将每个成品打印出来。当第一个产品到第一个工作间用时1个单位时间,再接着进入第二个工作间依次下去,就当第一个产品完成第一个工作间任务时,第二个进入一个工作间。当我们需要对一个产品进行多次不同的操作时,比如我们要对一个队列List 进行加工,先将List传入T1工作间,加工完后,再传入T2、T3进行加工,最后得到成品。这时我们就用到流水线工厂模式进行加工。原创 2023-02-09 18:59:51 · 525 阅读 · 0 评论 -
java多线程之线程安全问题
操作系统中线程的调度是抢占式执行的,或者说是随机的,这就造成线程调度执行时线程的执行顺序是不确定的,有一些代码执行顺序不同不影响程序运行的结果,但也有一些代码执行顺序发生改变了重写的运行结果会受影响,这就造成程序会出现bug,对于多线程并发时会使程序出现bug的代码称作线程不安全的代码,这就是线程安全问题。~弊:当线程很多时,因为每个线程都会去判断同步上的锁,这是很浪费资源的,无行中会降低程序的运行效率。默认情况是打开的,只要有一个线程进去执行代码了,锁就会关闭,当线程执行玩了出来了,锁才会自动打开。原创 2023-02-08 18:28:05 · 246 阅读 · 0 评论 -
java数组/链表实现栈和队列
栈(stack) 是限定仅在表尾进行插入或删除操作和线性表(只有一端口能进出数据),对栈来说表尾和表头有特殊含义,表尾被称为栈顶,表头被称为栈底,没有元素的空表称为空栈,元素数量达到栈的容量称为满栈,数据添加到栈中叫入栈、压栈,数据从栈中删除叫出栈、弹栈,由于栈元素特殊添加和删除的规则,所以栈的元素会先进后出的现象,简称为LIFO(Last in first out)。入栈的思路就是先将栈顶指针向上移一位,再直接赋值,前提需判断该栈是否满,当然栈满了,是不允许再进栈的。链表——实现队列:(双链表)原创 2023-02-07 15:03:52 · 522 阅读 · 0 评论 -
多线程——飞机大战
2、接下来我们先设置飞机类,想想你的飞机有啥属性,有啥方法,首先你会想到你飞机得动吧,动的时候还得有速度吧,你的飞机有多大呢,你的飞机是怎么一个飞机(战斗机、直升机),最后可能后续才考虑到:该飞机是否还存活,换句话来说就是说这架飞机被子弹击落了没。飞机移动的,发出移动的子弹其原理就是先前设置好飞机运动规则,然后计算出其属性,再将这些计算出来的属性存入队列中,在线程每大约30ms(自己可以设置)(相当于帧)遍历一次,也就是把那个时间点的图片画出来。原创 2023-02-05 20:21:10 · 373 阅读 · 0 评论 -
java实现链表
由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。4、我们在写一个数据结构时无非就是 增、删、查、改,还有一些像获取长度,判断是否为空的功能函数,我们在这添加两个检查索引是否越界函数。5、在链表中访问一个index 位置的节点值会很困难,必须遍历链表,我们将或取index位置的节点设置一个函数。3、设置头、尾节点和长度变量。原创 2023-02-05 15:49:15 · 825 阅读 · 0 评论 -
初识java-多线程
②调用线程对象的start()方法。2、static void sleep (long millis) //使当前正在执行的线程停留(暂停执行)指定的毫秒数。·public static Thread currentThread() : //返回对当前正在执行的线程对象的引用。void setName(String name): //将此线程的名称更改为等于参数name。①new 线程类传入可运行的类\接口。String getName(): //返回此线程的名称。如何获取main()方法所在的线程名称?原创 2022-12-29 19:18:44 · 63 阅读 · 0 评论 -
Java之初识-多态
说明:向上转型时,子类对象当成父类对象,只能调用父类的功能,如果子类重写了父类中声明过的方法,方法体执行的就是子类重写过后的功能。在Java中,继承是一个重要的特征,通过extends关键字,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。这个是之前向上造型过的子类对象仍然想执行子类的特有功能,所以需要重新恢复成子类对象。向上转型:可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。原创 2022-12-14 00:14:30 · 73 阅读 · 0 评论 -
Java之初识接口
当一个类的所有都是抽象方法的时候,我们就可以将其定义为接口。接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要...则必须能...”的思想。继承是一个“是不是”的关系,而接口实现则是“能不能”的关系。其接口的本质是契约、标准、规范。②只要编写了接口,意味着要去使用实现,否则没有意义,在java中类利用implements关键字来实现接口,只有实现了接口中的抽象方法才能去实例化本类中的对象。3、接口和类是实现关系,通过implements 关键字表示,可以单实现也可以多实现。原创 2022-12-12 23:38:12 · 81 阅读 · 0 评论 -
浅谈-递归
①一个正整数的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n!=5*4*3*2*1。递归,是一种直接或间接调用自身方法的算法。也就是在定义自身的同时又出现自身的直接或间接调用。①把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。②递归策略只需要少量程序就可以描述出解题过程所需要的多次重复计算。②递归规则:与原问题相似的规模小的问题。= n*(n-1)!①递归出口:否则会出出现内存溢出。1、运用递归求1~100的和。原创 2022-12-08 23:48:12 · 108 阅读 · 0 评论 -
java画板之3D图形
这时一个立体矩形,在JFrame里有个画多边形的Polygon类,它能让我们实现立体。画立体矩形时,在运用Polygon类时我们需要找到构成立体矩形的三个面上的点。在这里,我们设一个点(x,y)、宽(w)和高(h)如图所示,用这些变量可以获取到这个立体矩形的所有点。为了使图像更立体化我们填充图形(g.fillPolygon),并设置颜色。原创 2022-11-17 22:52:19 · 896 阅读 · 0 评论 -
java画板之重绘
而paint方法是一个java早已定义好的方法,java设计者并不知道我们用paint方法是来画图形的,设计者在设计之初只定义了用paint方法把这些组件画出来了,却并没有画我们自己创造的这些图形的这个部分。·当子类和父类定义了同名的属性时、方法时,我们要想在子类中调用父类中声明的属性、方法,则必须显式的使用“super.方法”的方式,表明调用的是父类中声明的方法。在画板上画完图形后,若拖动窗体改变画板窗体大小时,图像会消失,为了让画的图像不消失,就得重绘。3、在监听器中创建一个集合,用来储存图形。原创 2022-11-10 14:34:25 · 799 阅读 · 0 评论 -
java基础之ArrayList
一、集合和数组的区别对比·集合类的特点:提供一种存储空间可变的存储模型,存储的数量容量可以发生改变。·集合和数组的区别:①共同点:都是存储数据的容器 ②不同点:数组的容量是固定的,集合的容量是可变的*如果存储的数据长度经常发生改变,推荐使用集合。二、ArrayList集合构造方法和添加方法方法名 说明 public ArrayList() 创建一个空白的集合对象 public boolean add原创 2022-11-09 00:19:01 · 85 阅读 · 0 评论 -
java画板之“山峰”
两点之间中点在x轴不变,y轴上下波动,就会高低不平的“山峰”。2)添加判断“山峰”语句 ,并创建一个绘制“山峰”的方法。在这里我们默认把“山峰”的上下波动设置成 500.③在绘制“山峰”是先计算点位,再去用直线连接。当然这是不全的,我只画了一半(左边)。①我们需要运用到Random去获取随机数。②需要运用到递归,运用if语句去跳出循环。3)然后我们做好绘制“山峰”的方法。用我制作的画板,画一画。二、在原来画板上的改动。1)添加“山峰”按钮。原创 2022-11-01 19:41:14 · 77 阅读 · 0 评论 -
java之封装
封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问,要访问该类的数据,必须通过指定的方式。*原则:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。Ⅱ、对需要访问的成员变量,提供对应的一对getXxx方法、setXxx方法。·是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。this关键字的作用:可以调用本类的成员(变量、方法)解决局部变量和成员变量的重名问题。原创 2022-10-29 22:44:43 · 388 阅读 · 0 评论 -
java画板之简化and添加颜色
可看到在创建、添加按钮、给按钮添加颜色、将按钮添加在窗体上时要一个一个去操作显得太麻烦了,我们把它简化一下。两者对比看似简化了不少,对以后画板的升级就方便多了。2)给按钮上背景颜色,并设置图形颜色。1)添加空白颜色按钮,并安装监视器。一、由上篇初识java画板。二、为画板添加颜色图案。原创 2022-10-27 21:33:20 · 248 阅读 · 0 评论 -
java基础之二维数组
一、当我们要存储多个班级的成绩时该咋办?二维数组:元素为一维数组的数组。定义格式: 数据类型[ ] [ ] 变量名; 例:int [ ] [ ] arr;二、二维数组初始化1)静态初始化·格式 数据类型[ ] [ ] 变量名 = new 数据类型 [ ] [ ]{{元素...},{元素...}}; 例:int [ ] [ ] arr=new int [ ] [ ] {{原创 2022-10-27 00:41:42 · 594 阅读 · 0 评论 -
java基础-方法篇之方法的定义、方法的调用、形参与实参
我们定义了一个isEvenNumber 方法,该方法可判断number 是否为偶数,为了让isEvenNumber执行,我们必须在程序入口main 中调用该方法。我们将参数定为 (int number),在调用方法时,把已经定义好且赋值的number,传给方法isEvenNumber。·格式(单个参数) public static void 方法名 (数据类型 变量名){...};注:带参数方法调用时,参数的数量与类型必须与方法定义中的设置匹配,否则程序将报错。4)带参数方法的定义和调用。原创 2022-10-25 18:51:18 · 742 阅读 · 0 评论 -
初识java画板
窗体对象,自带一个Graphics 对象,可以用来再窗体上绘图 (直线 矩形 圆 ...)MouseListener接口的作用:用于鼠标事件——按下、释放、单击、进入、离开的监听。Graphics类:GUI编程的基础,一种用于绘图的类,提供基本的几何图形绘制方法。- 监听器:监听窗体的鼠标监听器 > MouseListener。2、实现监听①创建监听器类DrawListener(上图)- 将鼠标监听中的方法复制出来,改分号为大括号。1、创建一个drawPad类,并创建一个窗体。原创 2022-10-19 18:51:16 · 437 阅读 · 0 评论 -
java-数组
格式:数据类型 [] 变量名= new 数据类型 [] {数据1,数据2,数据3....}注意:数组遍历指的是把数组中的所有元素提取出来,取出来之后可以(打印、求和、判断。简化:数据类型 [] 变量名= {数据1,数据2, 数据3...}获取数组中的每一个元素,我们可以把获取到的元素输出在控制台。作用:索引用于访问数组中的数据使用,数组名【索引】等同于变量名。③:与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中。②:取数组中第一个数据作为变量的初始值。2)索引:索引是数组中数据的编号方式。原创 2022-10-18 18:58:52 · 177 阅读 · 0 评论