Java 学习笔记(基础篇3)

1. 数组:

① 静态初始化:

(1) 格式:

int[] arr = {1, 2, 3};

② 遍历

/* 格式:
数组名.length */
for(int i = 0; i < arr.length; i++){//在循环的过程中,i依次表示数组中的每一个索引sout(arr[i]);//就可以把数组里面的每一个元素都获取出来,并打印在控制台上了。
}

③ 数组动态初始化

(1) 格式:

int[] arr = new int[3];

④ 练习:

(1) 请编写一个 Java 程序,实现以下功能:

  1. 创建一个长度为 10 的整数数组
  2. 使用随机数为数组赋值,随机数的范围是 1 到 100(包含 1 和 100)
  3. 打印输出数组中的所有元素
  4. 计算并输出数组中所有元素的总和
  5. 计算并输出数组中所有元素的平均值(取整数部分)
  6. 统计并输出数组中比平均值小的元素的个数
public class test4 {public static void main(String[] args) {int[] arr = new int[10];int count = 0;Random r = new Random();for (int i = 0; i < arr.length; i++) {int num = r.nextInt(100) + 1;arr[i] = num;System.out.print(arr[i] + " ");}int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}System.out.println("数组中所有数据的和为" + sum);int avg = sum / arr.length;System.out.println("数组中平均数为" + avg);for (int i = 0; i < arr.length; i++) {if (arr[i] < avg){count++;}}System.out.println("在数组中,一共有" + count + "个数据,比平均数小");}
}

关键逻辑:

  • 计算数组总和:遍历数组,用累加的方式(sum += arr[i])计算所有元素的总和
  • 输出数组元素的行:逐个打印数组中的元素,元素之间用空格分隔使用 print 而非 println保证所有元素在同一行输出(例如:35 12 78 ...),而不是每个元素单独占一行。

(2) 交换数据

定义一个包含元素 {1,2,3,4,5} 的整数数组,通过编程将数组中的元素进行反转(即第一个元素与最后一个元素交换位置,第二个元素与倒数第二个元素交换位置,以此类推),最后将反转后的数组元素依次打印输出(元素之间用空格分隔)。

public class test5 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};for (int i = 0, j = arr.length - 1; i < j; i++, j--){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}
}

关键逻辑:

  1. 双指针对称遍历
    循环中使用两个指针(i 和 j):

    • i 从数组开头(索引 0)向后移动
    • j 从数组末尾(索引arr.length-1)向前移动
    • 循环条件 i < j 确保只交换前半部分与后半部分的对称元素(避免重复交换)
  2. 元素交换实现反转
    在每次循环中:

    • 用临时变量 temp 保存 arr[i] 的值
    • 将 arr[j] 的值赋给 arr[i](把后半部分元素放到前半部分)
    • 将 temp(原来的 arr[i])的值赋给 arr[j](把前半部分元素放到后半部分)
    • 交换后 i 递增、j 递减,继续处理下一对对称元素

2. 方法

① 带参数方法的定义和调用:

(1) 形参和实参:

形参:方法定义中的参数,等同于变量定义格式;
实参:方法调用中的参数,等同于使用变量或常量;

(2) 带返回值方法的定义和调用

public static 返回值类型 方法名() {return 数据值;
}

(3) 调用方法时需要注意:

void类型的方法可以直接调用;
非void类型的方法,推荐用变量接收调用;

② 方法的重载

(1) 方法重载(Overloading):在同一个类中,方法名相同,但参数不同(类型/个数/顺序)。

(2) 特点

  • 方法名相同
  • 参数不同(个数、类型、顺序)
  • 与返回值无关

③ 练习

(1) 数组遍历

请编写一个 Java 程序,实现以下功能:

  1. 定义一个 int 类型的数组,数组元素为 {11, 22, 33, 44, 55}
  2. 编写一个名为 printArr 的静态方法,该方法接收一个 int 类型数组作为参数
  3. printArr 方法需要按照 "[元素 1, 元素 2, 元素 3, ..., 元素 n]" 的格式打印数组内容(注意元素之间用逗号加空格分隔,最后一个元素后没有逗号)
  4. 在 main 方法中创建数组并调用 printArr 方法打印数组内容
