Java 学习记录:基础到进阶之路(一)

今天,让我们深入到 Java 项目构建、基础语法及核心编程概念的领域,一探究竟。

软件安装及环境配置请查看之前更新的博客有着详细的介绍:

IDEA软件安装&环境配置&中文插件-CSDN博客

目录

1.Java 项目构建基础

1.项目中的 SRC 目录

2.包结构的奥秘

2.第一个 Java 项目

3.Java 注释

4.变量:程序中的动态元素

变量的基本概念

变量使用注意事项

5.数组:数据的有序集合

1.数组的定义与特点

2.数组的遍历与应用

6.循环:程序的 “重复执行者”

1.for 循环的使用

2.用循环遍历数组

7.数据筛选与处理

1.筛选数据

2.数据统计

3.数据最值

4.逻辑运算

8.未来企业工作小技巧


1.Java 项目构建基础

1.项目中的 SRC 目录

在 Java 项目里,SRC(Source 的缩写)目录可谓是重中之重,它是我们放置源代码的地方。就如同图书馆里分类摆放书籍的书架,SRC 将我们的代码有序地组织起来。

2.包结构的奥秘

包结构在 Java 中为代码提供了一种命名空间和组织结构,像是给每个代码模块贴上独特的标签,方便管理和识别。

  • 第一层包结构:这一层揭示了项目的性质。
    • com代表商业类型的项目,是 “company” 的缩写。商业项目往往注重功能实现与商业价值,像电商平台的后端代码可能就以com开头。
    • org用于开源组织的项目,源自 “organization”。开源项目强调社区协作与代码共享,比如 Apache 基金会下众多的开源项目,为全球开发者提供了丰富的工具和框架。
    • edu对应教育类型的项目,即 “education”。教育项目常作为教学案例或学生实践的成果,帮助大家更好地理解和掌握 Java 编程。
    • gov则是政府类型的项目,全称为 “government”。政府项目通常对安全性、稳定性有极高要求,用于政务处理、公共服务等领域。

  • 第二层包结构:这里代表公司或团队名称。例如com.alibaba,一看便知是阿里巴巴公司相关的项目。在 Java 全栈开发中,无论是前端页面与后端服务的交互,还是数据库的操作,清晰的包结构能让不同模块的代码各司其职,提高开发效率。像在一个大型电商项目中,阿里巴巴可能会将用户管理、商品管理等不同功能模块放在以com.alibaba开头的不同子包中。
  • 第三层包结构:代表项目名称。以com.alibaba.druid为例,druid就是阿里巴巴开源的一个数据库连接池项目名称。合理的包结构设计,有助于在团队协作开发中,快速定位和理解代码的功能归属,避免命名冲突,就如同清晰的街道地址能让人迅速找到目的地一样。

2.第一个 Java 项目

当我们开启第一个 Java 项目时,就像踏上一段全新的冒险之旅。

package com.iw.day01;
public class Hellworld{//主函数,为程序员提供一个启动入口public static void main(String[] args){System.out.println("Hello World!");}
}

这段简单的代码,package声明了该类所在的包,就像是给代码安排了一个 “住址”。而public class Hellworld定义了一个公共类,类名是Hellworldmain方法则是 Java 程序的入口,程序从这里开始执行,System.out.println("Hello World!");语句会在控制台输出 “Hello World!”,这是我们向 Java 编程世界发出的第一声问候。

3.Java 注释

注释在代码中扮演着至关重要的角色,它就像是代码中的 “贴心注释员”。

  • 注释的作用:一方面,注释用于解释代码,帮助其他开发者(甚至未来的自己)快速理解代码的意图和功能。另一方面,当我们暂时不想删除某些代码,但又希望它不参与程序运行时,可以将其注释掉,起到废弃代码的作用。
  • 注释的分类
    • 单行注释:使用//,可以在一行代码的末尾或者单独一行对代码进行简短说明。例如//输出:姓名,它能让阅读代码的人一目了然这行代码的目的。在 Java 全栈开发中,前端 JavaScript 代码与后端 Java 代码交互时,单行注释可以清晰标注数据传递的逻辑。快捷键Ctrl + /能快速添加或取消单行注释,极大提高开发效率。
    • 多行注释:用/**/包裹起来,可以对一段代码进行详细解释。比如/* 以下4行代码:做简单的自我介绍 */,适用于注释内容较多的情况。其快捷键为Ctrl + Shift + / 。
    • 文档注释:以/**开头,*/结尾,通常放置在方法上方或类的上方。它的作用是为未来导出代码文档做准备,通过工具可以将这些注释提取出来生成详细的 API 文档,方便团队成员查阅和使用。例如:
