
Java基础
文章平均质量分 84
雪碧聊技术
成为大人不一定是要有出息,而是学会照顾自己
展开
-
Java网络编程1 - 介绍网络编程、网络编程三要素
IP:设备在网络中的地址,是设备在网络中的唯一标识。端口:应用程序在设备中的唯一标识。协议:连接和数据在网络中传输的规则。IP(Internet Protocol):全称“互联网协议地址”,是分配给上网设备的唯一标识。IP域名,简称“域名”。用于在互联网上识别和定位网站的人类可读的名称。举例:因为人们不可能记具体的IP地址,比如192.168.1.100,而是记域名,比如www.baidu.com。是互联网中用于将域名转换为对应IP地址的分布式命名系统。原创 2024-11-19 22:09:42 · 991 阅读 · 0 评论 -
多线程4:线程池、并发、并行、综合案例-抢红包游戏
线程池就是一个可以复用线程的技术。举例://目标:创建线程池对象来使用//1、使用线程池(ExecutorService接口)的实现类ThreadPoolExecutor声明七个参数来创建线程池对象//2、使用线程池处理任务!看会不会复用线程?//输出线程执行完,返回的结果try {//3、关闭线程池:一般不关闭线程池//等所有任务执行完毕后,再关闭线程池!//立即关闭,不管任务是否执行完毕!//1、定义一个实现Callable接口的实现类this.n = n。原创 2024-11-18 15:28:50 · 1051 阅读 · 0 评论 -
多线程3:线程同步
把访问共享资源的核心代码给上锁,以此保证线程安全。Lock锁是JDK5开始提供的一个新的锁定操作,通过它可以创建出锁对象进行加锁和解锁,更灵活、更方便、更强大。Lock是接口,不能直接实例化,可以采用它的实现类ReentrantLock来构建Lock锁对象。以上就是同步的基本方案,今后还会接触更加高级的同步方案,比如自旋锁、乐观锁等等。原创 2024-11-17 19:48:47 · 1043 阅读 · 0 评论 -
多线程2:线程的常用方法、线程安全
欢迎来到“雪碧聊技术”优快云博客!在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!原创 2024-11-17 15:46:42 · 377 阅读 · 0 评论 -
多线程1:线程的创建方式
线程(Thread)是一个程序内部的一条执行流程。多线程:指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)。//目标:掌握线程的创建方式2:实现Runnable接口//2、创建MyRunnable任务对象//3、把任务对象交给Thread类的构造器,将其封装为一个线程对象//4、调用线程对象的start方法启动线程。t1.start();//主线程的任务i < 5;i++) {System.out.println("主线程输出:"+i);原创 2024-11-15 21:51:20 · 1480 阅读 · 0 评论 -
Java基础:内部类
就是类中的一个普通成员,类似我们之前学过的普通的成员变量、成员方法。有static修饰的内部类,属于内部类自己持有。简单来说:匿名内部类,本质是一个子类,并且会立即创建出一个子类对象。①匿名内部类,是一种特殊的局部内部类。②所谓匿名:指的是程序员不需要为这个类声明名字,默认有个隐藏的名字。举例:注意:不要看见new就以为是在创建对象,上面是内部类的写法。//获取一个实现了Swim接口的类的对象System.out.println("学生游得快~");start(s1);原创 2024-11-15 19:13:39 · 1048 阅读 · 0 评论 -
面向对象编程:代码块
有时候,代码块不一定是必须使用的,更多情况下,是体现我们的专业性,和代码的最佳实践,才会选择使用代码块。举例:初始化类的变量,数组。在main方法中进行初始化,和静态代码块中进行初始化,这两种都行,只不过在静态代码块中进行初始化更加的专业,体现出我们知识的完整性。原创 2024-11-02 22:14:51 · 574 阅读 · 0 评论 -
GUI编程-数字华容道小游戏 4/4
本篇文章,主要介绍如何将之前用Java中的GUI编程,写的数字华容道-石头迷阵小游戏,打成exe可执行文件,而且不依赖jdk环境,发给任何人都能跑的那种。原创 2024-11-01 21:31:58 · 921 阅读 · 0 评论 -
GUI编程-数字华容道小游戏 3/4
以上就是GUI编程-数字华容道小游戏 3/3的全部内容,该小游戏到此位置就开发完成了,当然功能还是不完全,可以根据自己的思路,实现后续的换皮肤、选择难度等功能。如果想了解更多的Java知识,请关注本博主~~原创 2024-11-01 19:22:56 · 545 阅读 · 0 评论 -
IO流-06:字符流
这个刷新过程实际不用我们手动完成,因为关闭流时就自动完成了,而关闭流也是由try-with-resource自动完成的。如果不刷新字符输出流,会导致程序结束时,内存缓冲区的内容没有被写入文件中,就导致了读出的内容,要比原文件内容少一部分。以内存为基准,可以把文件(磁盘)中的数据以字符的形式读入到内存(Java程序)中。注意:close()方法,包含了flush方法,因此我们关闭流的同时,就完成了刷新流。因为从磁盘(文件)中,读取数据到内存中的时候,二者之间,隔着一个“内存缓冲区”。原创 2024-11-01 16:44:33 · 649 阅读 · 0 评论 -
IO流-05:字节流
定义字节数组时,让这个数组的长度足够大,能一次性读完文件中的所有字节,从而实现不截断汉字,达到输出不乱码的要求。下面我们要将D:\01.gif这张动态图,复制到C:\Users\jhj15\Pictures目录下,并令新图片名称为new01.gif//目标:使用字节流完成文件的复制操作//源文件:D:\01.gif//目标文件:C:\Users\jhj15\Pictures\new01.gif (注意:复制过去的时候必须带文件名,否则无法自动生成文件)//调用自定义的复制文件方法。原创 2024-11-01 14:55:41 · 1530 阅读 · 0 评论 -
IO流-04:认识IO流
负责把数据读到内存中去负责从内存写数据出去IO流:是用来读、写文件的。可见上面的出、入,是针对内存来说的。原创 2024-10-31 19:23:44 · 349 阅读 · 0 评论 -
IO流-03:字符集
ASCII字符集,包含了英文、符号等长度为一个字节(8位)规定:首位是0,因此ASCII字符集可用的长度是7(因为首位固定为0),因此总共可以表示2的7次方,即128个字符,这对美国佬来说完全够用了。Unicode字符集,是由国际组织制定的,可以容纳世界上所有的文字、符号,因此称为“万国码”。原创 2024-10-31 17:46:47 · 1068 阅读 · 0 评论 -
IO流-02:方法递归 + 文件搜索案例
二、应用、执行流程、算法思想。三、其他应用:文件搜索。原创 2024-10-17 21:52:51 · 151 阅读 · 0 评论 -
IO流-01:File类
由上图可知,一个file对象,就代表操作系统中的一个文件/文件夹。而file对象提供的方法,也只能操作文件/文件夹本身,并不能操作文件中的内容。可见上面讲的遍历文件夹,只能遍历一级文件。因此要想实现多级遍历(也可以叫文件搜索),就必须学习递归,因此请看下一集:IO流-02:方法递归。IO流:用于读写数据的(可以读写文件,或网络中的数据)。2、常用方法1:判断文件类型、获取文件信息。3、常用方法2:创建文件、删除文件。4、常用方法3:遍历文件夹。1、创建File类的对象。2、什么是File类?原创 2024-10-17 21:11:15 · 327 阅读 · 0 评论 -
GUI编程-数字华容道小游戏 2/4
写完1、2两步,项目运行效果:之后,在把打印语句,换成具体的移动逻辑就行。数字华容道的乱序操作,并不是可以随意打乱的,必须满足一定的算法去打乱顺序,这样才是有解的,才能让玩家恢复到有序。那有没有简单的打乱算法?以上就是“GUI编程-数字华容道小游戏 2/3”的全部内容,此时这个项目,就还差“最佳历史记录”,即最少步数通关这个功能,详见本博主文章“GUI编程-数字华容道小游戏 3/3”~~原创 2024-10-31 15:01:34 · 1101 阅读 · 0 评论 -
GUI编程-数字华容道小游戏 1/4
数字华容道类型的。//自定义窗口类,该类的一个对象,就会展示一个窗口//无参构造器//1、调用一个自定义方法:初始化窗口大小等信息//该自定义方法,用来初始化一个窗口的信息//设置窗口的标题this.setTitle("石子迷阵 v1.0 casually");//设置窗口的宽高//设置窗口已关闭,程序就会终止//设置窗口居中在屏幕//让窗口显示出来。原创 2024-10-30 20:30:13 · 531 阅读 · 0 评论 -
面向对象高级:GUI编程
GUI是Java中的一项编程技术。GUI,全称Graphical User Interface,是指图形用户界面。通过图形元素(如窗口、按钮、文本框等),与用户进行交互与命令行界面(CLI)相比,GUI更加直观、友好。举例:点击鼠标、按上下左右、点击登录.....编写自定义窗口(继承Frame类、实现监听接口)//自定义的窗口类(认Frame做父),然后实现监听接口//无参构造器//1、设置窗口的标题this.setTitle("登录界面");//2、设置窗口的大小。原创 2024-10-30 18:49:14 · 777 阅读 · 0 评论 -
集合框架之3:综合小案例-电影信息管理模块
欢迎来到“雪碧聊技术”优快云博客!在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!原创 2024-10-30 14:09:38 · 466 阅读 · 0 评论 -
集合框架之2:List集合
有序、可重复、有索引。原创 2024-10-29 23:11:05 · 662 阅读 · 0 评论 -
集合框架之1:Collection集合
集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。遍历集合的同时,又进行了增、删集合元素的行为,这时候就可能出现异常,就称之为“并发修改异常问题”。//演示“并发修改异常问题”//目标:解决并发修改异常问题list.add("Java入门");list.add("宁夏枸杞");list.add("黑枸杞");list.add("人字拖");list.add("特级枸杞");list.add("枸杞子");list.add("西洋参");原创 2024-10-29 15:28:23 · 800 阅读 · 0 评论 -
面向对象编程之6:综合项目-智能家居系统
以上,就是智能家居系统的全部代码,想了解更多的Java知识,请关注本博主~~原创 2024-10-28 23:12:26 · 537 阅读 · 0 评论 -
面向对象编程之3:枚举类
由于枚举类的构造器是被private修饰的,因此不能被外部实例化,即:枚举类对外不能创建对象。最后,我想说的是,上面这个案例,使用常量类、枚举类都行,只不过枚举类更优而已。由于枚举类对象是被final修饰的(最终类),因此不能被继承。可见使用枚举类,进行信息分类和标志,是比较合适的。而且枚举类提供了很多其他的方法,供我们使用。③反编译该代码,看看枚举类的底层。枚举类很适合做信息分类和标志。2、枚举类的应用场景。举例:“数字华容道”原创 2024-09-22 11:52:29 · 348 阅读 · 0 评论 -
面向对象编程之2:单例类(设计模式)
设计模式:一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为“设计模式”。确保某个类只能创建一个对象。避免浪费内存。举例:任务管理器。无论你打开多少次任务管理器,都只弹出这一个窗口。这就是单例的。原创 2024-10-28 19:44:18 · 401 阅读 · 0 评论 -
面向对象编程之1:final
常量:使用了static、final这两个关键字修饰的成员变量。举例:注意!常量名的命名规范:建议使用大写字母、多个单词使用下划线连接起来。static表示该变量属于静态变量(即:类变量,一个类只有一份)。final表示该变量不能被二次赋值。原创 2024-10-28 16:30:54 · 964 阅读 · 0 评论 -
Java基础:多态
多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态。原创 2024-10-28 12:57:41 · 432 阅读 · 0 评论 -
Java加强:泛型
一个类,在定义时,如果使用了泛型变量,那么该类就被称为“泛型类”。注意:此处我们不可能完全仿造出一个ArrayList类,因为这涉及到了源码,太困难。此时我们就在MyArrayList里面,套一个ArrayList的对象。就好比我造不出芯片,但是我可以在别人芯片的基础上动一点,然后说是我造的(这种设计模式叫做“装饰设计模式”)。定义接口时,声明了类型变量,那么该接口就称为“泛型接口”。在声明方法时,在返回值类型前,使用类型变量,那么该方法就叫“泛型方法”。就是“?原创 2024-10-27 16:01:58 · 644 阅读 · 0 评论 -
顺序查找、二分查找
其实,Java的Arrays工具类已经写好了二分查找,即Arrays.binarySearch(要查找的数组,目标值),返回值为目标值的下标。此时left在right右侧,已经发生了错位,找不到目标值150,因此就结束二分查找。2、核心思想:每次排除一半的数据,查询数据的性能明显提高极多。此时数组中没有我们要找的数字150,目标值150大于147。此时目标值79大于23,因此要将left移到mid右侧。当然,如果我们不想要找到的目标值,也可以将mid返回。一、基本查找(顺序查找):从前往后,挨个查找。原创 2024-10-14 23:24:47 · 730 阅读 · 0 评论 -
面向对象高级一:static
无论我们打开多少次任务管理器,只会打开一个窗口(即只产生一个对象),因为多了没啥用,都是这个界面,所以代码开发者,就将任务管理器设置为单例模式了。特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次。1、在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量。工具类没有创建对象的需求,建议将工具类的构造器进行私有化(使用private关键字修饰)。作用:完成类的初始化,例如:对类变量的初始化赋值。3、注意点:在本类中,访问本类的类变量,可以省略类名。原创 2024-10-14 13:00:12 · 1540 阅读 · 0 评论 -
Java高级:反射
综上4种情况,我们一般使用带Declared的那种方法,这个方法更强大,能获取已存在的全部构造器,而不是仅仅局限于public修饰。也就是说,这样就可以突破封装性(即:获取到private修饰的构造器,就可以构造对象,打破private的封装性)。通常情况下,通过new的方式,进行实例化就行,但是后期学习框架的某些场景下,通过反射进行实例化就显得尤为重要。(2)获取到成员变量的作用:依然是赋值、取值(前提是有一个实例,如:下面代码中的cat实例,赋值、取值的对象都是这个cat实例)原创 2024-10-15 22:59:51 · 800 阅读 · 0 评论 -
Java高级:动态代理
过了一段时间,这个明星大火,全国各地都邀请她去唱歌、跳舞,单子太多了,于是不得不找一个中介公司,中介公司给她配了一个经纪人(代理),来帮她完成准备工作(准备场地、收钱),而这个明星只负责唱歌、跳舞。就好比:我一个UserServiceImpl对象,根据动态代理对象生成工具类,可以生成一个代理对象,这个代理对象比原对象更加厉害,有统计方法耗时功能,得到了加强。最后,动态代理等,这些比较高级的技术,以后写代码可能用不到,但是思想一定是必备的,掌握了就已经很OK了。一个明星,一开始想唱歌就唱歌、想跳舞就跳舞。原创 2024-10-18 15:41:38 · 1375 阅读 · 0 评论 -
Java高级:注解
就是Java代码里的特殊标记,比如:@Override、@Test等,作用是让其他程序根据注解信息来决定怎么执行该程序。由上图可知,注解本质就是一个继承了Annotation接口的接口。②特殊情况:如果注解中只有一个名叫value属性,使用注解时,value名称可以不写!注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上......学习注解的思路:1、充分认识注解 2、了解注解的应用场景。元注解:修饰注解的注解。2、什么是自定义注解?一、概述、自定义注解。原创 2024-10-16 23:35:22 · 185 阅读 · 0 评论 -
Java的基本数据类型、引用数据类型、包装类的介绍
可以获得额外的方法和功能,也解决了Java的集合框架只能存储对象(引用数据类型)而不能存储基本数据类型的问题。double(8字节,64位)short(2字节,16位)float(4字节,32位)long(8字节,64位)char(2字节,16位)将int这个基础数据类型,包装为Integer引用数据类型。byte(1字节,8位)int(4字节,32位)原创 2024-09-24 21:47:35 · 1021 阅读 · 0 评论