public class test9 {public static void main(String[] args) {int[] arr ={11, 22, 33, 44, 55};printArr(arr);}public static void printArr(int[] arr){System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {System.out.print(arr[i]);} else{System.out.print(arr[i] + "," +" ");}}System.out.println("]");}
}

关键逻辑:

当执行 printArr(arr)时,并不是把数组的所有元素复制一份传递给方法,而是把arr中存储的首地址传递给了printArr方法的参数arr(方法参数列表中的int[] arr)。

这意味着:

  • 方法内部的arr和主方法中的arr指向同一块内存空间(同一个数组)。
  • 所以在printArr方法中,通过arr[i]可以访问到数组的所有元素 —— 因为拿到了首地址,就能顺藤找到后续所有元素(数组是连续存储的)。

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

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

相关文章

知识点汇总linuxC高级-3 shell脚本编程

shell脚本编程shell ---> 解析器&#xff1a;sh csh ksh bashshell命令 ---> shell解析的命令shell脚本 --> shell命令的有序集合shell脚本编程&#xff1a;将shell命令结合按照一定逻辑集合到一起&#xff0c;写到一个 .sh 文件&#xff0c;去实现一个或多个功能&…

【C++学习篇】:基础

文章目录前言1. main() 函数2. 变量赋值3. cin和cout的一些细节4. 基本类型运算5. 内存占用6. 引用7. 常量前言 C 语法的学习整理&#xff0c;作为个人总结使用。 1. main() 函数 #include <iostream> //使用输入输出流库&#xff08;cin&#xff0c;cout&#xff09;…

使用nginx反向代理kkfile

这篇说一下我解决的思路和方式哈&#xff0c;不一定适用于大家&#xff0c;可以做个参考比如我们的系统服务是http://10.63.25.35:80&#xff0c;而我们的文件服务是在10.63.25.37:8012上&#xff0c;正常不使用代理的话&#xff0c;我们前端调用后端接口&#xff0c;后端调用k…

【低成本扩容】动态扩容实战指南

面对扩容操作时&#xff0c;下面这种操作是否也会迷惑你&#xff1f;下面来为大家解惑~size_t newcapacity 2*_capacity > (_size len)?2*_capacity:(_sizelen); //len为即将插入的字符串有效字符个数//_size为当前字符串有效字符个数//_capacity为当前容量大小//newcapa…

Product Hunt 每日热榜 | 2025-08-14

1. Autumn 标语&#xff1a;为AI初创公司简化的Stripe服务 介绍&#xff1a;Autumn帮助AI初创公司通过只需三个API调用来定价、计量和控制使用情况。基于Stripe搭建&#xff0c;它可以在一个地方管理订阅、使用情况和访问权限。无需复杂的webhooks或后端逻辑&#xff0c;非常…

Scrapy + Django爬虫可视化项目实战(二) 详细版

系列文章 Scrapy + Django爬虫可视化项目实战(一)_django scrapy-CSDN博客 实现技术 Scrapy Django Echarts 引言 可视化部分需要读者具备一定的Django基础!!! 上一个文章我们已经实现了爬取景点的数据,那么接下来就是根据爬取到的数据进行可视化 一、环境搭建 (一) 创…

选择式与生成式超启发算法总结

这里写目录标题Selection HHGeneration HHGPHH示例存在大量针对特定问题设计的启发式算法&#xff0c;近年来学术界提出了一个关键问题&#xff1a;如何选择最合适的启发式方法。这一问题推动了超启发式&#xff08;hyper-heuristic&#xff09;方法的研究发展。超启发式是一种…

NetBIOS 设置

在 Windows 系统中,WINS (Windows Internet Name Service) 和 NetBIOS 紧密相关,主要用于 NetBIOS 名称解析(将计算机名转换为 IP 地址)。WINS 是一个动态数据库,类似于 DNS,但专门用于 NetBIOS 名称解析,适用于早期 Windows 网络(如 Windows NT/2000/XP)。 1. 查看 N…

vue2 + SimpleMindMap 制作思维导图

vue2 SimpleMindMap 制作思维导图 该代码包含SimpleMindMap已知的所有功能&#xff0c;有需要的小伙伴可自行copy&#xff0c;框架使用el-ementui。其中有些图标是阿里巴巴矢量图的图片&#xff0c;可自行进行替换。保姆级教程 以下是vue文件&#xff1a; <template><…

