Java API类与接口:常用的包和方法以及try-catch用法

文章目录

    • Java API 介绍
    • 常用的package
    • Object类概述及作用
      • 常用的方法
        • `toString()`方法:
        • 重写toString方法
        • `equals(Object obj)`方法:
        • 引用类型和基本数据类型
        • =与equals的区别
        • 重写equals方法
    • try-catch的用法

Java API 介绍

Java API(Application Programming Interface)是一组预先定义好的类和接口,帮助开发者快速开 发应用程序。 这些类和接口提供了各种功能,如文件操作、网络通信、图形用户界面等。Java API是Java平台的核心组成部 分之一,它帮助开发者快速高效地开发出高质量的应用程序。

常用的package

  • java.lang:包含了一些基础类,如Object、String、System等。

  • java.util:提供了许多实用工具类,如集合框架(List、Set、Map)、日期/时间处理等。

  • javafx:用于创建富客户端应用程序的图形用户界面(GUI)。

  • java.io:提供了一系列处理输入输出的类,支持文件读写等操作。

  • java.net:用于实现网络应用,支持TCP/IP协议等。

Object类概述及作用

Object类是所有其他类的直接或间接父类。在Java中,任何类如果没有显式地继承其他类,那么它将默认继承Object类。

Object类提供了一些基本的功能,如对象的比较、字符串表示形式的获取等,这些功能对于所有对象都是通用 的。

常用的方法

toString()方法:

toString方法用于返回对象的字符串表示形式。这对于调试和日志记录非常有用,因为它可以帮助我们快速查 看对象的状态。

默认情况下,Object类的toString方法返回一个字符串,格式为:

ClassName@hashCode
Person@1b6d3586
重写toString方法

为了使对象的字符串表示形式更具可读性和意义,我们通常会重写toString方法。重写时,可以根据对象的属性来构造一个有意义的字符串。

public class Person {private String name;private int age;
@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' + ", age=" + age + '}';}}
 public static void main(String[] args) {Person person1 = new Person("Alice", 30);Person person2 = new Person("Bob", 25);//打印对象
System.out.println(person1);  
System.out.println(person2);  
//输出: Person{name='Alice', age=30}
//输出: Person{name='Bob', age=25}//使用System.out.println时,会自动调用对象的toString方法
System.out.println("Person1: " + person1);System.out.println("Person2: " + person2);}
equals(Object obj)方法:

判断两个对象是否相等,默认情况下比较的是对象的引用(即是否是同一个对象)

默认情况下,equals方法的行为类似于,即比较对象的引用。为了根据对象的内容进行比较,我们需要重写equals方法。

引用类型和基本数据类型

基本数据类型:Java中有8种基本数据类型,分别是byte、short、int、long、float、double、 char和boolean。这些类型的变量直接存储数值。

引用类型:引用类型包括类、接口、数组等。引用类型的变量存储的是对象的引用(即内存地址),而不是 对象本身。

=与equals的区别

=:用于比较两个变量的值是否相同。如果两边都是基本数据类型,则比较它们的值;如果是引用类型, 则比较它们的地址(即是否指向同一个对象)。

equals():是一个方法,通常用于比较两个对象的内容是否相同。 默认情况下,equals()的行为类似于,但很多类(如String、List等)都重写了这个方法,使其能够根据对象的实际内容进行比较。

//基本数据类型
int a = 10;
int b = 10;System.out.println("a = b: " + (a = b));  //输出: true//引用类型
Person person1 = new Person("Alice", 30);
Person person2 = new Person("Alice", 30);
Person person3 = person1;
System.out.println("person1 = person2: " + (person1 = person2)); //输出:false
System.out.println("person1 = person3: " + (person1 = person3)); //输出:true//改变引用类型
person3.setName("Bob");
System.out.println("person1: " + person1); //输出: Person{name='Bob', age=30}
System.out.println("person3: " + person3); //输出: Person{name='Bob', age=30}//基本数据类型不会改变
int c = a;
c = 20;
System.out.println("a: " + a); //输出: 10
System.out.println("c: " + c); //输出: 20
重写equals方法

在重写equals方法时,可能会遇到类型不匹配的情况。使用try-catch可以捕获并处理这些异常。

