JAVA |日常开发中常见问题归纳讲解

在这里插入图片描述
在这里插入图片描述

JAVA |日常开发中常见问题归纳讲解

  • 前言
  • 一、语法错误相关问题
    • 1.1 分号缺失或多余
    • 1.2 括号不匹配
    • 1.3 变量未定义或重复定义
  • 二、数据类型相关问题
    • 2.1 数据类型不匹配
    • 2.2 整数溢出和浮点数精度问题
  • 三、面向对象编程相关问题
    • 3.1 空指针异常(NullPointerException)
    • 3.2 继承和多态问题
  • 四、集合类相关问题
    • 4.1 并发修改异常(ConcurrentModificationException)
    • 4.2 类型不匹配和未初始化问题(对于泛型集合)
  • 五、文件操作和输入输出相关问题
    • 5.1 文件不存在或权限问题
    • 5.2 资源未正确关闭
  • 结束语
  • 优质源码分享

JAVA |日常开发中常见问题归纳讲解,以下是 Java 日常开发中常见问题的归纳讲解:语法错误相关问题,数据类型相关问题,面向对象编程相关问题,集合类相关问题,文件操作和输入输出相关问题等详解,内有代码示例。

前言

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

一、语法错误相关问题

1.1 分号缺失或多余

在 Java 中,语句以分号结束。例如,在定义一个变量后忘记加分号是常见的错误。

  • 示例:
int a = 10 // 这里缺少分号,会导致编译错误
  • 解决方法:仔细检查语句结尾,确保每个语句都以分号结尾。

1.2 括号不匹配

这在控制语句(如 if - else、for、while)和方法定义中很常见。

  • 例如:
if (a > 10) {System.out.println("a is greater than 10");
} else // 这里少了一个大括号,可能导致逻辑错误或编译错误System.out.println("a is less than or equal to 10");
  • 解决方法:检查代码中的括号,确保开闭括号数量匹配,并且代码块的范围符合预期。

1.3 变量未定义或重复定义

如果在使用变量之前没有定义它,会出现编译错误。

  • 例如:
System.out.println(b); // b没有被定义,会出错
int b = 20;
  • 同时,在同一个作用域内重复定义变量也会出错。
int c = 30;
int c = 40; // 重复定义变量c,编译不通过
  • 解决方法:在使用变量前先定义,并且注意变量的作用域,避免重复定义。

二、数据类型相关问题

2.1 数据类型不匹配

当试图将一种数据类型的值赋给另一种不兼容的数据类型变量时,会出现问题。

  • 示例:
int num = 10.5; // 试图将double类型的值赋给int类型变量,会出错
  • 解决方法:进行类型转换。如果确定不会丢失数据精度,可以使用强制类型转换。
int num = (int)10.5; // 这样可以将double类型的值转换为int类型,但会丢失小数部分

2.2 整数溢出和浮点数精度问题

对于整数类型,如果存储的值超出了其范围,就会发生溢出。

  • 例如,对于 byte 类型(范围是 - 128 到 127):
byte b = 127;
b = (byte)(b + 1); // 结果会变成 - 128,因为发生了溢出
  • 对于浮点数,由于其在计算机内部的存储方式,可能会出现精度问题。
double d1 = 0.1;
double d2 = 0.2;
double sum = d1 + d2;
System.out.println(sum == 0.3); // 结果是false,因为浮点数精度问题
  • 解决方法:对于整数溢出,可以考虑使用更大的数据类型或者进行边界检查。对于浮点数精度问题,可以使用 BigDecimal 类来进行高精度的数值计算。

三、面向对象编程相关问题

3.1 空指针异常(NullPointerException)

这是 Java 中最常见的异常之一。当试图访问一个对象的方法或属性,而这个对象是 null 时,就会抛出空指针异常。

  • 示例:
String str = null;
int length = str.length(); // 因为str是null,会抛出空指针异常
  • 解决方法:在使用对象之前,先检查对象是否为 null。
if (str!= null) {int length = str.length();
}

3.2 继承和多态问题

错误地覆盖(override)方法可能导致问题。例如,方法签名(方法名、参数类型和顺序、返回类型)不一致。

  • 正确的覆盖方法示例:
class Parent {public void print() {System.out.println("Parent print");}
}
class Child extends Parent {@Overridepublic void print() {System.out.println("Child print");}
}
  • 如果返回类型或参数列表错误地修改了,就不是正确的覆盖。
  • 解决方法:仔细检查方法签名,确保遵循 Java 的覆盖规则。在需要调用父类方法时,可以使用 super 关键字。

四、集合类相关问题

4.1 并发修改异常(ConcurrentModificationException)

