- 博客(19)
- 收藏
- 关注
原创 初识线程 带你理解程序运行的基本流程
一个存在磁盘中的程序(一份文件,包括代码文件和数据文件) ==》不能解决问题:正在运行中的程序,代码和数据都在内存中--可以解决问题:通过(代码-计算机指令)调度计算机资源(CPU RAM IO)来解决问题--当一个计算机需要同时运行多个进程的时候,需要操作系统来帮忙--当一个程序需要同时进行多个任务,需要使用线程--操作系统分配资源的最小单元:一个进程的组成部分,任何一个进程至少有一个线程--进程也需要操作系统帮忙管理线程--CPU分配执行任务的最小单元 就是线程。
2026-01-24 11:37:36
389
原创 File 监听器
然后返回FileUI类添加 MouseListener 监听器。将根目录改为path,这样点击按钮时才有打开文件的新界面。先判断点击的是窗体还是标签,第一步获取点击的组件。在此基础上增加功能,添加动作监听器。FileListener 类。拼接路径,将新的路径显示出来。先创建一个文件管理器窗口。接下来实现打开文档/标签。
2025-12-04 22:24:12
221
原创 Java—File类的使用
(new File()创建了一个文件对象,没有真正在磁盘上创建文件,createNewFile()才是真正在磁盘创造文件的操作)File 类包含了获得文件/目录的属性,以及对文件/目录进行改名和删除的方法,但不包含读写文件内容的方法。此类通过构造方法创建对象。
2025-11-30 23:20:04
346
原创 Java 图像处理工具
4、底片(将图像中每个像素的 RGB 值反转 —— 即每个颜色通道的值变为 255-原始值(因为 RGB 颜色范围是 0-255))将 MouseClicked 中的绘制图片的代码移动到 original 中,将数组存进来。3、在调用 readImage 方法时,定义整形数组,这样可以将局部变量拿到外面来用。遍历 pixelArr 数组,将像素点一个个取出来,而像素点本质是 int 值。2、读取图片,用到 IO 流(I=input,O=output)取出三原色的方法改写一下,保留低位数据,去掉高位数据。
2025-10-18 15:55:01
372
原创 编程题 (校门外的树,蛇形方阵,旋转矩阵)
定义 left , right , up ,down 作为基准限定数组边界,按照 上-下,右-左,下-上,左-右 的顺序录入数组中的值,每进行完一边要对应的改变 left , right , up ,down。定义一段区域的头和尾为 start 和 end,利用循环将区域中的所有树标记为0 (外层循环循环 m 次,处理 m 个区域;输入路长和区域数目。定义数组 arr[ l+1] 保存树的数据,遍历数组将初始的树标记为 1。读取输入的 n 的值,定义 num 为 1 作为整个蛇形方阵的起始数。
2025-10-18 13:53:13
366
原创 编程入门题(密码翻译、分糖问题、两数之和)
如果相等,就将这个值的下标存到数组 arr[0] ,将这个值存到 arr[1] ,然后返回arr。在字母 'a' 到 'z' ('A' 到 'Z')的范围内,当遇到 'z' ('Z')时替换为 'a'('A'),除此之外的字母全部减1,最后输出。先创建一个长度为2的数组 arr 用于储存下标结果,然后创建一个哈希表,key 为数组中的元素,value 为对应的下标。先定义一个容量为5的数组用于保存输入的数据,初始化一个变量 eat 用来记录被吃掉的糖果数量。被吃掉的糖果数量就是对3取余的结果累加。
2025-09-23 19:10:56
511
原创 Java 动态数组 泛型
→ 在 java 中所有的基本数据类型(int ,long ,short ,byte ,char ,double ,float ,boolean ),都有对应的包装类,数据被包装成了一个 Integer 值。这时候如果添加整型数据是没有问题的,但添加字符等其他类型就会报错。※问题:添加数据时 10\20\30 均为 int 类型数据,但方法中参数类型是 Object ,这似乎矛盾?把 E 看作一个参数,接下来的方法中的数据类型要和它匹配,如。泛型:把添加到动态数组(集合)中的数据形参化。
2025-08-30 15:43:25
274
原创 Java 动态数组扩容优化
这是因为之前设计的方法是:每加一个数据每调用一次 add 方法,我们就会创建新的数组,在原来的基础上变长一个单位,然后 copy 原有的数据。尤其是像这样要添加很多数据的情况,随着这个添加的数据操作越来越频繁,越来越多,后面每加一个数据都会极其困难。由于初始长度固定为10但不确定数组中到底存储了几个数据,所以定义一个整型变量 size 表示有效数据的个数,当 size 与数组长度相等时表明数组已满需要扩容。所以现在的解决方法是减少它扩容的次数,这样效率就会提高。对比会发现内置的动态数组运行速度快得多。
2025-08-24 23:04:41
207
原创 Java 动态数组
②把删除位置后面的数据拷贝过来,但所有数据的位置要向前移动一位。动态数组可以随着数据的增加扩容,也可以随着数据的减少缩小空间。先整一个初始数组保存数据,由于一开始没有要存储的数据所以数组长度给个 0 就行。将原来的数组的数据拷贝过来需要遍历原来的数组,然后更新数组的内存地址。(B),将 A 中的数据拷贝到 B ,后续的操作也是在 B 上进行。先写下标越界的判断,设置新数组(删除数据的话数组就比原来短1)来一个新的长度更长的数组,这里设置比原数组长1。插入数据需要:①把插入位置前面的数据先拷贝过来。
2025-08-23 13:30:46
484
原创 Java 五子棋小游戏
后,单独有一个通道调用 paint 方法画出组件,期间绘制棋盘的代码也在执行,但是这段代码很短,导致 paint 方法还没执行完(窗体还没画出来)棋盘代码就已经执行完了。写到这里报错 NullPointerException(空指针报错),因为现在只是定义了数组还没有传递,在GameUI 中把 GameListener 中的数组取出传递给 MPanel 类。先确定的相关数值:18*18的棋盘,水平、竖直线各要画19条,棋盘最左上角的点(x0,y0),棋盘格子的长度25px,棋子大小16px。
2025-08-04 00:29:29
335
原创 Java 绘图工具(六)
👉所有 swing 组件都有一个 paint 方法,绘制组件本身。改变窗体状态会导致所有组件包括窗体本身重新调用 paint 方法。4、继承绘制图形的组件 JPanel ,重写该组件的 Paint 方法。将窗体隐藏后再显示或手动改变窗体的大小,会发现画好的图形消失了。1、先保存画好图形的数据(坐标、按钮内容),以保存直线为例。2、在松开鼠标的方法中,创建Shapes 对象保存直线数据。3、定义Shapes 数组保存图形对象。根据图形对象设计对应的类。6、循环遍历保存的图形的对象。
2025-07-27 14:33:51
272
原创 Java 类的继承
日常生活中存在包含关系的对象或事物,在程序中把它理解为是一种继承关系(如:水果与苹果、香蕉,图形与三角形、矩形 等等),类似于父和子的关系,子类可以继承父类中的一些属性和方法,实现代码复用,避免代码累赘。eg. 现在有一个动物类(父类),动物会吃饭和发出叫声,这是大部分动物共有的。如果现在有猫类和狗类(两个子类)继承吃饭和叫声方法,但是具体到这两个子类时,要根据吃的东西和叫声的不同进行修改。Manage 类中并没有定义属性和方法,但子类继承了父类的属性和方法,所以可以直接用。如果要保留父类原有的方法。
2025-07-25 12:28:27
374
原创 Java 绘图工具(五)
原来是从窗体获取画笔,现在改成从 drawPanel 获取。将按钮放到功能面板上。问题:画线时线会覆盖按钮。优化:有一个独立的画图区。
2025-07-24 23:58:07
276
原创 Java 绘图工具(四)
2、让橡皮擦在使用完后松开鼠标时,能够使画笔颜色恢复为黑色。1、重新定义一个变量保存选择的颜色,设置当前画笔的颜色。看不到画出的图形(画出的线和橡皮擦一样是白色)放一个提前准备好的代码 ↓↓↓。在使用过橡皮擦后再画图发现。画出的线和橡皮擦一样粗。
2025-07-23 00:30:46
261
原创 Java绘图工具(三)
2、曲线是由拖动鼠标时经过的点组成的,所以定义变量 x4,y4 表示经过的点。一、多边形绘制(思路和三角形相似,先画出一条边,通过点击画出剩下的边,最后双击使首尾相连)三、绘制线段的过程中线段可见(用白线覆盖黑线,只剩下最后要的那条线)1、设置橡皮擦按钮,实现接口,重写抽象方法。2、改变窗体的背景颜色,让它变成纯白。二、曲线绘制(拖动鼠标产生曲线)实现接口,重写接口中的抽象方法。3、设置橡皮擦大小(强制转型)三、绘制线段的过程中线段可见。1、设置曲线按钮,这里用到。四、橡皮擦(白色曲线)
2025-07-21 13:09:35
446
原创 Java绘图工具(二)
2、由于只这样写会使得 在画线后点击时,会重新执行一遍mousePressed 和 mouseReleased 中的内容,使得三个点的坐标重合,所以这里使用了。通过一条线和一个点确定三角形,则除了线的两个端点的坐标参数 x1,y1,x2,y2 外,还需要点的坐标的参数 x3,y3 所以。然后再在 mouseClicked 的判断中让 flag 重新变为 1,这样就又可以画下一个三角形了。学习如何添加功能按钮(形状绘制按钮,基础颜色选择按钮)否则的话效果是👇👇👇,无法画出下一个三角形。
2025-07-18 21:50:11
178
原创 Java绘图工具(一)
都属于是局部变量,写出来会报错,所以就直接定义全局变量,之后的 x1=e.getX( );1、用 getGraphics() 获取并定义一个和返回类型(Graphics)同类型的变量来保存数据。ps:图形内容显示在哪个组件上,画笔就从该组件上获取,这里明显从窗体 jf 上获取。直线绘制调用 drawLine(),所以要获取所需的参数。作用域:一对 { } 就是一个独立的作用域。1、在方法(作用域)中定义的变量。2、在子类中保存传递过来的画笔对象。并在子类中实现接口并重写接口中。制作绘图工具需要用到。
2025-07-17 00:02:58
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