自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Java学习博客

java、android教程

  • 博客(195)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java原创学习软件

本人搞java开发10几年了,很多童鞋想学习但是没有老师指导所以很难学会,所以本人做了这款软件,非常详细。软件下载地址https://www.wandoujia.com/mip/apps/hjk.javastudy。定期更新。...

2016-09-06 09:08:28 642

原创 Java入门第150课——线程同步与Socket

socket通常称作“套接字”,用于描述IP地址和端口是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。Socket和ServerSocket类位于javanet包中ServerSocket用于服务端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。

2023-05-16 11:27:30 209

原创 Java入门第149课——守护线程

测试守护线程,详细要求如下1)使用内部类创建线程的方式创建线程d,该线程实现每隔.1秒输出字符串“后台线程2)设置线程d为守护线程并启动该线程3)使main 线程阻塞5秒,然后输出字符串“main 线程结束了”

2023-05-16 10:55:25 216

原创 Java入门第148课——编写一个线程改变窗体的颜色V1

编写一个线程改变窗体的颜色,详细要求如下1)使用Runnable创建线程,该线程实现窗口的颜色在黑色和白色之间不断的切换2)使用内部类创建线程的方式,实现窗口的颜色在黑色和白色之间不断的切换.

2023-05-16 10:46:44 258

原创 Java入门第147课——多线程基础

进程是操作系统中运行的一个任务(一个应用程序运行在一个进程中)。知识讲解进程(process)是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程一个线程是进程的一个顺序执行流。

2023-05-12 10:52:57 105

原创 Java入门第146课——文件数据IO操作和异常处理

在JAVA语言出现以前,传统的异常处理方式多采用返回值来标识程序出现的异常情况,这种方式虽然为程序员所熟悉,但却有多个坏处。首先,一个API可以返回任意的返回值,而这些返回值本身并不能解释该返回值是否代表一个异常情况发生了和该异常的具体情况,需要调用API的程序自己判断并解释返回值的含义。其次,并没有一种机制来保证异常情况一定会得到处理,调用程序可以简单的忽略该返回值,需要调用API的程序员记住去检测返回值并处理异常情况。

2023-05-12 10:17:43 57

原创 Java入门第145课——存储Emp的序列化和反序列化

实现存储Emp的序列化和反序列化,详细要求如下:1)使用属性name、age、gender、salary为["张三",15,"男",4000]构造Emp类的对象。2)将第一步创建的Emp对象,序列化到文件emp.obj中。3)将第二步序列化到emp.obj中的Emp对象,反序列化出来并输出到控制台。

2023-05-11 14:54:34 139

原创 Java入门第144课——文件复制

使用FileOutputStream类和FileInputStream类实现文件复制,详细要求如下:1)使用FileOutputStream类的write(int)方法和FileInputStream类的read方法复制fos.dat文件为fos_copy1.dat文件。2)使用FileOutputStream类的write(byte[])和FileInputStream类的read(byte[])方法复制fos.dat文件为fos_copy2.dat文件。

2023-05-11 10:09:03 130

原创 Java入门第143课——构建FOS和FIS对象读写文件

使用FileOutputStream类的对象向文件写入数据

2023-05-06 17:55:20 195

原创 用AI画个女友

用AI画个女朋友

2023-05-06 14:44:13 817

原创 2023AI元年——让AI帮你打工赚钱

2023年,随着chatgpt的爆火,开启了AI元年,让普通人也可以借助AI这个工具实现财富自由的理想。例如,你可以通过chatgpt帮你生成一个营销文案,配合Stable diffusion生成插图,最后将文案和插图生成视频发布到短视频平台赚钱被动收入。

2023-05-04 20:23:53 370

原创 Java入门第142课——文件IO操作

Reader是字符输入流的父类Writer是字符输出流的父类字符流是以字符(char)为单位读写数据的。一次处理一个unicode字符流的底层仍然是基本的字节流。

2023-01-28 14:26:05 89

原创 Java入门第141课——基本IO操作

我们编写的程序除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的数据发送到外界。比如,我们编写的程序想读取一个文本文件,又或者我们想将程序中的某些数据写入到一个文件中。这时我们就要使用输入与输出。什么是输入:- 输入是一个从外界进入到程序的方向,通常我们需要“读取”外界的数据时,使用输入。所以输入是用来读取数据的。什么是输出:- 输出是一个从程序发送到外界的方向,通常我们需要“写出”数据到外界时,使用输出,所以输出是用来写出数据的。

2023-01-13 15:21:21 85

原创 Java入门第140课——文件指针的相关方法