当在遍历一个集合(如 ArrayList、HashSet 等)的同时修改这个集合,就可能会出现这个异常。

  • 示例:
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
for (Integer i : list) {if (i == 1) {list.remove(i); // 会抛出并发修改异常}
}
  • 解决方法:可以使用迭代器的 remove 方法来安全地删除元素,或者使用 Java 8 的流操作来处理集合。
//使用迭代器
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {Integer i = iterator.next();if (i == 1) {iterator.remove();}
}

4.2 类型不匹配和未初始化问题(对于泛型集合)

当向一个泛型集合添加不匹配类型的元素时会出现问题。

  • 示例:
ArrayList<String> stringList = new ArrayList<>();
stringList.add(10); // 试图添加一个整数到字符串列表,会出错
  • 另外,如果忘记初始化集合,在使用时也会出现空指针异常。
  • 解决方法:添加元素时确保类型正确,并且在使用集合前进行初始化。

五、文件操作和输入输出相关问题

5.1 文件不存在或权限问题

当试图读取或写入一个不存在的文件时,会出现问题。

  • 示例:
FileReader fileReader = new FileReader("nonexistentFile.txt"); // 如果文件不存在,会抛出FileNotFoundException
  • 解决方法:在操作文件之前,先检查文件是否存在,可以使用 File 类的 exists 方法。对于权限问题,确保程序有足够的权限来访问文件。
File file = new File("file.txt");
if (file.exists()) {try {FileReader fileReader = new FileReader(file);} catch (FileNotFoundException e) {e.printStackTrace();}
} else {System.out.println("文件不存在");
}

5.2 资源未正确关闭

在进行文件输入输出操作或使用数据库连接等资源后,如果没有正确关闭资源,可能会导致资源泄漏。

  • 示例:
FileInputStream fis = new FileInputStream("file.txt");
// 忘记关闭fis,可能会导致文件句柄等资源未释放
  • 解决方法:使用 try - with - resources 语句来自动关闭资源。
try (FileInputStream fis = new FileInputStream("file.txt")) {// 在这里进行文件读取操作
} catch (FileNotFoundException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
}

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144183688(防止抄袭,原文地址不可删除)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu的用户使用

ubuntu系统中的常规用户登录方式 在系统root用户是无法直接登录的,因为root用户的权限过大所以其安全性比较差 在登录系统时一般使用在安装系统时建立的普通用户登录 如果需要超级用户权限: Ubuntu用户密码破解 在系统安装完成后默认grub启动等待时间为0&#xff0c;建议改…

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …

38 基于单片机的宠物喂食(ESP8266、红外、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;采用L298N驱动连接P2.3和P2.4口进行电机驱动&#xff0c; 然后串口连接P3.0和P3.1模拟ESP8266&#xff0c; 红外传感器连接ADC0832数模转换器连接单片机的P1.0~P1.…

GEE Landsat 8 可见光影像校正后下载

在遥感影像处理领域&#xff0c;Landsat 8 数据因其 30 米空间分辨率 和 多光谱波段 被广泛应用。处理这些数据时&#xff0c;研究者常常需要对数据进行裁剪、计算指数、图像增强等操作&#xff0c;以满足特定研究需求。 本文将介绍一个 Python 自动化脚本&#xff0c;使用 Goo…

Matlab Simulink HDL Coder开发流程(一)— 创建HDL兼容的Simulink模型

创建HDL兼容的Simulink模型 一、使用Balnk DUT模板二、从HDL Coder库中选择模块三、为DUT开发算法/功能四、为设计创建Testbench五、仿真验证设计功能六、Simulink模型生成HDL代码 这个例子说明了如何创建一个用于生成HDL代码的Simulink模型。要创建兼容HDL代码生成的MATLAB算法…

如何通过 JWT 来解决登录认证问题

1. 问题引入 在登录功能的实现中 传统思路&#xff1a; 登录页面时把用户名和密码提交给服务器服务器验证用户名和密码&#xff0c;并把检验结果返回给后端如果密码正确&#xff0c;则在服务器端创建 session&#xff0c;通过 cookie 把 session id 返回给浏览器 但是正常情…

像素流送api ue多人访问需要什么显卡服务器

关于像素流送UE推流&#xff0c;在之前的文章里其实小芹和大家聊过很多&#xff0c;不过今天偶然搜索发现还是有很多小伙伴&#xff0c;在搜索像素流送相关的问题&#xff0c;搜索引擎给的提示有这些。当然这些都是比较短的词汇&#xff0c;可能每个人真正遇到的问题和想获取的…

Uniad复现学习

在优云平台部署训练&#xff0c;加速训练。 关于UCloud(优刻得)旗下的compshare算力共享平台 UCloud(优刻得)是中国知名的中立云计算服务商&#xff0c;科创板上市&#xff0c;中国云计算第一股。 UCloud&#xff08;优刻得&#xff09;旗下的Compshare算力共享平台具有以下优点…

域名解析系统 DNS

1.域名系统概述 用户与互联网上某台主机通信时&#xff0c;必须要知道对方的IP地址。然而用户很难记住长达32 位的二进制主机地址。即使是点分十进制地址也并不太容易记忆。但在应用层为了便于用户记忆各种网络应用&#xff0c;连接在互联网上的主机不仅有P地址&#xff0c;而…

【软考网工笔记】网络基础理论——网络层

文章目录 中断处理过程数据包组装RIPRSVPipv4RIPv1 & RIPv2HFC 混合光纤同轴电缆&#xff08;Hybrid Fiber Coax&#xff0c;简称HFC&#xff09;BGP (边界网关协议)BGP-4 协议的四种报文ICMP 协议数字语音电子邮件协议MPLS 多协议标记交换ipv6DHCPDNS名称解析过程查询顺序…

go语言 Pool实现资源池管理数据库连接资源或其他常用需要共享的资源

go Pool Pool用于展示如何使用有缓冲的通道实现资源池&#xff0c;来管理可以在任意数量的goroutine之间共享及独立使用的资源。这种模式在需要共享一组静态资源的情况&#xff08;如共享数据库连接或者内存缓冲区&#xff09;下非 常有用。如果goroutine需要从池里得到这些资…

【Delphi】modbus-TCP 协议库

在日常开发中&#xff0c;也会遇到使用modbus的部件&#xff0c;比如温度控制器、读卡器等等&#xff0c;那么使用Delphi开发&#xff0c;也就必须遵守modbus-TCP协议&#xff0c;如果自己使用TCP控件写也没有问题&#xff0c;不过如果有开源的三方库&#xff0c;别人已经调试过…

【Git 操作】-- 将 fork master 分支的最新commit更新到自己的仓库

目录 1.举例 2. 配置上游仓库&#xff08;Upstream&#xff09; 3. 获取上游仓库的更新 4. 切换到你自己的 master 分支 5. 合并上游仓库的 master 分支 6. 解决冲突&#xff08;如果有的话&#xff09; 7. 推送更新到你自己的 GitHub 仓库 1.举例 当我们从 github 的 h…

Facebook的开源项目解析:推动开发者社区的技术进步

Facebook&#xff0c;作为全球领先的社交平台之一&#xff0c;其在技术领域的创新不仅体现在产品功能的实现上&#xff0c;也积极推动开源社区的发展。开源项目已经成为Facebook技术战略的重要组成部分&#xff0c;通过开源&#xff0c;Facebook不仅加速了技术进步&#xff0c;…

荣耀300系列革新发布:科技与美学的里程碑之作

2024年12月2日&#xff0c;全新一代荣耀300系列正式发布&#xff0c;新潮的环球旅拍发布会不仅展现了荣耀追求极致的创新理念&#xff0c;也标志着数字系列迎来科技体验以及美学设计的巨大升级。凭借荣耀领先行业的AI能力以及对底层科技创新的强大驱动&#xff0c;全新荣耀300系…

centos 7 离线安装postgis插件

前一段时间记录了下如何在centos7中离线安装postgresql&#xff0c;因为工作需要&#xff0c;我不仅要安装postgresql&#xff0c;还需要安装postgis插件&#xff0c;这篇文章记录下postgis插件的安装过程。 1. 安装前的参考 如下的链接都是官网上的链接&#xff0c;对你安装p…

ChatGPT/AI辅助网络安全运营之-数据解压缩

在网络安全的世界中&#xff0c;经常会遇到各种压缩的数据&#xff0c;比如zip压缩&#xff0c;比如bzip2压缩&#xff0c;gzip压缩&#xff0c;xz压缩&#xff0c;7z压缩等。网络安全运营中需要对这些不同的压缩数据进行解压缩&#xff0c;解读其本意&#xff0c;本文将探索一…

kube-proxy的iptables工作模式分析

系列文章目录 iptables基础知识 文章目录 系列文章目录前言一、kube-proxy介绍1、kube-proxy三种工作模式2、iptables中k8s相关的链 二、kube-proxy的iptables模式剖析1.集群内部通过clusterIP访问到pod的流程1.1.流程分析 2.从外部访问内部service clusterIP后端pod的流程2.1…

【Linux】文件操作的艺术——从基础到精通

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da;前言&#xff1a;一切皆文件 &#x1f4da;一、C语言的文件接口 &#x1f4d6;1.文件打…

AI 声音:数字音频、语音识别、TTS 简介与使用示例

在现代 AI 技术的推动下&#xff0c;声音处理领域取得了巨大进展。从语音识别&#xff08;ASR&#xff09;到文本转语音&#xff08;TTS&#xff09;&#xff0c;再到个性化声音克隆&#xff0c;这些技术已经深入到我们的日常生活中&#xff1a;语音助手、自动字幕生成、语音导…