public class Introduce {/*** 文档注释:通常放置在 方法上方 & 类的上方* 作用:为未来导出代码文档做准备* @param args*/public static void main(String[] args){//输出:姓名System.out.println("Aphelios");//输出:年龄System.out.println(21);System.out.println("Male");System.out.println("hobbies:music,game,coding");}
}

4.变量:程序中的动态元素

变量的基本概念

变量,简单来说,就是在一定范围内内容可以改变的量。从本质上讲,它是一块可以改变内容的内存空间。在 Java 中,定义变量的语法为数据类型 变量的名称 = 初始值; ,例如int age = 18;,这里int是数据类型,表示整数,age是变量名,18是初始值。=是赋值运算符,它将右边的值赋给左边的变量。在 Java 全栈开发的后端代码中,变量用于存储从数据库查询到的数据、计算过程中的中间结果等;在前端代码中,变量可用于存储用户输入的数据、页面元素的状态等。

public class test01{public static void main(String[] args){//变量语法:  数据类型 变量的名称 = 初始值;//=赋值运算符 作用:将右边的东西 赋值 给左边的变量int age = 18;System.out.println(age);age = 22;System.out.println(age);}
}

变量使用注意事项

  • 初始值的重要性:变量一定要赋初始值,否则在使用时可能会引发编译错误。这就好比我们出门前要确保车子有油,才能顺利行驶。
  • 变量名的唯一性:变量名不能重复,在同一个作用域内,每个变量都要有独一无二的名字,否则程序会混淆,不知道操作的是哪个变量。
  • 作用范围的界定:变量有其作用范围,可分为局部变量和全局变量。局部变量在方法内部定义,作用范围仅限于该方法内;全局变量定义在类中方法外,作用范围是整个类。例如:
public class VariableScope {//全局变量static int globalVar = 10;public static void main(String[] args) {//局部变量int localVar = 20;System.out.println(globalVar);System.out.println(localVar);}
}

5.数组:数据的有序集合

1.数组的定义与特点

数组是一种存储大量相同类型数据的数据结构。它具有以下特点:

  • 数据类型相同:数组中每个元素的数据类型必须一致,比如int[]类型的数组只能存储整数。
  • 存储空间连续:数组在内存中的存储空间是连续的,这使得数据的访问和处理效率较高。
  • 数组长度固定:一旦数组被创建,其长度就固定下来,不能随意改变。
    数组的定义方式有两种:

//方式一:指定数组长度
数据类型[] 变量名称 = new 数据类型[数组的长度]; 
//方式二:直接初始化数据
数据类型[] 变量名称 = {初始数据}; 

例如:

public class Test01 { public static void main(String[] args) { int[] arrs = new int[6]; //数组操作方式:采用下标 arrs[0] = 11; arrs[1] = 23; arrs[2] = 22; arrs[5] = 45; /*打印整个数组,需导入java.util.Arrays包*/System.out.println(Arrays.toString(arrs)); /*打印特定位置的值:*/ System.out.println(arrs[0]); System.out.println(arrs[1]); } 
}
public class Test02 { public static void main(String[] args) { int[] arrs = {11,23,12,22,14};//更推荐 System.out.println(Arrays.toString(arrs)); arrs[2] = 50; System.out.println(Arrays.toString(arrs)); } 
} 

2.数组的遍历与应用

当数组元素个数较多时,我们需要通过循环遍历的方式来访问每一个元素。在 Java 全栈开发中,后端从数据库获取的数据集可能以数组形式存储,通过遍历数组可以对数据进行处理,然后传递给前端展示。

public static void main(String[] args) { int[] arrs = {11,22,23,12,32,44,55}; //获得数组长度 int length = arrs.length; //遍历整个数组 for (int i = 0; i < length; i ++){ System.out.println(arrs[i]); } 
}

6.循环:程序的 “重复执行者”

循环的作用是让程序周而复始地做相同的事情。在 Java 编程中,循环是控制程序流程的重要手段,在 Java 全栈开发中广泛应用于数据处理、页面渲染等环节。

1.for 循环的使用

for循环的语法为for(初始变量; 循环判断条件; 控制变量的改变){ //循环体 }。例如,使用for循环打印输出 0 - 100 的数:

for(int i = 0; i <= 100; i++){System.out.println(i);
}

2.用循环遍历数组

通过for循环可以方便地遍历数组,例如:

public static void main(String[] args) { int[] arrs = {11,22,23,12,32,44,55}; int length = arrs.length; for (int i = 0; i < length; i ++){ System.out.println(arrs[i]); } 
}

练习题:对于int[] arrs = {44,54,43,23,11};,使用循环遍历该数组。

7.数据筛选与处理

1.筛选数据

后端程序员的重要工作之一就是捣腾数据,if语句在数据筛选中起着关键作用。例如,从数组中筛选出偶数:

public class Test04 { public static void main(String[] args) { int[] arrs = {44,54,43,23,11,34,33}; int length = arrs.length; for (int i = 0; i < length; i ++){ //偶数:余2 == 0 if(arrs[i] % 2 == 0){ System.out.println("偶数:" + arrs[i]); } } } 
} 

练习题:

  1. 找出数组中的奇数。
  2. 找出数组中大于 30 的数。

2.数据统计

在实际开发中,我们常常需要对数据进行统计。比如统计数组中有多少个负数:

public static void main(String[] args) { int[] arrs = {44,54,-43,-23,11,-34,33}; int count = 0;//计数器 for(int i = 0; i < arrs.length; i++){ //判断:是否是负数 if(arrs[i]<0) { count++; } }//遍历结束:给出结果 System.out.println(count); 
}

3.数据最值

寻找数组中的最大值和最小值也是常见的需求。例如,寻找数组中的最小值:

public static void main(String[] args) { int[] arrs = {44,54,-43,-23,11,-34,33}; int min = arrs[0]; /*开始遍历,判断*/ for (int i = 0 ; i < arrs.length; i ++){ if(min > arrs[i]){ min = arrs[i]; } }//遍历结束 System.out.println("最小数:" + min); 
}

4.逻辑运算

逻辑运算符&&(逻辑与)、||(逻辑或)、!(逻辑非)在 Java 编程中用于组合条件判断。

  • 逻辑与(&&):条件必须全部满足,且自带短路效果。例如,找男朋友的条件:首先是个男的,身高 1.8m ,学历本科以上,有车有房,这几个条件必须同时满足才为true
  • 逻辑或(||):条件任意满足,也自带短路效果。
    例如,从数组{11,30,23,22,50,33,45,48}中找出既能被 2 整除,又能被 5 整除的数:
public static void main(String[] args) { int[] arrs = {11,30,23,22,50,33,45,48}; //找出既能被2整除,又能被5整除的数 for (int i = 0; i < arrs.length; i ++){ if(arrs[i] % 2 == 0 && arrs[i] % 5 == 0 ){ System.out.println(arrs[i]); } } 
}

练习题:

  1. 从数组{11,30,23,22,50,33,45,48}中找出既能被 2 整除,或能被 5 整除的数。
  2. 从数组{11,30,23,22,50,33,45,48}中找出既不能被 2 整除,又不能被 5 整除的数 。

8.未来企业工作小技巧

  • 代码规范遵循:在企业中,遵循统一的代码规范至关重要。阿里巴巴的 Java 开发手册是很好的参考,它涵盖了命名规范、代码结构、异常处理等多方面内容,能让团队协作开发更加顺畅,减少沟通成本。例如,类名使用大驼峰命名法,方法名使用小驼峰命名法等。
  • 版本控制工具使用:学会使用 Git 进行版本控制。在 Java 全栈项目开发中,无论是前端代码还是后端代码,通过 Git 可以方便地管理代码版本,实现多人协作开发。例如,创建不同的分支进行功能开发,定期将代码合并到主分支等操作。
  • 日志记录与调试:在开发过程中,合理使用日志记录工具(如 Log4j)。在遇到问题时,详细的日志信息能帮助快速定位和解决问题。比如在后端服务器出现错误时,通过查看日志可以了解错误发生的时间、位置以及相关变量的值,提高调试效率。

随着对这些基础概念的深入理解和不断实践,我们在 Java 编程的道路上又迈出了坚实的一步。持续学习,不断探索,相信在未来的 Java 全栈开发工作中,这些知识将成为我们攻克难题、创造价值的有力武器。

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

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

相关文章

【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】

闲话系列&#xff1a;每日一题&#xff0c;秃头有我&#xff0c;Hello&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;,我是IF‘Maxue&#xff0c;欢迎大佬们来参观我写的蓝桥杯系列&#xff0c;我好久没有更新博客了&#xff0c;因为up猪我寒假用自己的劳动换了…

STM32Cubemx-H7-7-OLED屏幕

如何把江科大的OLED标准库文件换成hal库的文件 前言 本文讲解如在hHAL库中使用OLED&#xff0c;其实江科大做的文件好已经很好了 只讲操作&#xff0c;不讲废话&#xff0c;默认大家都有32基本操作 创建工程 首先创建工程 把那两个引脚设置成开漏 获取标准库文件 打开江科大O…

基于 Vue 的Deepseek流式加载对话Demo

目录 引言组件概述核心组件与功能实现1. 消息显示组件&#xff08;Message.vue&#xff09;2. 输入组件&#xff08;Input.vue&#xff09;3. 流式请求处理&#xff08;useDeepseek.ts&#xff09;4. 语音处理模块&#xff08;Voice.vue&#xff09; 总结Demo Github 地址 引言…

Pixelmator Pro for Mac 专业图像处理软件【媲美PS的修图】

介绍 Pixelmator Pro&#xff0c;是一款非常强大、美观且易于使用的图像编辑器&#xff0c;专为 Mac 设计。采用单窗口界面、基于机器学习的智能图像编辑、自动水平检测&#xff0c;智能快速选择及更好的修复工具等功能优点。许多非破坏性的专业编辑工具可让您进行最佳的照片处…

YOLO结合bytetrack对车辆目标跟踪计数

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对车辆目标数据集进行训练和优化&#xff0c;该数据集包含丰富的车辆目标图像样本…

通义万相2.1 图生视频:为AI绘梦插上翅膀,开启ALGC算力领域新纪元

通义万相2.1图生视频大模型 通义万相2.1图生视频技术架构万相2.1的功能特点性能优势与其他工具的集成方案 蓝耘平台部署万相2.1核心目标典型应用场景未来发展方向 通义万相2.1ALGC实战应用操作说明功能测试 为什么选择蓝耘智算蓝耘智算平台的优势如何通过API调用万相2.1 写在最…

软考中级_【软件设计师】知识点之【知识产权】

简介 知识产权模块主要涉及软件行业相关法律保护体系&#xff0c;包括著作权、专利权、商标权及商业秘密等内容。重点涵盖软件著作权登记流程、源代码保护范围、专利创新性认定标准&#xff0c;以及开源协议&#xff08;如GPL、MIT&#xff09;的法律约束力。考生需掌握**《计算…

Kafka×DeepSeek:智能决策破取经八十一难!

《西游记》的故事中&#xff0c;唐僧师徒四人历经九九八十一难&#xff0c;从东土大唐前往西天取经。一路上&#xff0c;火焰山酷热难耐、通天河水位忽高忽低、妖怪神出鬼没…… 现在&#xff0c;唐僧师徒取经路上的种种难题&#xff0c;在KafkaDeepSeek双引擎加持下有了全新解…

nextjs15使用next-intl实现国际化多语言

在nextjs15当中使用next-intl可以轻松实现国际化&#xff0c;本文将着重阐述&#xff0c;如何在nextjs15使用next-intl。 一、创建项目安装依赖 1、创建nextjs项目 pnpm dlx create-next-app my-app 2、安装next-intl pnpm add next-intl 二、创建组件文件 1、项目结构 …

【C++模板】:开启泛型编程之门(函数模版,类模板)

&#x1f4dd;前言&#xff1a; 在上一篇文章C内存管理中我们介绍了C的内存管理&#xff0c;重点介绍了与C语言的区别&#xff0c;以及new和delete。这篇文章我们将介绍C的利器——模板。 在C编程世界里&#xff0c;模板是一项强大的特性&#xff0c;它为泛型编程奠定了坚实基础…

Android : Camera之CHI API

来自&#xff1a; https://www.cnblogs.com/szsky/articles/10861918.html 一、CAM CHI API功能介绍&#xff1a; CHI API建立在Google HAL3的灵活性基础之上&#xff0c;目的是将Camera2/HAL3接口分离出来用于使用相机功能&#xff0c;它是一个灵活的图像处理驱动程序&#…

项目部署到生产上遇到的网络问题

今天项目上线不顺利,原因就是网络能 telnet 通过&#xff0c;但是就是访问不到接口。 项目使用的是 docker 部署的方式。一开始以为是网络权限没开通&#xff0c;一直找运维部门帮忙看&#xff0c;也都没发现问题&#xff0c;网络部门已经把权限都开了。 折腾了一番后&#x…

Odoo 18 中的列表视图装饰属性

引言 列表视图装饰在 Odoo 中提供了一种基于特定条件在列表/树形视图中直观突出显示记录或字段的方式。这些装饰能够提升用户体验&#xff0c;使用户更轻松地识别重要记录。在 Odoo 18 中&#xff0c;有多个属性可用于列表视图装饰&#xff0c;为数据管理提供了灵活性。 以下…

SpringMVC中有关请求参数的问题(映射路径,传递不同的参数)

目录 请求映射路径 get请求与psot请求发送普通参数 get请求发送参数 post请求发送参数 post请求乱码问题 5种参数类型传递 普通参数传递&#xff08;不同名&#xff09; 实体类对象传递 数组传递 集合参数 json数据传递参数 JSON数组 JSON对象 ​编辑 JSON引用集…

图片查看器:用PyQt5实现本地图片预览工具

通过python代码&#xff0c;基于PyQt5实现本地图片预览查看工具。 我们对窗口进行了圆角设计&#xff0c;图片的翻页按钮半透明处理&#xff0c;当鼠标移动至按钮上的动画效果&#xff0c;当选择某一张图片&#xff0c;进行左右翻页则轮播同目录所有支持的图片格式。 import …

算法优选系列(1.双指针_下)

目录 五. 有效三角形的个数&#xff08;medium&#xff09; 题目链接&#xff1a;有效三角形的个数 解法: 代码&#xff1a; 六&#xff1a;和为 s 的两个数字&#xff08;easy&#xff09; 题目链接&#xff1a;和为 s 的两个数字 解法&#xff1a; 代码; 七&#xf…

【数据结构】2算法及分析

0 章节 &#xff11;&#xff0e;&#xff14;到1&#xff0e;&#xff15;小节。 掌握算法概念、特性、描述、算法性能时间复杂度和空间复杂度&#xff1b; 理解递归含义&#xff1f; 掌握实现递归的条件和时机&#xff1b; 应用简单递归问题的算法设计&#xff1b; 重点 算法…

要在Unreal Engine 5(UE5)中实现角色打击怪物并让怪物做出受击反应,

UE5系列文章目录 文章目录 UE5系列文章目录前言一、实现思路二、最终效果 前言 ue5角色受击没有播放受击动画&#xff0c;主角达到怪物身上没有反应 一、实现思路 要在Unreal Engine 5&#xff08;UE5&#xff09;中实现角色打击怪物并让怪物做出受击反应&#xff0c;你需要…

Java糊涂包(Hutool)的安装教程并进行网络爬虫

Hutool的使用教程 1&#xff1a;在官网下载jar模块文件 Central Repository: cn/hutool/hutool-all/5.8.26https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.8.26/ 下载后缀只用jar的文件 2&#xff1a;复制并到idea当中&#xff0c;右键这个模块点击增加到库 3&…

C++从零实现Json-Rpc框架

文章目录 一、项目介绍1. 基本原理2. 涉及到的技术栈3. 最终实现的效果 二、 第三方库的介绍与使用1. JsonCpp库Json的数据格式JsonCpp介绍封装Json工具类 2. muduo库muduo库是什么Muduo库常见接口介绍 3. C11异步操作std::future 三、框架设计1. 服务端模块划分NetworkProtoco…