
Java
文章平均质量分 53
晚风Dai
这个作者很懒,什么都没留下…
展开
-
【Java集合】Iterator迭代器remove()的使用以及使用foreach循环遍历集合元素
1、 Iterator可以删除集合的元素,但是是遍历过程中通过迭代器对象的remove方 法,不是集合对象的remove方法。原创 2023-03-25 23:24:16 · 1964 阅读 · 0 评论 -
【Java集合】使用Iterator遍历Collection以及迭代器Iterator的执行原理
类似于“公 交车上的售票员” 、 “火车上的乘务员” 、 “空姐”。原创 2023-03-23 22:58:23 · 589 阅读 · 0 评论 -
【Java集合】Collection接口中的常用方法
Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法 既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。JDK不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set和List)实现。在 Java5 之前,Java 集合会丢失容器中所有对象的数据类型,把所有对象都 当成 Object 类型处理;从 JDK 5.0 增加了泛型以后,Java 集合可以记住容 器中对象的数据类型。原创 2023-03-21 21:56:41 · 1581 阅读 · 0 评论 -
【Java集合】Java框架与数组的概述对比以及涉及到的API
一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。>数组初始化以后,长度就确定了。>数组声明的类型,就决定了进行元素初始化时的类型>数组初始化以后,长度就不可变了,不便于扩展>数组中提供的属性和方法少,不便于进行添加、删除、插入等操作,且效率不高。同时无法直接获取存储元素的个数>数组存储的数据是有序的、可以重复的。原创 2023-03-18 15:40:03 · 574 阅读 · 0 评论 -
【Java注解】jdk8中注解的新特新
1.可重复注解2.类型注解。原创 2023-03-18 00:55:39 · 474 阅读 · 0 评论 -
【Java注释】如何自定义注解以及JDK中的元注解
JDK 的元 Annotation 用于修饰其他 Annotation 定义。原创 2023-03-16 21:55:26 · 637 阅读 · 0 评论 -
【Java注释】注释的理解以及常见的Annotation示例
在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。原创 2023-03-15 18:00:53 · 415 阅读 · 0 评论 -
【Java枚举类】使用enum关键词定义的枚举类实现接口
3.若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式,则可以让每个枚举值分别来实现该方法。2.若每个枚举值在调用实现的接口方法呈现相同的行为方式,则只要统一实现该方法即可。1.和普通 Java 类一样,枚举类可以实现一个或多个接口。如果我们希望每一个对象调用的show()展现不一样的内容。原创 2023-03-14 22:39:22 · 1900 阅读 · 0 评论 -
【Java枚举类】Enum类的主要方法
可以把一个字符串转为对应的枚举类对象。要求字符 串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。可以把一个字符串转为对应的枚举类对象。要求字符 串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。返回当前枚举类对象常量的名称。Enum类的方法如下图所示。原创 2023-03-12 13:43:48 · 1962 阅读 · 0 评论 -
【Java多线程】创建多线程的方式四:使用线程池
Executors.newScheduledThreadPool(n):创建一个线程池,它可安排在给定延迟后 运行命令或者定期地执行。Executors.newSingleThreadExecutor() :创建一个只有一个线程的线程池。Executors.newCachedThreadPool():创建一个可根据需要创建新线程的线程池。提前创建好多个线程,放入线程池中,使用时直接获取,使用完 放回池中。工具类、线程池的工厂类,用于创建并返回不同类型的线程池。原创 2023-02-07 00:18:59 · 379 阅读 · 0 评论 -
【Java多线程】创建多线程方式三:实现Callable接口
3.FutureTask 同时实现了Runnable, Future接口。它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值。1. 可以对具体Runnable、Callable任务的执行结果进行取消、查询是 否完成、获取结果等。2.FutrueTask是Futrue接口的唯一的实现类。实现Callable接口是JDK5.0新增线程创建方式。4.需要借助FutureTask类,比如获取返回结果。1.相比run()方法,可以有返回值。3. 支持泛型的返回值。原创 2023-02-06 23:16:40 · 930 阅读 · 0 评论 -
【Java多线程】Lock锁方式解决线程安全问题
1. Lock是显式锁(手动开启和关闭锁,别忘记关闭锁),synchronized是 隐式锁,出了作用域自动释放。3. 使用Lock锁,JVM将花费较少的时间来调度线程,性能更好。Lock -> 同步代码块(已经进入了方法体,分配了相应资源) -> 同步方法(在方法体之外)提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。2. Lock只有代码块锁,synchronized有代码块锁和方法锁。相同的并发性和 内存语义,在实现线程安全的控制中,比较常用的是。以上代码会出现重票,错票的情况。原创 2023-02-06 18:53:43 · 527 阅读 · 0 评论 -
【Java多线程】死锁问题
死锁的理解:不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。1.出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于 阻塞状态,无法继续。我们可以看到,程序既不报异常也不会终止。2.我们使用同步时,要避免出现死锁。可以再看下面这个例子理解一下。尽量减少同步资源的定义。原创 2023-02-05 21:08:58 · 445 阅读 · 0 评论 -
【Java多线程】使用同步方法解决线程安全问题
模仿以上方法套用到使用同步方法处理继承Thread类的方法中的线程安全问题中,在继承Thread类创建多线程的代码中将操作共享数据的代码完整的声明在一个方法。描述:如果操作共享数据的代码完整的声明在一个方法中,我们不妨将此方法同步的。同步监视器:t1,t2,t3。在show方法中有一个默认的同步监视器“this”在show方法中有一个默认的同步监视器“this”我们可以看到还是出现的错票,这是因为上文提到的。我们将操作共享数据的代码完整的声明在一个方法。我们可以把show方法改成静态的。原创 2023-02-05 16:28:53 · 464 阅读 · 0 评论 -
【Java多线程】同步代码块处理线程安全问题
假如你在上厕所,另一个人很急,冲进了你所在的厕所。这就出现了安全问题。我们可以看到还是有重票的。因为上文有描述到的。题:创建三个窗口卖票,总票数为100张。根据多次运行也并未发现错票跟重票。我们首先模仿上面的方法,运行测试;原创 2023-02-04 16:20:05 · 824 阅读 · 0 评论 -
【Java多线程】线程的安全问题
假如你在上厕所,另一个人很急,冲进了你所在的厕所。这就出现了安全问题。因为在此阻塞了,可能出现上文的极端状态。所以不管在哪里阻塞都会出现重票,错票。我们可以看到出现了“0”票。这样重票的概率就大了。原创 2023-02-03 15:30:38 · 459 阅读 · 0 评论 -
【Java多线程】创建多线程的方式二---实现Runnable接口(多窗口卖票)
在第四步中的运行过程:①启动线程 ②调用当前线程的run()-->调用了Runnable类型的target的run()。如果我们不用static修饰改这么写?这个时候引入了创建多线程的方式二---->实现Runnable接口。我们可以看到窗口1,2,3都卖了票号为100的票,这个时候就要讲到线程的安全问题。因为是三个窗口共卖100张所以我们在定义ticket时要用到static来修饰。如果我们再启动一个线程,遍历100以内的偶数。题:创建三个窗口卖票,总票数为100张。举例说明:遍历100以内的偶数。原创 2023-01-18 17:05:44 · 1274 阅读 · 0 评论 -
【Java多线程】线程的优先级
如果装的是1.8选的9则会报错。idea快捷键ctrl+alt+shift+s。我们看一下这个工程用的jdk。我们将分线程的优先级设置为。将主线程的优先级设置为。原创 2023-01-17 23:56:15 · 1673 阅读 · 0 评论 -
【Java多线程】线程的常用方法
9.sleep(long millis):使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。7.join():在线程a中调用线程b的join(),此时线程就进入阻塞状态,直到线程b完全执行完以后,线程a才结束阻塞状态。在线程a中调用线程b的join(),此时线程就进入阻塞状态,直到线程b完全执行完以后,线程a才结束阻塞状态。2.run():通常需要重写Thread类中的此方法,将创建的线程要执行的。4.getName():获取当前线程的名字。原创 2023-01-15 16:34:33 · 1028 阅读 · 2 评论 -
【Java多线程】继承方式练习
2.重写Thread类的run() --> 将此线程执行的操作声明在run()中。1.创建一个继承于Thread类的子类。3.创建Thread类的子类的对象。4.通过此对象调用start()我们可以使用最直接的办法,写两个类继承Thread类。原创 2023-01-11 17:01:33 · 107 阅读 · 0 评论 -
【Java多线程】创建多线程方式一
4. 一个线程对象只能调用一次start()方法启动,如果重复调用了,则将抛出以上 的异常“IllegalThreadStateException”。2. run()方法由JVM调用,什么时候调用,执行的过程控制都有操作系统的CPU调度决定。同时我们发现run()方法由JVM调用,什么时候调用,执行的过程控制都有操作系统的CPU。1. 如果自己手动调用run()方法,那么就只是普通方法,没有启动多线程模式。方法来完成操作的,经常 把run()方法的主体称为。创建线程并指定线程实例名。方法:启动线程,调用。原创 2023-01-10 17:09:11 · 513 阅读 · 0 评论 -
【Java异常】处理异常
3.一旦try中的异常对象匹配到某一个catch时,就会进入catch中进行异常处理一旦处理完成,就跳出当前的try—catch结构(在没有写finally的情况)继续执行其后的代码。4.catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面,否则报错。2.使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个异常类的对象根据此对象的类型,去catch中进行匹配。1.finally是可选的。原创 2022-12-20 22:28:46 · 404 阅读 · 0 评论 -
【JavaSE】家庭记账软件
4:public static char readConfirmSelection() :该方法从键盘读取‘Y’或’N’,并将其作为 方法的返回值。2:public static int readNumber() :该方法从键盘读取一个不超过4位长度的整数,并将 其作为方法的返回值。1.public static char readMenuSelection() :该方法读取键盘,如果用户键入’1’-’4’中的。•每次登记支出(菜单3)后,支出的金额应从基本金中扣除,并记。录本次支出明细,以便后续的查询。.原创 2022-08-08 16:46:45 · 142 阅读 · 0 评论 -
【JavaSE】当年第几天(流程控制)
从键盘分别输入年,月,日。判断这一天是当年的第几天。1,可以被四整除,但不能被100整除。原创 2022-07-18 16:32:15 · 130 阅读 · 0 评论 -
【JavaSE】彩票游戏(流程控制)
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金3000美元。3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1000美元。4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。1)如果用户输入的数匹配彩票的实际顺序,奖金10000美元。5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。......原创 2022-07-16 21:00:34 · 1020 阅读 · 2 评论 -
【JavaSE】基础语法练习----逢七跳过,不死神兔
规则是从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说过。这里我们直接在控制台打印出1-100之间的满足逢七必过规则的数据。有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?...原创 2022-07-15 14:23:28 · 912 阅读 · 0 评论 -
【JavaSE】基础语法练习---减肥计划(流程控制)
减肥计划if版:要求: 输入星期数,显示今天的减肥活动周一:跑步;周二:游泳;周三:慢走;周四:动感单车;周五:拳击;周六:爬山;周日:好好吃一顿。思路: 1:键盘录入一个星期数,用一个变量接收 2:对星期数进行判断,这里用 if 语句实现 3:在对应的语句控制中输出对应的减肥活动导包: 1:手动导包 import java.util.Scanner; 2:快捷键导包 Alt+Enter 3:自动导包代原创 2022-07-14 16:10:51 · 532 阅读 · 0 评论 -
【Java基础】包装类
Java 中有 8 个基本类型,分别对应的包装类如下:byte -- Byteboolean -- Booleanshort -- Shortchar -- Characterint -- Integerlong -- Longfloat -- Floatdouble -- Double 为什么要有包装类:基本数据类型方便、简单、高效,但泛型不支持、集合元素不支持不符合面向对象思维包装类提供很多方法,方便使用,如 Integer 类 toHexString(int i)、parseInt原创 2022-06-26 11:11:58 · 243 阅读 · 0 评论 -
【Java常用类】Math类与Random类
一:Math类Math类是一个工具类,主要用于完成复杂的数字运算,如绝对值,三角函数,指数运算等。由于其构造方法被定义成private,因此无法创建Math类的对象。Math类中所有的对象都是静态方法,可以直接通过类名来调用他们。除了静态方法外,Math类中还有两个静态变量PI和E,分别代表数学中的π和e。可以通过API文档来学习Math类的具体用法例:运行结果注:round()方法用于对某个小数进行四舍五入,此方法会将小数后面的数组全部忽略,返回一个int类型的数,而ceil()方法和floor()原创 2022-06-15 12:10:43 · 620 阅读 · 0 评论 -
【Java常用类】System类与Runtime类
一:System类System类提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类 调用即可。System类的常用方法如下:1.getProperties()方法:System类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在。接下来通过一个案例来演示getProperties()方法的使用:2:currentTimeMilliscurrentTimeMilli原创 2022-06-03 11:42:28 · 1065 阅读 · 0 评论 -
【Java常用类】String和StringBuffer类(下)
在Java中,由于String 类是final类型的,所以使用String定义的字符串是一个常量因此它且创建,其内容和长度是不可改变的。 如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串进行修改,在JDK中提供了一个StringBuffer类(也致字符串缓冲区)来操作字符串。StringBuffer 类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在其中添加或删除字符时,所操作的都是这个字符容器,因此并不会产生新的StringBu原创 2022-05-29 22:47:29 · 251 阅读 · 0 评论 -
【Java常用类】String和StringBuffer类(上)
String类的初始化:在操作String类之前需要对String类进行初始化。在Java中,可以通过以下两种方法对String类进行初始化,具体如下:1.使用字符字符串常量直接初始化一个String对象,其语法格式如下:String 变量名=字符串;...原创 2022-05-26 18:03:55 · 299 阅读 · 0 评论 -
【Java异常】自定义异常
自定义异常:使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需要继承Exception 类即可。在程序中使用自定义类,大体可分为以下几个步骤:1,创建自定义异常类。2,在方法中通过throw关键字抛出异常对象。3,如果在当前抛出异常的方法中方法处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明出处通过throws关键子指明要抛出给方法调用者的异常,继续进行下一步操作。4,在出现异常方法的调用者中捕获并原创 2022-05-12 16:08:12 · 1838 阅读 · 0 评论 -
【Java异常】捕获和抛出异常
抛出异常捕获异常异常处理五个关键字try .catch .finally .throw ,throws首先我们来写一个会报错的方法:package exception;public class Test { public static void main(String[] args) { int a = 1; int b = 0; System.out.println(a/b); }}我们应该如何捕捉这个异常呢?如下:package exce原创 2022-05-06 02:13:13 · 1747 阅读 · 0 评论 -
【Java异常】Error和Exception
什么是异常?实际工作中,遇到的情况不可能是非常完美的,比如:你写的某个模块,用户输入不一定符合你的要求。你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空等。我们的程序再跑着,内存或硬盘可能满了。等等。软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或许叫异常,怎么让我们写的程序作出合理的处理。而不至于系统崩溃。异常指程序运动中出现的不期而至的各种情况,如 :文件找不到,网页原创 2022-04-30 23:19:33 · 230 阅读 · 0 评论 -
【Java面向对象】N种内部类
内部类:内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类就是外部类了。1,成员内部类2,静态内部类3,局部内部类4,匿名内部类例:不建议这样玩;内部类可以访问外部类的私有方法 代码如下:package demo12;//外部类public class Outer { private int id = 10; public void out() { System.out.printl原创 2022-04-23 21:17:46 · 513 阅读 · 0 评论 -
【Java面向对象】接口的定义以及实现
接口:只有规范!自己无法写方法。专业的约束!约束和实现的分离:面向接口的编程普通类:只有具体实现抽象类:具体事项和规范(抽象方法)都有!接口:只有规范!接口就是规范,定义的是一组数规则,体现了现实世界中“如果你是...则必须能...”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。面向对象的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计 模型都只针对具备能力的语言(比如C#,C++,Java原创 2022-04-21 23:51:48 · 1092 阅读 · 0 评论 -
【Java面向对象】抽象类
abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。抽象类,不能使用new关键字来创建对象,它是用来让子类继承类抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类...原创 2022-04-19 21:12:35 · 571 阅读 · 0 评论 -
【Java面向对象】static关键词
static关键词静态变量---->类变量非静态的方法可以任意取调用静态里的东西静态方法只能调用静态的但不能调用普通方法的eg:代码如下:package demo09;public class Student { private static int age;//静态的变量 private double score;//非静态的变量 public static void main(String[] args) { Student s1 = new St原创 2022-04-17 21:35:24 · 373 阅读 · 0 评论 -
【Java面向对象】instanceof和类型转换
instanceof(类型转换)引用类型,判断一个对象是什么类型~原创 2022-04-15 23:42:25 · 263 阅读 · 0 评论