术语网络编程 是指编写跨多个设备(计算机)执行的程序,其中设备都通过网络相互连接。 J2SE API 的 java.net 包包含一组类和接口,这些类和接口提供低级通信细节,让您可以编写专注于解决手头问题的程序。 java.net 包提供了对两种常见网络协议的支持 - TCP − TCP 代表传输控制协议,它允许两个应用程序之间的可靠通信。 TCP 通常用于 Internet 协议,称为 TCP/IP。 UDP − UDP 代表用户数据报协议,这是一种无连接协议,允许在应用程序之间传输数据包。 本章很好地理解了以下两个主题 - 套接字编程 − 这是 Networki
Java 提供了一种机制,称为对象序列化,其中对象可以表示为字节序列,其中包括对象的数据以及有关对象类型和对象中存储的数据类型的信息。 序列化的对象写入文件后,可以从文件中读取并进行反序列化,即代表对象及其数据的类型信息和字节可用于在内存中重新创建对象。 最令人印象深刻的是整个过程是独立于 JVM 的,这意味着一个对象可以在一个平台上序列化并在完全不同的平台上反序列化。 类 ObjectInputStream 和 ObjectOutputStream 是包含序列化和反序列化对象方法的高级流。 ObjectOutputStream 类包含许多用于写入各种数据类型的写入方法,但其中一种方法
如果我们可以编写一个排序方法来对整数数组、字符串数组或任何支持排序的数组中的元素进行排序,那就太好了。 Java 通用 方法和泛型类使程序员能够分别通过单个方法声明指定一组相关方法,或通过单个类声明指定一组相关类型。 泛型还提供编译时类型安全,允许程序员在编译时捕获无效类型。 使用 Java Generic 的概念,我们可以编写一个用于对对象数组进行排序的泛型方法,然后使用 Integer 数组、Double 数组、String 数组等调用该泛型方法,对数组元素进行排序。 通用方法 您可以编写一个可以使用不同类型的参数调用的通用方法声明。根据传递给泛型方法的参数类型,编译器会适当地处理
在 Java 2 之前,Java 提供了诸如 Dictionary、Vector、Stack、 之类的 ad hoc 类 和属性 存储和操作对象组。尽管这些课程非常有用,但它们缺乏一个中心统一的主题。因此,您使用 Vector 的方式与使用 Properties 的方式不同。 集合框架旨在满足多个目标,例如 - 该框架必须是高性能的。基本集合(动态数组、链表、树和哈希表)的实现非常高效。 该框架必须允许不同类型的集合以相似的方式工作并具有高度的互操作性。 该框架必须轻松扩展和/或调整集合。 为此,整个集合框架是围绕一组标准接口设计的。 LinkedList、HashS
Java 实用程序包提供的数据结构非常强大,可以执行广泛的功能。这些数据结构由以下接口和类组成 - 枚举 位集 矢量 堆栈 字典 哈希表 属性 所有这些类现在都是遗留的,Java-2 引入了一个名为 Collections Framework 的新框架,将在下一章讨论。 - 枚举 Enumeration 接口本身不是数据结构,但它在其他数据结构的上下文中非常重要。 Enumeration 接口定义了一种从数据结构中检索连续元素的方法。 例如,Enumeration 定义了一个名为 nextElement 的方法,用于获取包含多个元素的数据结构中的下一个元素。 要了解有关此接口的更多
Java中使用包是为了防止命名冲突、控制访问、使类、接口、枚举和注释的搜索/定位和使用更容易等。 一个包 可以定义为一组相关类型(类、接口、枚举和注解),提供访问保护和命名空间管理。 Java 中的一些现有包是 - java.lang − 捆绑基础类 java.io − 输入、输出函数的类都捆绑在这个包中 程序员可以定义自己的包来捆绑类/接口组等。将您实现的相关类分组是一个很好的做法,以便程序员可以轻松确定类、接口、枚举和注释是相关的。 由于包创建了一个新的命名空间,因此不会与其他包中的名称发生任何名称冲突。使用包,更容易提供访问控制,也更容易定位相关类。 创建一个包
接口是 Java 中的引用类型。它类似于类。它是抽象方法的集合。一个类实现了一个接口,从而继承了接口的抽象方法。 除了抽象方法,接口还可以包含常量、默认方法、静态方法和嵌套类型。方法体只存在于默认方法和静态方法中。 编写接口类似于编写类。但是一个类描述了一个对象的属性和行为。接口包含类实现的行为。 除非实现接口的类是抽象类,否则接口的所有方法都需要在类中定义。 接口在以下方面类似于类 - 一个接口可以包含任意数量的方法。 一个接口写在一个带有 .java 的文件中 扩展名,接口名与文件名匹配。 接口的字节码出现在 .class 中 文件。 接口出现在包中,其对应
封装 是四个基本 OOP 概念之一。其他三个是继承、多态和抽象。 Java 中的封装是一种将数据(变量)和作用于数据(方法)的代码作为一个单元包装在一起的机制。在封装中,一个类的变量对其他类是隐藏的,只能通过其当前类的方法访问。因此也称为数据隐藏 . 在 Java 中实现封装 - 将类的变量声明为私有。 提供公共的setter和getter方法来修改和查看变量值。 示例 以下是演示如何在 Java 中实现封装的示例 - /* File name : EncapTest.java */ public class EncapTest { private String
根据字典,抽象 是处理想法而不是事件的质量。例如,当您考虑电子邮件的情况时,复杂的细节(例如您发送电子邮件后会发生什么),您的电子邮件服务器使用的协议对用户是隐藏的。因此,要发送电子邮件,您只需输入内容,提及收件人地址,然后单击发送即可。 同样在面向对象的编程中,抽象是一个向用户隐藏实现细节的过程,只有功能将提供给用户。换句话说,用户将获得关于对象做什么而不是它如何做的信息。 在Java中,抽象是通过抽象类和接口实现的。 抽象类 一个包含 abstract 的类 其声明中的关键字称为抽象类。 抽象类可能包含也可能不包含抽象方法 ,即没有主体的方法( public void get(
多态性是对象具有多种形式的能力。 OOP 中最常见的多态性使用发生在使用父类引用来引用子类对象时。 任何可以通过多个 IS-A 测试的 Java 对象都被认为是多态的。在 Java 中,所有 Java 对象都是多态的,因为任何对象都将通过其自身类型和 Object 类的 IS-A 测试。 重要的是要知道访问对象的唯一可能方法是通过引用变量。引用变量只能是一种类型。一旦声明,引用变量的类型就不能改变了。 引用变量可以重新分配给其他对象,前提是它没有声明为 final。引用变量的类型将决定它可以在对象上调用的方法。 引用变量可以引用其声明类型的任何对象或其声明类型的任何子类型。引用变量可以
在上一章中,我们讨论了超类和子类。如果一个类从它的超类继承了一个方法,那么如果它没有被标记为final,那么就有机会覆盖这个方法。 重写的好处是:能够定义特定于子类类型的行为,这意味着子类可以根据其要求实现父类方法。 在面向对象的术语中,覆盖意味着覆盖现有方法的功能。 示例 让我们看一个例子。 现场演示 class Animal { public void move() { System.out.println(Animals can move); } } class Dog extends Animal { public void move() {
继承可以定义为一个类获取另一个类的属性(方法和字段)的过程。通过使用继承,信息可以按层次顺序进行管理。 继承其他属性的类称为子类(派生类、子类),继承属性的类称为超类(基类、父类)。 扩展关键字 扩展 是用于继承类属性的关键字。下面是extends关键字的语法。 语法 class Super { ..... ..... } class Sub extends Super { ..... ..... } 示例代码 以下是演示 Java 继承的示例。在此示例中,您可以观察到两个类,即 Calculation 和 My_Calculation。 My_Calc
在本章中,我们将讨论 Java 的内部类。 嵌套类 在 Java 中,就像方法一样,一个类的变量也可以有另一个类作为其成员。在 Java 中允许在另一个类中编写一个类。里面写的类叫做嵌套类 ,而持有内部类的类称为外部类 . 语法 以下是编写嵌套类的语法。这里,类 Outer_Demo 是外部类和类 Inner_Demo 是嵌套类。 class Outer_Demo { class Inner_Demo { } } 嵌套类分为两种类型 - 非静态嵌套类 − 这些是类的非静态成员。 静态嵌套类 − 这些是类的静态成员。 内部类(非静态嵌套类) 内部类是
异常(或异常事件)是在程序执行期间出现的问题。当异常 发生程序的正常流程被打断,程序/应用程序异常终止,不推荐,所以要处理这些异常。 由于许多不同的原因,可能会发生异常。以下是一些发生异常的场景。 用户输入了无效数据。 找不到需要打开的文件。 通信过程中网络连接丢失或 JVM 内存不足。 其中一些异常是由用户错误引起的,另一些是由程序员错误引起的,还有一些是由以某种方式发生故障的物理资源引起的。 基于这些,我们将异常分为三类。您需要了解它们才能知道 Java 中的异常处理是如何工作的。 检查的异常 − 已检查异常是编译器在编译时检查(通知)的异常,这些也称为编
java.io 包几乎包含了您在 Java 中执行输入和输出 (I/O) 时可能需要的所有类。所有这些流代表一个输入源和一个输出目的地。 java.io包中的流支持原语、对象、本地化字符等多种数据。 流 流可以定义为数据序列。有两种 Streams - 输入流 − InputStream 用于从源中读取数据。 输出流 − OutputStream 用于将数据写入目的地。 Java 为与文件和网络相关的 I/O 提供了强大而灵活的支持,但本教程涵盖了与流和 I/O 相关的非常基本的功能。我们将一一看到最常用的示例 - 字节流 Java 字节流用于执行 8 位字节的输入和输
Java 方法是一组语句,它们组合在一起以执行操作。当您调用 System.out.println() 方法,例如,系统实际上执行了几条语句,以便在控制台上显示一条消息。 现在您将学习如何创建自己的带或不带返回值的方法,调用带或不带参数的方法,以及在程序设计中应用方法抽象。 制作方法 考虑以下示例来解释方法的语法 - 语法 public static int methodName(int a, int b) { // body } 在这里, 公共静态 − 修饰符 int − 返回类型 方法名 − 方法名称 a,b − 形参 int a,int
Java 提供了 java.util.regex 包,用于与正则表达式进行模式匹配。 Java 正则表达式与 Perl 编程语言非常相似,非常容易学习。 正则表达式是一个特殊的字符序列,它使用模式中的特殊语法帮助您匹配或查找其他字符串或字符串集。它们可用于搜索、编辑或操作文本和数据。 java.util.regex 包主要包含以下三个类 - 模式类 − 模式对象是正则表达式的编译表示。 Pattern 类不提供公共构造函数。要创建模式,您必须首先调用其中一个公共静态 compile() 方法,然后将返回一个 Pattern 对象。这些方法接受正则表达式作为第一个参数。 匹配器类
Java 提供 日期 java.util 中可用的类 package,这个类封装了当前的日期和时间。 Date 类支持两种构造函数,如下表所示。 Sr.No. 构造函数和描述 1 日期( ) 此构造函数使用当前日期和时间初始化对象。 2 日期(长毫秒) 此构造函数接受一个参数,该参数等于自 1970 年 1 月 1 日午夜以来经过的毫秒数。 以下是日期类的方法。 Sr.No. 方法和说明 1 boolean after(Date date) 如果调用的 Date 对象包含的日期晚于 date 指定的日期,则返回 true,否则返回 false。 2
Java 提供了一个数据结构,array ,它存储相同类型元素的固定大小的顺序集合。数组用于存储数据的集合,但通常将数组视为相同类型变量的集合更有用。 不用声明单独的变量,例如 number0、number1、...和 number99,而是声明一个数组变量,例如 numbers,并使用 numbers[0]、numbers[1] 和 ...、numbers[99] 来表示个别变量。 本教程介绍如何使用索引变量声明数组变量、创建数组和处理数组。 声明数组变量 要在程序中使用数组,您必须声明一个变量来引用该数组,并且您必须指定该变量可以引用的数组类型。这是声明数组变量的语法 - 语法
在 Java 编程中广泛使用的字符串是字符序列。在 Java 编程语言中,字符串被视为对象。 Java平台提供了String类来创建和操作字符串。 创建字符串 创建字符串最直接的方法是编写 - String greeting = Hello world!; 每当它在代码中遇到字符串文字时,编译器都会创建一个 String 对象,在这种情况下,它的值是“Hello world!”。 与任何其他对象一样,您可以使用 new 关键字和构造函数来创建 String 对象。 String 类有 11 个构造函数,允许您使用不同的来源(例如字符数组)提供字符串的初始值。 示例 现场演示 pu
java