Java基础学习
文章平均质量分 69
Java基础学习记录
锂是真的铍
这个作者很懒,什么都没留下…
展开
-
Java学习记录(二十二)反射,动态代理
1、Class.forName(全类名)2、类名.class3、对象.getClass()原创 2024-03-16 17:08:47 · 759 阅读 · 0 评论 -
Java学习记录(二十一)网络编程
这两个架构是现在市面上主流的两个架构,CS架构主要是客户端+服务器,而BS架构主要是网页+服务器。BS架构的优点是方便,所有数据通过服务器传输,缺点也很明显,由于所有数据都是通过网络传输,导致BS架构里面的数据不能过多,否则则会导致用户由于网络问题出现卡顿的情况。而CS架构的优点就是将大量的基础信息例如音乐,图片放入客户端让用户下载到本地中,网络只传送一些数据,就会使用户在使用时不用考虑数据大小的问题,缺点就是需要将客户端下载到本地,不方便。原创 2024-03-16 11:12:57 · 887 阅读 · 0 评论 -
Java学习记录(二十)多线程(二)
Lock锁是一种可以自己开关的锁,与synchronized关键字的锁不一样的是,Lock锁能认为的开锁和关锁,而synchronized关键字在他修饰的代码块内开头自动关锁,结束自动开锁,这样不灵活。Lock是一个接口,所以不能创建他的实例化对象,只能创建他的实现类对象,且在继承Thread方法开启多线程的情况下,因为会创建多个线程对象,所以需要将方法里的锁设置为静态变量,这样的话,才能控制多个线程的锁共用,起到锁的效果,Lock的开关主要时通过lock和unlock方法实现,实例代码如下:下列代码实现锁原创 2024-03-15 16:18:42 · 793 阅读 · 0 评论 -
Java学习记录(十九)多线程(一)
线程是操作系统能进行调度的最小单位,他是被包含在进程中的,一个运行的软件可以看作为一个进程,而在该软件中执行的各种功能自身可以理解为一个线程,可以理解为在软件中互相独立又可以同时进行的功能,他是进程中实际的操作的单位。原创 2024-03-13 11:09:44 · 829 阅读 · 0 评论 -
Java学习笔记(十八)综合练习,Properties配置文件
需求:设计一个随机点名器,要求从一个文件中读取学生信息数据,例如:张三-男-23-1.0,其中通用格式为:姓名-性别-年龄-抽签的权重,要求在每次该学生被抽到后,将该学生的对应抽取几率减半,在每次抽取学生之后将学生信息重新存储到文件中。原创 2024-03-12 18:44:12 · 401 阅读 · 0 评论 -
Java学习记录(十七)IO流(三)
注意:一次序列化只能向文件写入一个对象,一次反序列化也只能从文件中读取一个对象。如果需要读取或写入多个对象的话,则需要多次使用序列化流和反序列化流。但是一般不会多次重复写入和读取对象,一般采用将需要序列化存入文件的对象用Arraylist集合存储起来,直接序列化这个集合,将集合里所有对象序列化存入到该文件中。同理,需要读取一个文件存储的对象使用反序列化时,我们一般采用Arraylist集合去接收这些对象,这样的话方便我们序列化和反序列化多个对象//用集合存储需要序列化的对象。原创 2024-03-11 20:27:59 · 945 阅读 · 0 评论 -
Java学习记录(十六):IO流(三)
缓冲流是一种高级流,可以理解为将基本流包装成了这种高级流,而这种高级流的特点就是将一个缓冲区放入到基本流当中,从而提高基本流的效率,但实际进行读写操作的还是基本流下面为缓冲字节输出流和缓冲字节输入流的应用,将a文件的数据拷贝到b文件中。原创 2024-03-11 14:33:00 · 788 阅读 · 0 评论 -
Java学习笔记(十五)IO流(二)
字符流其实就是字节流+字符集,他在遇到相关的数据时会转变为相关的字节,例如遇到英文就转变为一个字节,遇到中文转变为三个字节。原创 2024-03-11 09:47:23 · 428 阅读 · 0 评论 -
Java学习记录(十四):IO流(一)
该流可以将程序中的内容输出到本地文件中存储,具体有三个步骤。原创 2024-03-10 19:23:19 · 2058 阅读 · 1 评论 -
Java学习记录(十三)File类
File有三种创建方法,其根本都是将字符串传递给File类用来创建File类型的对象。原创 2024-03-10 15:09:27 · 316 阅读 · 1 评论 -
Java学习记录(十二)方法引用
在有时候我们重写一个接口里的抽象方法时,常用匿名内部类和lamda表达式的方法,其实还有一种方法就是方法引用,我们可以直接将Java本身自带的方法或者自己写的方法放入进去,从而替代用lamda表达式和匿名内部类对其抽象方法的重写例子:我想让一个数组按照从小到大的方式排列,就得重写Array.sort()里面的排序规则,这个时候我自己写一个类似的方法,再引用同样能实现上述要求,格式为:Arrays.sort(arr,Test1::subtraction);其中subtraction是我自己写的一个方法,原创 2024-03-09 19:28:25 · 349 阅读 · 0 评论 -
Java学习记录(十一)静态代码块和Stream流的使用
在今天小项目的书写中学习到了静态代码块的具体使用方法和构造方法的好处,在做项目时,常常一些在页面启动的时候我们就需要加载的东西,一般都放在构造方法里,构造方法会跟着我们new这个类的对象时自动的开始执行,但是这些全都是每一次new的时候创建的,有一些属性或者部分方法其实是固定的,每次都在创建对象时重新创建的话会太浪费资源了,例如在写斗地主游戏时,每次游戏开始前的所有牌一定是固定的,我们只需要将这些固定的牌经过洗牌,发牌,看牌就能玩一把开心的斗地主了,那么如何实现呢,这就得用到静态代码块的知识。原创 2024-03-09 16:17:52 · 925 阅读 · 0 评论 -
Java学习记录(十)
有时候在我们调用方法时,我们不能确定具体传入多少个数值,这个时候我们就能采用可变参数进行应用,格式为return 0;(注意,这是时候形参是会自动将输入的形参放入arg这个数组中,在方法的形参中只能写一个可变参数,如果有其他形参,可变参数得写在所有形参的最后面)这个时候,我们在调用该方法的时候就能输入自定义个数据,而这些数据就会存储到arg数组中,如果我们后面需要调用,我们直接将值从数组中取出进行使用。原创 2024-03-08 16:09:50 · 366 阅读 · 1 评论 -
Java学习记录(九)双列集合的学习
Map集合是一种双列集合,而他的存储对象是一个个的键值对例如:这样的形式是前面为键,后面为值,一个键对应自己的值。原创 2024-03-08 10:57:49 · 1802 阅读 · 1 评论 -
Java学习记录(八)单列集合
CollectionCollectioncollection是所有单列集合的父类接口,,他的功能是全部单列集合都能继承使用的使用方法,利用多态进行创建实现类对象Collection coll = new ArrayList();这时候coll就能使用Collection里的各种方法。原创 2024-03-06 10:29:52 · 566 阅读 · 1 评论 -
泛型的学习
在ArrayList的创建里,经常用泛型来创建对象,那么这个泛型的作用是什么呢起始可以将泛型理解为一种规范,在创建时只要满足这种规范的数据才能被加入ArrayList例如:这时候表示我这个集合里面只能被放入String类型的数据。原创 2024-03-06 16:53:14 · 881 阅读 · 1 评论 -
初级递归算法学习
/换句话说,在爬到16级楼梯时,他后面必须得爬后面的17,18,19级楼梯,所以爬到16级楼梯的时候,后面的爬楼梯方法应该被包含。//因为可以一次爬1,2,3级楼梯,所以在第16级时,他后面无论怎么爬,都是会与17级,18级,19级爬楼梯时的方法重复。//小明爬楼梯,一次爬1级,一次爬2级,一次爬3级,问爬20级楼梯有多少种爬法。小明爬楼梯,一次爬1级,一次爬2级,一次爬3级,问爬20级楼梯有多少种爬法。而他的递归结束条件就是第10天的时候,只剩了一个桃,问第一天吃了几个桃。2、递归时所使用的规律。原创 2024-03-05 21:30:56 · 453 阅读 · 1 评论 -
排序的学习(一)
冒泡排序是非常经典的排序方式,他的原理是从0索引开始,每两个相邻的数字进行比较,如果前一个数字比后面相邻的数字大,就将他们交换位置。例如{1,3,2,7,4}在第一次排序中,1跟3比较,因为3比1大,所以顺序不变,进行下一次比较第二次排序中,3跟2比较,因为3比2大,所以将3跟2的位置交换,进行下一次比较依次类推,在这一轮的最后一次比较中,最大的数字也就是7一定是在最后的而在7之前的数据就会重复的冒泡,也就是执行上诉排序。原创 2024-03-05 16:47:46 · 443 阅读 · 1 评论 -
Java学习记录(一)
System.out.println("第" + (i+1) + "个季度的营业额为:" + sum1);System.out.println("总营业额为:" + sum);//m表示这个二维数组里面能存储m个一维数组,n表示每个一维数组里面能存储n个元素。//二维数组格式 int[][] a = new int[m][n]以下为一个二维数组的练习,要求算出每个季度的营业额和全年的营业额。原创 2024-02-04 14:50:48 · 337 阅读 · 1 评论 -
Java学习记录(五)
在Java中,可以用一种类似于数组的容器进行存储数据,也就是集合,他与数组的不同是:集合的长度能随着数据的增加而增加,而数组的长度是开始就固定的;集合只能存储引用数据类型,如果要存储基本数据类型,一般要将其弄成包装类,而数组则是都能存储。如果要创建一个自己定义类的集合,也是如下:ArrayList<Students> list = new ArrayList<>();将< >里面改为类型对应的类型就能添加,ArrayList<Integer> list = new ArrayList<>();原创 2024-02-08 12:31:08 · 371 阅读 · 0 评论 -
查询学习(一)
1、先使用每段的最小最大值组成的范围来判断要查询的数字在哪一段,而每一段能用数组存储起来,使用时直接返回该段的数组索引,例如我需要查询20,即在上诉数组中将数字分为4段,20明显在第2段中,而在段数组成的数组中返回的索引就应该为1。2、在得到数字在数组中的段数后,即在该段的数组里,用遍历的方式得到该数字在整个数组也就是{27,22,30,40,36, 13,19,16,20, 7,10, 43,50,48}中的索引,从而实现查询数字的目的。原创 2024-03-05 15:03:29 · 347 阅读 · 1 评论 -
Java学习记录(四)
(注意:直接写str.replace(a,b),原字符串里的数据是不会改变的,要用一个新的字符串来接受替换的字符串)而在完成想要的操作以后,将StringBuilder创建的对象转换为String类型,用toString方法进行转换,在转换之后就能使用字符串相关的方法。(2)本例题为实现拼接操作,将一个int类型的数组通过字符串输出的形式,输出为[1,2,3,4,5,6]例如定义一个数组为:int[] a = {1,2,3,55,45},输出为[1,2,3,55,45]str.replace(a,b);原创 2024-02-07 14:09:04 · 830 阅读 · 1 评论 -
Java学习记录(二)
此时因为创建对象时输入的年龄不是20,没有触发this关键字,即this.age = age,所以打印出的年龄结果应该是0,因为在getAge方法里,return的age在没有使用this关键字的情况下,会自动选择离他近的成员变量age进行return,而在定义int类型的成员变量时,默认值为0,即在控制台年龄会输出为0.用private定义的成员变量无法在其他类中访问,但可以通过类似于下列setName和getName在创建对象时访问用private定义的成员变量。测试代码GirlFriendTest。原创 2024-02-05 13:06:27 · 354 阅读 · 0 评论 -
Java学习记录(七)
正则表达式可以用来判断一些字符串是否满足该正则表达式的内容,可以将正则表达式理解为一种规则,而可以用该规则来衡量一些字符串是否符合要求。在正则表达式应用中会有存在捕获分组的情况,就是在正则表达式后面可能会用到该表达式前面的子串,例如判断aaa123aaa类型,后面的aaa会用到前面的aaa,即用\\1。而在实际应用中,正则表达式大部分是用来爬虫,利用正则表达式可以筛选信息的特质,能爬取我们想要的信息,以下为本地爬取信息的代码。//贪婪爬取,使用+时,Java中会默认的多爬取更符合相关正则表达式的子串。原创 2024-03-04 18:45:39 · 334 阅读 · 1 评论 -
Calendar类相关的使用
add()方法能使具体的年,月,日等信息加上一个自己想要加上的值,例如我想将现在的年份也就是2024年加一年,具体用法为c.add(Calendar.YEAR,1);get()方法能得到具体的年,月,日等信息,例如想得到当前的年份,用Calendar.YEAR调用,返回一个int类型的数据,此时接受这个数据就是该对象的年份。set()方法能修改相关的年,月,日等信息,例如想将该对象里的年份修改为2024,即可以调用set方法,具体调用方法如下。此时,我们将计算机元年当作日期放入对象c中。原创 2024-03-05 09:12:23 · 343 阅读 · 1 评论 -
Java学习记录(三)
同样在比较字符串只比相同数据,不在意大小写的话,可以使用equalsignoreCase进行比较,例如在验证码输入的情况就能使用该方法进行比较。以下为一个模拟用户登录的一个例子,用户总共能登录三次,在登录三次错误以后提示退出重新登录,在登录错误或成功都有相应的提示。而使用equals比较时,则会直接比较字符串的值,要两字符串完全相同才会返回true。而在引用数据类型进行比较时例如字符串,这时候==比较的是地址值,而在字符串赋值中。在字符串的比较时,用equals进行比较,一般不用==进行比较。原创 2024-02-06 17:31:33 · 360 阅读 · 0 评论 -
Java学习记录(六)
上诉实现方法虽然可以,但是在这个接口我只需要调用一次的情况下,我还创建了一个类去implements这个接口,导致代码很冗杂。这种书写方法就是匿名内部类的写法,能极大的减少代码冗余问题。原创 2024-03-03 21:33:12 · 354 阅读 · 0 评论 -
Date类相关方法的应用
此时用到SimpleDateFormat类,可以将其看作一个工具,这个工具可以将类似于2002-11-11类型的字符串解析,在解析时先创建SimpleDateFormat对象,格式与时间字符串一致,之后将str字符串传入SimpleDateFormat的parse方法,结果会将此字符串用Date类型传出。下列为一个秒杀活动的例子,如果ordertime也就是下单时间在starttime(开始时间)和endtime(结束时间)之中的话,打印商品秒杀成功,否则就是商品秒杀失败。原创 2024-03-04 20:44:17 · 359 阅读 · 1 评论