首先,使用RandomAccessFile类的skipBytes方法跳过"Hello"这5个字节并查看此时的文件指针位置;然后,使用RandomAccessFile类的read(byte[])方法获取"World"并输出;从输出结果可以看出,当使用skipBytes方法跳过5个字节时,文件指针位置为5;读取完字符串"World"后,文件的指针位置为10。文件指针位置默认从0开始,即文件的第一个字节所在的位置。从输出结果可以看出,已经将指针移到了文件的开始。从输出结果可以看出,文件指针位置为0。

2023-01-13 11:20:42 235

原创 Java入门第139课——RandomAccessFile的read(byte[])和write(byte[])方法

然后,使用RandomAccessFile类的write(byte[])方法向文件raf.dat中写字符串"HelloWorld"。使用RandomAccessFile类的read(byte[])方法从文件raf.dat读取字符串"HelloWorld"。2)使用RandomAccessFile的read(byte[])方法从文件raf.dat中将字符串"HelloWorld"读取出来并打印到控制台。运行testWriteByteArray方法,将当前工程下的raf.dat文件的大小变为10个字节。

2023-01-12 16:38:10 528

原创 Java入门第138课——RandomAccessFile的read()和write()方法

然后,使用RandomAccessFile类的write方法向文件raf.dat写数字"1"。该方法写出一个字节,写出的是int值的低8位。使用RandomAccessFile类的read方法从文件raf.dat读取数字"1"。该方法读取一个字节,读取的是int值的低8位。1)使用RandomAccessFile的write方法向文件raf.dat写入数字“1”。运行testWrite方法,在当前工程下生成文件raf.dat,该文件的大小为1个字节。从输出结果可以看出,已经将数字“1”读取出来。

2023-01-12 16:20:13 901

原创 Java入门第137课——输出一个目录中的内容

首先,使用File类构建表示当前目录的file对象;然后,使用File类的listFiles方法获取到当前目录下所有的内容,包括文件和目录;上述代码中,"."表示的当前目录,本题案例的当前目录,就是当前工程下。实现此案例需要按照如下步骤进行。输出当前目录下所有的内容。

2023-01-12 15:41:45 106

原创 Java入门第136课——文件操作File和RandomAccessFile

Java提供了一个可以对文件随机访问的操作,访问包括读和写操作。该类名为RandomAccessFile。该类的读写是基于指针的操作。

2023-01-12 15:21:04 75

原创 Java入门第135课——删除一个目录

首先,使用File类构建测试表示当前工程下的demo目录的对象file;运行testDeleteDir方法,会发现demo文件夹不存在了。此处注意:demo文件夹要为一个空目录。实现此案例需要按照如下步骤进行。

2023-01-04 14:54:52 262

原创 Java入门第134课——创建一个多级目录

首先,使用File类构建表示当前工程下的多级目录a,b,c;运行testMkDirs方法,会发现工程下多了一个a文件夹,并且a文件夹下b文件夹,b文件夹下有c文件夹。在当前工程下,创建a目录,然后在a目录下创建b目录,最后在b目录下创建c目录。实现此案例需要按照如下步骤进行。

2023-01-04 14:49:36 2015

原创 Java入门第133课——创建一个目录

首先,使用File类构建表示当前工程下的myDir目录的对象file;运行testMkDir方法,会发现工程下多了一个myDir文件夹。实现此案例需要按照如下步骤进行。在当前工程下创建myDir目录。

2023-01-04 14:41:11 505

原创 Java入门第132课——删除一个文件

首先,使用File类构建表示当前工程下的demo文件夹下的Hello.txt文件的对象file;运行testDeleteFile方法,会发现在当前工程的demo文件夹Hello.txt文件已经不存在了。在上一案例中创建的Hello.txt文件删除。实现此案例需要按照如下步骤进行。

2023-01-04 14:36:32 664

原创 Java入门第131课——创建一个空文件

首先,使用File类构建表示当前工程下的demo文件夹下的Hello.txt文件的对象file;运行testCreateNewFile方法,会发现在当前工程的demo文件夹下多了一个文件Hello.txt。在上一案例的基础上,在demo文件夹下创建文件Hello.txt。实现此案例需要按照如下步骤进行。

2023-01-04 14:30:08 1278

原创 Java入门第130课——查看一个文件的大小

如果当前工程下并不存在demo文件夹,那就更没有HelloWorld.txt文件的存在了,因此占用字节长度为0。首先,使用File类构建表示当前工程下的demo文件夹下的HelloWorld.txt文件的对象file;查看当前工程下demo文件夹下HelloWorld.txt文件的大小。demo\HelloWorld.txt占用字节量:0。demo\HelloWorld.txt占用字节量:5。实现此案例需要按照如下步骤进行。