public class Person {
private String name;
private int age;
//重写equals方法
@Override
public boolean equals(Object obj) {
Person person = (Person) obj;
return age = person.age && name.equals(person.name); //比较姓名和年龄
}
}
public static void main(String[] args) {
Person person1 = new Person("Alice", 30);
Person person2 = new Person("Alice", 30);
Person person3 = new Person("Bob", 25);
String str = "Alice";
//比较对象
System.out.println("person1 equals person2: " + person1.equals(person2));
//输出: true
System.out.println("person1 equals person3: " + person1.equals(person3));
//输出: false
System.out.println("person1 equals str: " + person1.equals(str)); //输出:
类型转换错误: ...
}

try-catch的用法

try-catch 语句用于捕获和处理程序运行过程中可能出现的异常。通过使用 try-catch ,我们可以避免程序因为异常而崩溃,并能够优雅地处理这些异常。

try {
//可能会抛出异常的代码
} catch (Exception e) {
//处理异常的代码
}java
public class Employee {
private int id;
private String name;
@Override
public boolean equals(Object obj) {
try {
Employee e = (Employee) obj;
return age = e.age && name.equals(e.name); //比较姓名和年龄
} catch (ClassCastException e) {
System.out.println("出现错误: " + e.getMessage());
return false;
}
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/12960.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 关于基于范围的for循环(C++11) 语法 详解

范围for的语法 在 C98 中如果要遍历一个数组 void TestFor() { int array[] { 1, 2, 3, 4, 5 }; for (int i 0; i < sizeof(array) / sizeof(array[0]); i)array[i] * 2; for (int* p array; p < array sizeof(array)/ sizeof(array[0]); p)cout << *p <<…

【入门篇】判断推理是否有效的实例2——多语言版

跳转原题&#xff1a;判断推理是否有效的实例2 问题分析 根据题目给出的推理逻辑&#xff0c;我们有以下几个条件&#xff1a; 如果张老师来了&#xff08;(P)&#xff09;&#xff0c;问题可以解答&#xff08;(R)&#xff09;&#xff1a;(P \rightarrow R)如果李老师来了&…

5GAP模型:探寻服务质量问题的产生源头

| 91%的消费者表示&#xff0c;他们更有可能在获得卓越的服务体验后再次购买——Salesforce Research 一、什么是5GAP模型&#xff1f; 5GAP模型&#xff0c;指的是服务质量差距模型&#xff08;Service Quality Model&#xff09;&#xff0c;它是由美国营销学家帕拉休拉曼、…

期刊论文查重率多少,才会不被认定为学术不端?

Q问&#xff1a;论文查重和学术不端具有紧密的相关性&#xff0c;但是被认定为学术不端的查重率的界限是什么&#xff1f; A答&#xff1a;关于论文和查重&#xff0c;虽然这两者之间有着“说不清也道不明”的关系&#xff0c;这其中很重要的一个原因是很多人对查重都有一定的…

JAVA中重写与重载的极简区别

重载就是同样的一个方法能够根据输入数据的不同&#xff0c;做出不同的处理重写就是当子类继承自父类的相同方法&#xff0c;输入数据一样&#xff0c;但要做出有别于父类的响应时&#xff0c;你就要覆盖父类方法 方法的重写(Overriding)和重载(Overloading)是java多态性的不同…

[Linux]:IO多路转接之epoll

1. IO 多路转接之epoll 1.1 epoll概述 epoll是Linux内核为处理大规模并发网络连接而设计的高效I/O多路转接技术。它基于事件驱动模型&#xff0c;通过在内核中维护一个事件表&#xff0c;能够快速响应多个文件描述符上的I/O事件&#xff0c;如可读、可写、异常等&#xff0c;…

从0开始学习Linux——用户管理

往期目录&#xff1a; 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 从0开始学习Linux——网络配置 从0开…

Docker 安装Immich教程

Immich 是一个开源的自托管照片和视频管理平台,专为帮助用户存储、管理、和分享个人媒体库而设计。Immich 的目标是提供一个类似 Google Photos 的替代方案,但不依赖于第三方服务,用户可以完全控制自己的数据。 本章教程,记录如何用Docker部署安装Immich,使用的操作系统的…

回首遥望-C++内存对齐的思考

这一章节主要巩固一下学习C/C时内存对齐相关的内容&#xff01; 文章目录 什么是内存对齐&#xff1f;为什么要有内存对齐&#xff1f;如何进行内存对齐&#xff1f;致谢&#xff1a; 什么是内存对齐&#xff1f; 这里不提及一堆啰嗦概念&#xff0c;就结合实际出发&#xff0…

从代码到云端:使用PyCharm打包Python项目并部署至服务器的完整指南

从代码到云端&#xff1a;使用PyCharm打包Python项目并部署至服务器的完整指南 引言 随着云计算技术的发展&#xff0c;越来越多的开发者选择将自己的应用部署到云服务器上。对于Python开发人员来说&#xff0c;如何高效地将本地开发完成的应用程序迁移到远程服务器成为了一个…

【ComfyUI +BrushNet+PowerPaint】图像修复(根据题词填充目标)——ComfyUI-BrushNet

运行代码&#xff1a;https://github.com/nullquant/ComfyUI-BrushNet 源码1&#xff1a;https://github.com/TencentARC/BrushNet 源码2&#xff1a;https://github.com/open-mmlab/PowerPaint 上图&#xff0c;中间未 random_mask.safetensors结果&#xff0c;最右边图未segm…

(时序论文阅读)TimeMixer: Decomposable Multiscale Mixing for Time Series Forecasting

来源论文iclr2024 论文地址&#xff1a;https://arxiv.org/abs/2405.14616 源码地址&#xff1a; https://github.com/kwuking/TimeMixer 背景 数据是有连续性&#xff0c;周期性&#xff0c;趋势性的。我们这篇文章主要围绕的是用MLP结构来预测数据的周期性具体为&#xff…

大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

3196. I’m stuck!-13年12月CCF计算机软件能力认证

关键词 图通路&#xff0c;DFS/BFS 题目 思路 几点想说明的&#xff1a; 为什么要两个DFS&#xff1b;dfs1表示的是求从S出发能到达的所有的点&#xff1b;dfs2是考虑从T出发回溯&#xff0c;能到达的所有点&#xff0c;回溯去走&#xff0c;相当于此时T才是起点check函数&…

若依笔记(九):商城系统apk打包与调试

目录 env修改 nginx修改 apk打包 按照前文所述app版本保持2.2&#xff0c;使用uniapp作为生成工具&#xff0c;因为app版本涉及到登录、商品、支付&#xff0c;微信小程序打包需要企业主权限&#xff0c;所以使用apk打包&#xff0c;使用uniapp自带的云打包&#xff0c;本地…

算法练习记录

dp&#xff08;完全&#xff0c;线性&#xff0c;树状&#xff0c;状压&#xff0c;数位&#xff09;> 搜索 基础算法&#xff08;二分&#xff0c;前缀和&#xff0c;高精度&#xff0c;公约数&#xff0c;公倍数&#xff0c;质数&#xff0c;排序&#xff09; > 数据结…

深入浅出 ChatGPT 底层原理:Transformer

Transformer 在人工智能和自然语言处理领域,Transformer架构的出现无疑是一个里程碑式的突破。它不仅推动了GPT(Generative Pre-trained Transformer)等大型语言模型的发展,还彻底改变了我们处理和理解自然语言的方式。 GPT与Transformer GPT 近几年&#xff0c;人工智能技…

【C语言】js写一个冒泡顺序

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xff0c;直接返回 } //…

Leetcode3345. 最小可整除数位乘积 I

Every day a Leetcode 题目来源&#xff1a;3345. 最小可整除数位乘积 I 解法1&#xff1a;枚举 至多循环 10 次&#xff0c;一定会遇到个位数为 0 的数字&#xff0c;数位乘积是 0&#xff0c;一定是 t 的倍数。 所以暴力枚举即可。 代码&#xff1a; /** lc appleetcod…

element的from表单校验问题 —— 校验内容正确、但触发错误提示

问题&#xff1a;二次封装了el-radio&#xff0c;在选择后触发了form的校验&#xff0c;并提示了错误。 分析&#xff1a;输出radio选择后的value值是正确&#xff0c;但还是触发了错误校验提示&#xff0c;可能纯在以下几个问题 1. v-model 绑定的form参数和rules不一致 2. e…