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.mzph.cn/web/61599.shtml

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

相关文章

Git常用命令参考手册

Git常用命令参考手册 整理了一篇git常用的命令参考手册&#xff0c;命令顺序按照一个项目从头到尾的常用命令顺序做了排序&#xff0c;后续会继续完善内容示例并补全其他命令使用说明&#xff0c;希望对不熟悉的小伙伴有所帮助。 git config # 配置列表 git config --list #…

翰高4.5.7安装测试手册centos

翰高4.5.7centos版本安装 1 环境准备 产品包&#xff1a;hgdb4.5.7-see-centos7-x86-64-20210804.rpm 环境&#xff1a;10.1.5.172 root/sh88861158 操作系统安装完成后&#xff0c;执行常规操作&#xff1a;修改hosts、关闭防火墙、关闭senliunx 2 安装步骤 2.1 安装前准…

港科夜闻 |香港科大推出 InvestLM生成式人工智能平台,支持金融中小企应用AI技术潜力...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大推出 InvestLM生成式人工智能平台&#xff0c;支持金融中小企应用AI技术潜力。香港科大商学院继去年研究团队成功开发本港首个专为金融界而设、应用于生成式人工智能(生成式AI)的开源大语言模型InvestLM后&#…

【计算机网络】实验6:IPV4地址的构造超网及IP数据报

实验 6&#xff1a;IPV4地址的构造超网及IP数据报 一、 实验目的 加深对IPV4地址的构造超网&#xff08;无分类编制&#xff09;的了解。 加深对IP数据包的发送和转发流程的了解。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、了解IPV4地址的构造超网…

FreeRtos开发之计数信号量

前面介绍过了计数信号量的定义取值只有0与1两种状态的信号量称之为二值信号量 取值大于1的信号量称之为计数信号量 计数信号量的取值也可以为1&#xff0c;但通常大于1&#xff0c;如果取值为1&#xff0c;相当于只有0与1两种状态&#xff0c;用二值信号量即可。 计数信号量应用…

Profinet转EtherNet/IP网关是如何解决西门子S7-1500PLC与AB PLC的通讯问题的

一、 案例背景 在一个工业现场&#xff0c;一端是AB的PLC&#xff0c;IP地址192.168.1.20;另一端西门子是S7-1500系列&#xff0c;IP地址192.168.2.248。AB的PLC内有 B3、N7、F8 三个寄存器文件涉及到通讯&#xff0c;分别对应西门子PLC的M、DB1、DB2三个存储区域。通过捷米特…

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1&#xff0c;可以用数组存放&#xff0c;如果有雷就用1表示&#xff0c;没雷就用0表示。 2&#xff0c;排查(2,5)这个坐标时&#xff0c;我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…

Unity开发FPS游戏之完结篇

这个系列的前几篇文章介绍了如何从头开始用Unity开发一个FPS游戏&#xff0c;感兴趣的朋友可以回顾一下。这个系列的文章如下&#xff1a; Unity开发一个FPS游戏_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个FPS游戏之二_unity 模仿开发fps 游戏-CSDN博客 Unity开发一个F…

浅析RPC—基础知识

该文章会简单介绍一下 RPC 相关的基础概念。 什么是RPC&#xff1f; RPC&#xff08;Remote Procedure Call&#xff09; 即远程过程调用&#xff0c;通过名字我们就能看出 RPC 关注的是远程调用而非本地调用。 为什么要 RPC &#xff1f; 因为&#xff0c;两个不同的服务器…

mysql数据库varchar截断问题

用了这么多年mysql数据库&#xff0c;才发现varchar是可以截断的&#xff0c;而且是在我们线上数据库。个人觉得dba的这个设置是非常有问题的&#xff0c;用户往数据库里存东西&#xff0c;就是为了以后用的&#xff0c;截断了存放&#xff0c;数据不完整&#xff0c;就用不了了…

EwoMail邮箱服务器软件安装教程

EwoMail是基于Linux的开源邮件服务器软件,集成了众多优秀稳定的组件,是一个快速部署、简单高效、多语言、安全稳定的邮件解决方案,帮助你提升运维效率,降低 IT 成本,兼容主流的邮件客户端,同时支持电脑和手机邮件客户端。 一、系统版本 二、关闭selinux vi /etc/sysconf…

【机器学习】机器学习的基本分类-监督学习-支持向量机(Support Vector Machine, SVM)

支持向量机是一种强大的监督学习算法&#xff0c;主要用于分类问题&#xff0c;但也可以用于回归和异常检测。SVM 的核心思想是通过最大化分类边界的方式找到数据的最佳分离超平面。 1. 核心思想 目标 给定训练数据 &#xff0c;其中 是特征向量&#xff0c; 是标签&#xf…

Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题

目录 1. root用户&#xff08;超级管理员&#xff09; 1.1 用于账户切换的系统命令——su 1.2 退回上一个用户命令——exit 1.3 普通命令临时授权root身份执行——sudo 1.3.1 为普通用户配置sudo认证 2. 用户/用户组管理 2.1 用户组管理 2.2 用户管理 2.2.1 …

Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录

前言&#xff1a;纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 参考&…

《Python基础》之Python中可以转换成json数据类型的数据

目录 一、JSON简介 JSON有两种基本结构 1、对象&#xff08;Object&#xff09; 2、数组&#xff08;Array&#xff09; 二、将数据装换成json数据类型方法 三、在Python中&#xff0c;以下数据类型可以直接转换为JSON数据类型 1、字典&#xff08;Dictionary&#xff09…

若依项目源码阅读

源码阅读 前端代码分析 代码生成器生成的前端代码有两个&#xff0c;分别是course.js用于向后端发送ajax请求的接口代码&#xff0c;另一个是index.vue&#xff0c;用于在浏览器展示课程管理的视图组件。前端的代码是基于vue3elementplus。 template用于展示前端组件别的标签…

C#tabcontrol如何指定某个tabItem为默认页

// Selects tabPage2 using SelectedTab.this.tabControl1.SelectedTab tabPage2; 参考链接 TabControl.SelectedTab 属性 (System.Windows.Forms) | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.tabcontrol.selectedtab?viewnetfr…

文件比较和文件流

文件比较和文件流 一、文本比较工具 diff1.基本用法1.1输出格式 2.常用选项 二、文件流1.文件的打开模式2.文件流的分类ifstreamofstreamfstrem区别 3.文件流的函数1. 构造函数2. is_open 用于判断文件是否打开3. open4. getline5. close6. get()7. read8. write9. put10. gcou…

【网络篇】HTTP知识

键入网址到网页显示&#xff0c;期间发生了什么&#xff1f; 浏览器第一步是解析URL&#xff0c;这样就得到了服务器名称和文件的路径名&#xff0c;然后根据这些信息生成http请求&#xff0c;通过DNS查询得到我们要请求的服务器地址&#xff0c;然后添加TCP头、IP头以及MAC头&…

【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞

1. 漏洞结果 JavaScript 框架或库是一组能轻松生成跨浏览器兼容的 JavaScript 代码的工具和函数。如果网站使用了存在漏洞的 JavaScript 框架或库&#xff0c;攻击者就可以利用此漏洞来劫持用户浏览器&#xff0c;进行挂马、XSS、Cookie劫持等攻击。 1.1 漏洞扫描截图 1.2 具体…