2023-01-04 14:19:31 799

原创 Java入门第129课——统计并遍历各点PM2.5最大值(要求排序)

上述代码中的LinkedHashMap是Map接口的哈希表和链表实现,具有可预知的迭代顺序。此实现与HashMap的不同之处在于,LinkedHashMap维护着一个双向循环链表。此链表定义了迭代顺序,该迭代顺序通常就是存放元素的顺序。首先,构建测试方法test4、test5;然后,复制test2的代码到test4中,复制test3的代码到test5中;在上一节课的基础上,按照放入map中的站点名的顺序遍历出来。实现此案例需要按照如下步骤进行。

2023-01-04 14:10:22 105

原创 Java入门第128课——遍历各点PM2.5最大值

在上一节课的基础上,分别使用迭代key的方式和迭代Entry的方式遍历集合map。实现此案例需要按照如下步骤进行。

2023-01-04 13:50:28 107

原创 Java入门第127课——hashCode方法的重写

这是因为,比较两个对象的时候,首先根据他们的hashCode去hash表中找它的对象,当两个对象的hashCode相同,也就是说着两个对象放在Hash表中的同一个key上,则他们一定在这个key上的链表上。其二、hashCode返回的数值应符合hash算法的要求,试想如果有很多对象的hashCode方法返回值都相同,则会大大降低hash表的效率,一般情况下可以使用IDE(如Eclipse)提供的工具自动生成hashCode方法。1)将没有重写hashCode方法的Emp类存入Map中,进行测试。

2023-01-04 11:48:58 618

原创 Java入门第126课——PM2.5监控程序

永乐店,285,秀水街,277,农展馆,348,东四,356,丰台花园,179,天坛,277,永乐店,368,古城,268,昌平镇,423,怀柔镇,267,定陵,377,前门,299,官园,406,通州,366,昌平镇,48,怀柔镇,306,定陵,231,前门,422,[农展馆,423,东四,378,丰台花园,406,天坛,322,海淀区万柳,398,首先,构建map对象,该map对象的key存储站点名,value存储对应的浓度。海淀区万柳,270,官园,268,通州,315]

2023-01-04 11:19:06 467

原创 Java入门第125课——文件操作File

File的createNewFile方法用于当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。- 需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。- 需要注意的是,若此File对象所表示的是一个目录时,在删除时需要保证此为空目录才可以成功删除(目录中不能含有任何子项)。如果指定的文件已经存在,则返回false。File的length方法用于返回此抽象路径名表示的文件的长度(占用的字节量)

2022-12-13 16:59:54 176

原创 Java入门第124课——Map和HashMap

其二、hashCode返回的数值应符合hash算法的要求,试想如果有很多对象的hashCode方法返回值相同,则会大大降低hash表的效率,一般情况下可以使用IDE(如Eclipse)提供的工具自动生成hashCode方法。将Key-Value对存入Map,如果在集合中已经包含该Key,则操作将替换该Key所对应的Value,返回值为该Key原来所对应的Value(如果没有则返回null)。在创建散列表时指定合理容量,减少rehash提高性能。"李四",new Emp(“李四",21,"女",6000)

2022-12-13 16:24:23 418

原创 Java入门第123课——Deque的用法

Deque是Queue的子接口,定义了所谓“双端队列”即从队列的两端分别可以入队(offer)和出队(poll),LinkedList实现了该接口。如果将Deque限制为只能从一端入队和出队,则可实现“栈”(Stack)的数据结构,对于栈而言,入栈称之为push,出栈称之为pop。3)从栈顶开始删除元素,直到栈中没有元素为止,并在删除的同时输出删除的栈顶元素。另外,从上述代码中可以看到使用了Deque接口提供的pop方法使栈顶元素出栈。从输出结果可以看出,已经将字符串"a"、"b"、"c"添加到栈中。

2022-12-13 15:55:30 1726

原创 Java入门第122课——Queue的用法

队列(Queue)是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式:只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素。3)从队首开始删除元素,直到队列中没有元素为止,并在删除的同时输出删除的队首元素。1)使用LinkedList构建队列,将字符串"a"、"b"、"c"放入队列中。另外,从上述代码中可以看到使用了Queue接口提供的poll方法删除队首元素。从输出结果可以看出,已经将字符串"a"、"b"、"c"添加到队列中。从输出结果可以看出,队首元素为a。

2022-12-13 15:32:52 512

原创 Java入门第121课——使用Comparator接口实现排序

