Java URL 处理

描述

Java URL equals(E e) 方法根据以下条件比较当前 URL 对象与另一个对象是否相等 

  • 如果给定对象不是 URL,则返回 false。

  • 如果两个 URL 对象具有相同的协议,引用等效的主机、主机上的相同端口号以及相同的文件和文件片段,则它们相等。

  • 如果两个主机名可以解析为相同的 IP,则两个主机被视为等效地址。

  • 如果任一主机名无法解析,则主机名必须相同,不区分大小写。

  • 两个主机名都等于 null 则返回 true。

由于主机比较需要名称解析,因此该操作是阻塞操作。

声明

以下是java.net.URL.equals(Object obj)方法的声明

public boolean equals(Object obj) 

参数

obj - 要比较的 URL 对象。

返回值

如果对象相同则为 true;否则为 false。

异常

示例 1

以下示例显示 Java URL equals(Object e) 方法的用法。在此示例中,我们将创建 URL 和 URLConnection 类的实例。现在使用 equals 方法来比较这两个对象。由于是不同类型的对象,结果如预期为 false,并在输出中进行验证,如下所示 

package com.yxjc123;

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;

public class UrlDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.yxjc123.com/index.htm?language=en#j2se");
         URLConnection urlConnection = url.openConnection();
         System.out.println(url.equals(urlConnection));
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
} 

让我们编译并运行上面的程序,这将产生以下结果 

false 

示例 2

以下示例显示 Java URL equals(Object e) 方法的用法。在此示例中,我们创建两个具有相同 url 的 URL 类实例。现在使用 equals 方法来比较这两个对象。由于是基于相同 url 的对象,结果符合预期并在输出中进行验证,如下所示 

package com.yxjc123;

import java.io.IOException;
import java.net.URL;

public class UrlDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.yxjc123.com/index.htm?language=en#j2se");
         URL urlToCompare = new URL("https://www.yxjc123.com/index.htm?language=en#j2se");
         System.out.println(url.equals(urlToCompare));
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
} 

让我们编译并运行上面的程序,这将产生以下结果 

true 

示例 3

以下示例显示 Java URL equals(Object e) 方法的用法。在此示例中,我们创建两个具有相同 url 的 URL 类实例,在另一个实例中,我们还传递主机名和文件名。现在使用 equals 方法来比较这两个对象。由于对象现在不一样,结果与预期一致并在输出中得到验证,如下所示 -

package com.yxjc123;

import java.io.IOException;
import java.net.URL;

public class UrlDemo {
   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.yxjc123.com/index.htm?language=en#j2se");
         URL urlToCompare = new URL("https", "https://www.yxjc123.com/index.htm?language=en#j2se","index.htm" );
         System.out.println(url.equals(urlToCompare));
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
} 

让我们编译并运行上面的程序,这将产生以下结果 

false