Discord x Pulsar: 使用 Pulsar、Flink 和 Iceberg 搭建流式机器学习平台

本文整理自 Discord 机器学习工程师 David Christle 在 Pulsar Summit NA 上的演讲内容&#xff0c;一起来看 Discord 是如何基于 Pulsar 实现兼顾安全和个性化功能的实时流式机器学习平台的&#xff5e;1. 背景Discord 是一个实时⾳视频通信平台&#xff0c;⽀持⽂本/语⾳/视频…

【数据结构入门】二叉树(2)

目录 1.二叉树遍历顺序 1.1 前序&#xff08;先根&#xff09;遍历 1.2 中序&#xff08;中根&#xff09;遍历 1.3 后序&#xff08;后根&#xff09;遍历 1.4 层序遍历 1.5 深度优先遍历&广度优先遍历 2.二叉树的遍历 2.1 前根遍历&#xff08;递归&#xff09; …

【电机参数】电压、电流、转速标幺化推算过程

【电机参数】电压、电流、转速标幺化推算过程 文章目录[TOC](文章目录)前言一、标幺化目的——优化计算二、Q15与标幺化的关系三、标幺值计算1.电压标幺值2.电流标幺值3.转速标幺值四、参考资料总结前言 一、标幺化目的——优化计算 不同物理量的量纲和数值范围差异巨大&#…

v-scale-scree: 根据屏幕尺寸缩放内容

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

linux设备驱动之字符设备驱动

一、cdev结构体‌成员/功能‌‌说明‌‌相关操作函数/宏‌‌kobj‌内嵌的kobject对象&#xff0c;用于Linux设备模型管理&#xff0c;实现引用计数和sysfs接口kobject_init()‌owner‌指向拥有该结构体的模块指针&#xff08;通常为THIS_MODULE&#xff09;&#xff0c;防止模块…

★CentOS:MySQL数据备份

一、cp 命令备份特点&#xff1a;优点&#xff1a;备份恢复数据快&#xff1a;直接复制文件&#xff0c;无需进行数据转换和复杂的处理&#xff0c;因此备份恢复速度非常快缺点&#xff1a;需要停止数据库服务&#xff0c;灵活性差&#xff0c;占用空间大&#xff0c;可移植性差…

Python代码规范与静态检查(ruff/black/mypy + pyproject.toml + Makefile)自动化工具链介绍

文章目录**1. 核心工具的作用****(1) black&#xff1a;代码格式化工具****(2) ruff&#xff1a;代码质量检查工具****(3) mypy&#xff1a;静态类型检查工具****2. pyproject.toml&#xff1a;统一配置中心****示例配置**&#xff08;pyproject.toml&#xff09;&#xff1a;*…

软件需求管理过程详解

需求管理过程需求管理是软件工程和系统开发中的核心过程&#xff0c;它确保项目始终围绕正确、稳定且可追溯的需求进行。在复杂系统开发中&#xff0c;需求往往动态变化&#xff0c;需求管理通过系统化的方法控制变更、维护版本、建立追溯关系&#xff0c;从而降低项目风险、保…

MySQL性能优化实战指南:从入门到精通的完整优化体系

MySQL性能优化实战指南&#xff1a;从入门到精通的完整优化体系&#x1f680; 前言&#xff1a;在当今数据驱动的时代&#xff0c;MySQL作为世界上最流行的开源关系型数据库&#xff0c;其性能优化能力直接决定了应用系统的响应速度和用户体验。本文将从多个维度深入探讨MySQL优…

KingbaseES主备读写分离集群安装教程

首先我们先要找数据库集群安装软件和脚本。这里我事先安装一台单机。 [rootlocalhost zip]# mkdir -p /home/kingbase/software [rootlocalhost zip]# scp -r * /home/kingbase/software/ #安装软件和脚本在单机版本的/opt/Kingbase/ES/V9/ClientTools/guitools/DeployTools/z…

electron程序适配loongArch64

一、原始项目 1.原始程序适配arm&#xff0c;x86国产linux设备;新增需求适配loongArch64麒麟v10sp1。 2.原始devDependencies "devDependencies": {"electron": "^17.2.0","electron-builder": "^23.0.3",}二、可能遇到的问…