最后,使用Collections类提供的sort方法,按照Cell对象的col值的大小升序排列cells集合中的对象。在使用sort方法时,该方法的第二个参数为Comparator接口类型,Comparator接口是比较器接口,实现该接口中的compare方法,给出对象的比较逻辑。使用Collections类提供的sort方法,按照Cell对象的col值的大小升序排列cells集合中的对象。2)分别构造行和列为(2,3)、(5,1)、(3,2)的Cell类对象,并将这三个对象加入到集合cells中。

2022-12-08 16:54:59 1081

原创 Java入门第120课——使用Collections.sort方法实现排序

1)首先,创建List接口的引用list,使该引用指向ArrayList的实例;首先,创建List接口的引用list,使该引用指向ArrayList的实例;1)创建List接口的引用list,使该引用指向ArrayList的实例;使用1作为随机数生成器的种子,生成10个0~100直接的随机数(包含0不包含100);将这10个随机数放入list集合中并输出集合元素。2)按照自然顺序对list集合中的元素进行升序排列并输出排序后的list集合。从运行结果可以看出,实现了对list集合中的元素从小到大的排序。

2022-12-08 16:30:40 1130

原创 Java入门第119课——数组转换为List

从输出结果可以看出,当前集合list的实际类型为java.util.Arrays&ArrayList,即为Arrays类的内部类ArrayList,而不是我们之前提到的List接口的实现类java.util.ArrayList。如果list的实际类型是ArrayList,那么应该允许添加操作,因此,要查看一下当前集合list的实际类型。从运行输出的结果可以看出,已经将数组strArr转换为list集合,集合的元素和数组的元素相同,都为[a,b,c]。首先,注释掉向集合list中插入元素"d"的代码;

2022-12-08 15:23:02 1616

原创 Java入门第118课——List转换为数组

首先,在TestList中新建测试方法testListToArray;然后,创建List接口的引用list,使该引用指向ArrayList的实例;首先,创建List接口的引用list,使该引用指向ArrayList的实例;1)创建List接口的引用list,使该引用指向ArrayList的实例;将字符串“a”、"b"、"c"放入集合list中。从运行结果看,已经将list转换为数组了,输出的结果为数组中的三个元素。2)将集合list转换为数组,并输出数组中的元素。实现此案例需要按照如下步骤进行。

2022-12-08 14:57:58 6720

原创 Java入门第117课——List的subList方法

使用List接口提供的subList方法获取子List,详细要求如下:1)创建List接口的引用list,使该引用指向ArrayList的实例;将0~9十个数字作为十个元素放入集合list中,并输出集合list。2)获取list集合的子集合subList,subList子集合的元素为【3,4,5,6,7】并输出子集合subList。3)将subList集合中的每一个元素扩大10倍,输出list集合和subList集合,验证subList获得的List集合和源List集合占用相同的数据空间。

2022-10-10 14:26:02 2550

原创 Java入门第116课——向List中插入和删除元素

List重载了带有索引位置参数的add方法,该方法将对象插入集合的指定索引位置(相当于前插,可以理解为对象插入集合后其索引为指定的参数)。List也重载了索引位置为参数的remove方法,该方法可以删掉指定索引位置的对象元素,其返回值为刚刚删掉的对象引用。1)创建List接口的引用list,使该引用指向ArrayList的实例,将字符串“java”、“c#"放入集合list中。从输出结果可以看出,已经将"cpp"插入到集合list中索引位置为1处。2)在索引位置为1处,插入字符串元素“cpp”。

2022-09-19 16:06:36 3341

原创 Java入门第115课——List的get方法和set方法

使用List的set方法和get方法设置和获取集合中的元素,详细要求如下:1)创建List接口的引用list,使该引用指向ArrayList的实例。2)将字符串"java"、"cpp"、"php"、"c#"、"objective-c"放入集合list中。3)使用List接口提供的get方法和size方法遍历集合list,并将每一个字符串元素转换成大写。4)将索引位置为1的元素替换为c++,并输出被替换掉的元素以及集合list。5)交换集合list中索引位置为1和索引位置为3的元素。

2022-08-22 17:36:52 4323 1

原创 Java入门第114课——使用增强型for循环遍历集合

使用foreach循环遍历集合中的元素,详细要求如下:1)使用HashSet构建集合c,将字符串"java"、"cpp"、"php"、"c#"、"objective-c"放入集合c中。2)使用foreach循环遍历集合中的每一个元素,并将每一个字符串元素转化为大写形式。

2022-08-22 14:30:33 815

飞机大战.zip

java飞机大战源码以及图片,非常详细,可以直接运行。

2019-05-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除