
夏驰和徐策从零开始学JAVA
文章平均质量分 85
主要是对java学习做知识体系
夏驰和徐策
一个喜欢打游戏的计算机专业学生;这是我的GitHub:https://github.com/XiaChiandXuce
展开
-
7.8 Lanbda 表达式
Lambda表达式是JDK 8引入的一项功能,它使得Java代码变得更加简洁且具有表达力,特别是在集合的遍历和其他操作中。此外,JDK还提供了大量内置的函数式接口,使得使用Lambda表达式变得更为方便和高效。Lambda表达式不仅提高了代码的可读性和简洁性,还加快了开发过程,特别是在处理集合和数组等数据结构时。方法体如果是表达式,那么Lambda表达式的结果就是该表达式的结果;如果是一个语句块,语句块内的语句将被执行。在下面的Java程序中,我们将使用两种不同的Lambda表达式来对字符串数组进行排序。原创 2024-05-07 07:38:46 · 323 阅读 · 0 评论 -
7.7 常用工具类
在日常软件开发中,我们经常会遇到需要对容器或数组进行查找、排序、反转、甚至打乱等操作的情况。工具类中还有其他许多有用的方法,有兴趣的读者可以参考Java API文档进行进一步学习。这个工具类提供了一系列针对数组的静态方法,使数组操作更加便捷和高效。方法用于在已排序的数组中快速查找指定的元素。包中,提供了大量的静态方法,用于对集合中的元素进行操作,如排序、查找和修改等。类也提供了方法用于查找和替换集合中的元素,这些方法主要适用于。方法,可以快速对数组进行排序。输出的结果将是数组中索引1到4的元素,即。原创 2024-05-07 07:33:53 · 493 阅读 · 0 评论 -
7.6 Map接口
Map接口在Java中实现了键值对的存储结构,类似于数学中的函数概念,其中每个键(Key)映射到一个唯一的值(Value)。它不是传统意义上的集合,而是一种映射,其中每个键至多映射一个值。Map接口为Java集合框架提供了一种强大的数据结构,用于以键值对形式存储和管理数据。其实现类如HashMapTreeMap和提供了不同的性能特点和排序行为,以适应不同的开发需求。HashMap是Map接口的一个实现,它使用哈希表来存储映射关系。此实现提供了所有可选的映射操作,并允许使用null值和null键。原创 2024-05-06 21:45:43 · 750 阅读 · 2 评论 -
7.5 Set接口
Set接口是Java集合框架中的一个重要组成部分,它继承自Collection接口。Set接口的主要特点是它的元素是无序的,并且保证元素的唯一性,即不允许重复。这与List接口相比,List允许重复元素并且元素是有序的,形成了鲜明的对比。在Java中,是HashSet的一个子类,它结合了哈希表的快速访问特性和链表的顺序性。内部通过双向链表来维护元素的插入顺序,因此迭代访问时,元素的返回顺序与它们的插入顺序相同。TreeSet是Java集合框架中的一个实现Set。原创 2024-05-05 19:43:58 · 680 阅读 · 0 评论 -
7.4 集合遍历
Iterator 和 for-each 循环提供了在 Java 中遍历集合的强大工具。正确使用这些工具不仅可以提高代码的可读性和灵活性,还可以避免常见的并发修改错误。通过理解和正确应用这些集合遍历技术,开发者可以更有效地管理和使用数据集合。foreach 循环,又称为增强型 for 循环,通过简化的语法让开发者能够直接遍历数组或集合中的每个元素,而无需手动控制索引或迭代器。for (元素类型 临时变量 : 集合对象) {// 执行语句。原创 2024-05-05 19:32:19 · 666 阅读 · 0 评论 -
Java多线程&JUCDAY31-31-最大并行数
在Java并发编程中,确定应用程序的最大并行数是一个关键问题,它影响着资源的有效利用和程序的执行效率。最大并行数指的是系统能够同时执行的最大线程数。正确地设置最大并行数可以帮助避免资源浪费和系统过载。原创 2024-04-01 19:27:12 · 413 阅读 · 0 评论 -
Java多线程&JUCDAY31-29-线程池
线程池是执行异步任务的一个常见并且强大的工具,它通过重用一组现有线程来执行任务,从而提高了程序的性能,并减少了线程创建和销毁的开销。在Java中,通过包中的Executor框架,特别是接口和其实现类,可以方便地创建和管理线程池。原创 2024-04-01 19:24:21 · 668 阅读 · 0 评论 -
Java多线程&JUCDAY31-22-多线程的六种状态
Java中的线程在其生命周期内可以处于不同的状态。类的State枚举定义了线程可能的六种状态。理解这些状态及其转换对于编写并发程序是非常重要的。原创 2024-04-01 19:18:39 · 379 阅读 · 0 评论 -
Java多线程&JUCDAY31-21-阻塞队列实现唤醒机制
是一个接口,Java的并发包提供了多个实现,如等。阻塞队列的核心特性是在尝试添加元素到满队列或从空队列取元素时,线程会被阻塞,直到队列不满或不空。原创 2024-04-01 19:12:13 · 480 阅读 · 0 评论 -
Java多线程&JUCDAY31-20-等待唤醒机制(生产者代码实现)
在Java的多线程编程中,等待/唤醒机制是协调生产者和消费者之间交互的核心。本篇博客将重点介绍如何在Java中实现生产者部分的代码,确保生产者在合适的条件下生产数据,并适时唤醒等待的消费者线程。原创 2024-04-01 19:06:34 · 404 阅读 · 0 评论 -
Java多线程&JUCDAY31-19-等待唤醒机制(消费者代码实现)
在多线程编程中,等待/唤醒机制是协调生产者和消费者之间交互的一种重要方式。本篇重点讨论如何在Java中实现消费者部分的代码,以及如何确保消费者线程在合适的时机被唤醒进行工作。原创 2024-04-01 19:01:50 · 564 阅读 · 0 评论 -
Java多线程&JUCDAY31-18-等待唤醒机制的思路分析
在Java多线程编程中,等待/唤醒机制是一种重要的线程间通信方式,它允许一个线程在某个条件不满足时挂起(等待),直到另一个线程改变了这个条件并显式地唤醒它。这一机制主要通过Object类中的wait()notify()和方法实现,以及在Java并发包中通过Condition接口提供的更加灵活的方式实现。原创 2024-04-01 17:20:10 · 417 阅读 · 0 评论 -
Java进阶DAY31-17: 死锁
在多线程编程中,死锁是一个经典问题,它发生在两个或多个线程永久地阻塞彼此,等待对方释放锁,但这些锁永远不会被释放。死锁问题不仅会导致程序部分或全部停止响应,还很难调试和修复,因此理解其原因和如何避免是非常重要的。原创 2024-04-01 17:16:29 · 298 阅读 · 0 评论 -
Java进阶DAY31-16: Lock锁
在Java的并发编程中,接口提供了比传统的方法和语句更复杂的锁定操作。它们允许更灵活的结构,可以拥有不同的属性(如可重入性、公平性)。Lock接口的实现提供了用于多线程访问共享资源的锁定控制,使得数据的访问更加安全。原创 2024-04-01 17:09:51 · 416 阅读 · 0 评论 -
Java进阶DAY31-15: 同步方法
在Java多线程编程中,同步方法是实现线程安全的一个重要机制。通过使用关键字修饰一个方法,可以确保在同一时间内只有一个线程可以执行该方法内的代码块。这对于操作共享资源或执行需要串行化的操作至关重要。原创 2024-04-01 17:06:37 · 434 阅读 · 0 评论 -
Java进阶DAY31-14-同步代码块的两个小细节
在使用Java的同步代码块时,有两个细节需要特别注意:监视器对象的选择和同步代码块的范围。理解这两个细节对于编写高效且线程安全的并发程序至关重要。原创 2024-04-01 17:02:24 · 285 阅读 · 0 评论 -
Java进阶DAY31-13: 同步代码块
在Java多线程编程中,同步代码块是一种基础且强大的机制,用于控制对共享资源的并发访问,从而确保线程安全。通过使用关键字来标记代码块,开发者可以避免多个线程同时执行这些代码块,这对于修改共享资源或执行需要按顺序进行的操作至关重要。原创 2024-04-01 16:58:05 · 700 阅读 · 0 评论 -
Java进阶DAY31-12-线程的安全问题
线程安全问题主要指当多个线程访问某个类的实例时,不用考虑运行时环境,调用者还是可以预见这个类行为的情况。如果一个类在多个线程访问时,能够表现出正确的行为,那么就称这个类是线程安全的。原创 2024-04-01 16:51:12 · 365 阅读 · 0 评论 -
Java进阶DAY31-11-线程的生命周期
线程的生命周期是理解多线程编程中最基本也是最关键的概念之一。在Java中,线程(Thread)的生命周期由创建、启动、运行、阻塞(等待、同步和其他状态)、死亡等几个关键状态构成。理解这些状态及其转换是编写高效、可靠并发程序的基础。原创 2024-04-01 16:45:47 · 424 阅读 · 0 评论 -
Java进阶DAY31-10-插入线程
join()方法允许一个线程等待另一个线程完成。如果线程A执行了线程B的join()方法,那么线程A将会被阻塞,直到线程B完成执行,线程A才能继续执行。原创 2024-04-01 16:34:15 · 479 阅读 · 0 评论 -
Java进阶DAY31-09-礼让线程
在Java的多线程编程中,"礼让"线程意味着当前正在执行的线程主动让出处理器资源,给其他线程执行机会。这是一种高级的线程管理方式,通过方法实现。理解和合理使用线程礼让机制,可以优化应用程序的响应性和效率。原创 2024-04-01 16:33:06 · 454 阅读 · 0 评论 -
Java进阶DAY31-08-守护线程
守护线程在概念上旨在服务于程序中的其他线程。其最大的特点是:一旦所有非守护线程(即用户线程)结束,程序将停止运行,不会等待守护线程完成。一个常见的守护线程例子是垃圾回收线程。原创 2024-04-01 16:26:42 · 394 阅读 · 0 评论 -
Java进阶DAY31-07-线程的优先级
在多线程编程中,线程调度器根据线程的优先级决定调度哪个线程执行。在Java中,每个线程都有其优先级,范围从1到10,其中1代表最低优先级,而10代表最高优先级。默认情况下,每个线程继承其父线程的优先级。Java线程的优先级通过Thread类中的优先级常量和方法进行管理。原创 2024-04-01 15:53:31 · 898 阅读 · 0 评论 -
Java进阶DAY31-06-多线程中常用的成员方法
在Java的多线程编程中,理解并掌握各种线程操作的成员方法是非常重要的。这些方法帮助我们控制和管理线程的执行流程。本节将介绍一些在多线程编程中常用的成员方法。通过这些基本的线程操作方法,我们可以更好地管理和控制线程的执行,实现复杂的并发程序。在使用这些方法时,要注意异常处理和线程安全问题,确保程序的健壮性和稳定性。原创 2024-04-01 15:14:59 · 632 阅读 · 0 评论 -
Java面向对象进阶DAY13-06-子类到底能继承父类中的哪些内容
Java中的继承机制提供了一种强大的方式来复用和扩展现有代码。子类可以继承父类的大部分成员,除了私有成员、构造方法和其他类特定的静态成员。通过合理利用继承,开发者可以构建出结构清晰、易于维护和扩展的应用程序。原创 2024-03-18 16:27:19 · 570 阅读 · 0 评论 -
Java面向对象DAY08-04-就近原则和this关键字
就近原则是Java变量作用域的一个基本规则,它确定了变量查找的顺序。this关键字是一个强大的工具,它允许我们在类内部引用当前对象的成员,解决变量命名冲突,以及在构造器中实现重载。理解和正确使用就近原则和this关键字,对于编写清晰、高效的Java代码至关重要。原创 2024-03-18 16:17:40 · 456 阅读 · 0 评论 -
Java进阶DAY27-01-异常体系介绍
Java的异常体系是基于类构建的,它是所有错误和异常的超类。ThrowableError和Exception,它们分别代表了不同类型的异常情况。除了使用Java提供的标准异常类外,我们还可以根据需要创建自定义异常。自定义异常类通常是Exception类的子类。原创 2024-03-18 15:00:03 · 479 阅读 · 0 评论 -
Java进阶DAY31-05-多线程的第三种实现方式利用Callable接口和Future接口实现
在Java中,最初的两种多线程实现方式分别是继承Thread类和实现Runnable接口。这两种方式都有其局限性,主要是无法直接返回执行结果。Java 5引入了Callable接口和Future接口,提供了一种更灵活的方式来处理并发编程,允许任务在执行完成后返回结果。要使用Callable,首先需要定义一个实现了Callable接口的类,指定其泛型参数为返回值的类型,然后实现call()方法。@Override// 执行任务,并返回结果return 123;原创 2024-03-18 14:47:59 · 427 阅读 · 0 评论 -
Java进阶DAY26-01-初爽Stream流
Stream流是Java 8中引入的一个强大的API,它以一种声明式的方式让集合操作变得更加简洁和灵活。通过本篇的介绍,希望你能对Stream流有一个初步的了解,并在实际开发中能够运用起来。Stream流的学习是一个循序渐进的过程,今天我们只是初探了Stream流,后续还有更多强大功能等着我们去发现和学习。原创 2024-03-17 20:40:24 · 415 阅读 · 0 评论 -
Java进阶DAY31-04-多线程的第二种实现方式Runnable接口的方式进行实现
Runnable接口是Java中定义的一个接口,它仅包含一个无参数的run方法。这个run方法提供了一个执行线程的入口点。实现Runnable接口并实现这个方法即可定义一个可以执行的任务。首先,定义一个实现了Runnable接口的类,并实现其run方法。@Override// 在这里定义线程需要执行的任务System.out.println("线程执行中...");通过实现Runnable接口的方式创建线程,是Java多线程编程中非常重要的一种方式。原创 2024-03-17 20:28:09 · 460 阅读 · 0 评论 -
Java进阶DAY31-03-多线程的第一种是实现方式
在深入讨论之前,我们首先需要了解什么是线程。线程是程序执行流的最小单元,它是进程的一个执行路径。在多线程环境中,CPU可以在多个线程间切换,使得看起来多个线程是在“同时”执行,特别是在多核处理器上,这种并行执行可以大大提升程序性能。首先,定义一个类继承自Thread类,并重写run()方法。@Override// 线程执行任务的代码。原创 2024-03-17 19:28:27 · 402 阅读 · 0 评论 -
Java进阶DAY31-02-并行与并发
换句话说,并发关注的是多个任务如何交替执行,以给人一种"同时"执行的错觉。并发不是真正意义上的"同时"执行,而是任务在不同的时间点上启动,中断或继续执行。通过理解它们的概念和区别,以及如何在Java中实现它们,可以更好地设计和开发高效的软件系统。在现代多核处理器的支持下,合理地使用并行和并发技术,可以显著提高程序的执行效率和响应速度。本文将深入探讨并行与并发的概念、它们之间的区别,以及如何在Java中实现并行和并发编程。并发关注任务的交替执行,而并行关注的是真正的同时执行。线程是实现并发的基本单位。原创 2024-03-17 18:42:51 · 974 阅读 · 0 评论 -
Java进阶DAY23-01-泛型类、泛型方法、泛型接口
在Java的世界里,泛型是一个不可或缺的特性,它为我们在编程过程中提供了更强的类型检查机制,并且消除了代码中的许多重复。泛型的引入使得代码更加通用、可重用,并且能够在编译时就捕捉到类型错误。今天,我们将深入探索Java中的三个核心泛型概念:泛型类、泛型方法以及泛型接口。原创 2024-03-14 21:17:29 · 421 阅读 · 0 评论 -
Java进阶DAY31-01-什么是多线程
多线程是现代编程中不可或缺的一部分,特别是在开发需要高性能和高响应性的应用程序时。Java提供的多线程机制强大而灵活,能够帮助开发者有效地管理和控制线程的行为。然而,正确使用多线程也需要对线程同步、死锁等潜在问题有深入的理解。在未来的博客中,我们将继续深入探讨如何在Java中高效地使用多线程,以及如何解决多线程编程中的常见问题。欢迎大家继续关注和学习。原创 2024-03-14 20:09:40 · 492 阅读 · 0 评论 -
Java入门DAY01-03-打开CMD
恭喜你!你已经成功地使用CMD编译并运行了你的第一个Java程序。通过掌握如何在CMD中操作,你已经迈出了成为Java开发者的重要一步。虽然今后你可能会使用更高级的工具来编写和运行Java程序,但了解基础总是非常重要的。继续前进,Java的世界等着你去探索。希望这篇博客能够帮助你顺利开始你的Java学习之旅。记住,每位伟大的程序员都是从简单的“Hello, World!”开始的。不要害怕面对挑战,持续学习,你将能够解锁更多编程的奥秘。原创 2024-03-13 12:04:15 · 523 阅读 · 0 评论 -
Java入门Day01-02人机交互-图形化界面
从命令行界面到图形用户界面的转变是计算机科技发展中的一大飞跃。它不仅使得计算机更加易用,也极大地扩展了计算机的应用范围和受众。施乐PARC的先驱工作、苹果公司的创新设计以及微软Windows的普及共同推动了GUI的发展,开启了计算机交互的新纪元。今天,GUI已经成为我们与计算机交互不可或缺的一部分,而其背后的历史则提醒我们技术创新的重要性和影响。希望这篇博客能帮助你更好地理解计算机用户界面的演进历程,以及其中的关键转折点。原创 2024-03-13 11:40:16 · 478 阅读 · 0 评论 -
Java-01-Java学习介绍
Java的学习之路充满了挑战和机遇。本文仅仅是你Java学习旅程的起点。在接下来的系列中,我们将深入探讨Java的核心概念,包括变量、数据类型、控制流、数组、方法以及面向对象编程的基础。坚持不懈,你将能够掌握Java,并用它来构建强大的应用程序。祝你在Java学习之路上一帆风顺!原创 2024-03-13 11:15:13 · 390 阅读 · 0 评论 -
13.3 UDP通信
UDP通信了解UDP协议的无连接特性和适用场景。理解UDP相较于TCP的优势和不足。DatagramPacket类掌握如何创建和使用DatagramPacket来封装数据。理解不同构造函数的使用场景和参数意义。DatagramSocket类了解如何创建和使用DatagramSocket来发送和接收DatagramPackets。掌握如何设置超时和关闭连接。多线程UDP程序理解如何使用多线程技术提升UDP程序的并发处理能力。掌握如何实现和管理多线程,特别是在发送端和接收端。原创 2024-01-01 11:35:36 · 1155 阅读 · 0 评论 -
13.2 TCP通信
同时,建议通过实际编写和运行示例代码来加深理解,因为网络编程涉及的很多概念和问题在实际操作中更容易被理解和发现。ServerSocket类是Java网络编程中不可或缺的一部分,理解其构造方法和常用方法对于建立稳定可靠的服务器应用程序至关重要。首先概述TCP通信的重要性及其在网络编程中的作用。简要回顾13.1.2节介绍的TCP及TCP连接的交互过程,并引入主要内容:利用Java的JDK实现程序中的TCP通信。Socket类是实现网络通信的基石,理解其构造方法和常用操作对于创建稳定有效的客户端应用至关重要。原创 2024-01-01 10:54:22 · 418 阅读 · 0 评论 -
13.1 网络基础
学习目标:理解TCP/IP网络模型的四个层次。区分UDP和TCP的特点。掌握IP地址和端口号的作用。学会使用InetAddress类。使用ServerSocket和Socket编写多线程TCP通信程序。使用DatagramPacket和DatagramSocket编写多线程UDP通信程序。原创 2023-12-25 10:05:30 · 986 阅读 · 0 评论