_note_06

1.说一说函数的按地址传递和按值传递,他们的区别是什么?


函数的参数传递方式可以分为按地址传递(也称为按引用传递)和按值传递两种方式。按值传递是指将实际参数的值复制给形式参数,即在函数调用时,实际参数的值被复制到函数的形式参数中。在函数内部对形式参数的修改不会影响到实际参数的值。按地址传递是指将实际参数的地址(指针)传递给形式参数,即在函数调用时,实际参数的地址被传递给函数的形式参数。在函数内部对形式参数的修改会影响到实际参数的值。区别如下:
1. 按值传递是将实际参数的值复制给形式参数,而按地址传递是将实际参数的地址传递给形式参数。
2. 按值传递不会改变实际参数的值,而按地址传递会改变实际参数的值。
3. 按值传递适用于基本数据类型,如int、float等,而按地址传递适用于引用类型,如数组、对象等。
4. 按值传递在函数调用时会产生额外的内存开销,因为需要复制实际参数的值,而按地址传递则不需要复制实际参数的值,只需要传递地址。需要注意的是,在Java中,所有的参数传递都是按值传递,即无论是基本数据类型还是引用类型,都是将实际参数的值复制给形式参数。但对于引用类型,复制的是对象的引用(地址),因此在函数内部可以修改对象的属性,但不能修改对象的引用。

2.如何获取数组中元素的个数

int[] array = {1, 2, 3, 4, 5};
int length = array.length;
System.out.println("数组中元素的个数为:" + length);

3.从内存的角度说一说什么是数组?


从内存的角度来说,数组是一段连续的内存空间,用于存储相同类型的多个元素。数组中的每个元素占据相同大小的内存空间,并按照顺序排列。在内存中,数组的元素可以通过索引来访问。索引是一个整数值,用于表示数组中元素的位置。数组的第一个元素的索引通常为0,第二个元素的索引为1,以此类推。当创建一个数组时,内存会分配足够的连续空间来存储数组的元素。数组的大小在创建时固定,无法动态改变。每个元素占据的内存空间取决于数组元素的类型,例如,一个int类型的数组中的每个元素通常占据4个字节的内存空间。通过索引,我们可以直接访问数组中的元素,而不需要遍历整个数组。这是因为数组的内存空间是连续的,通过索引可以计算出元素的内存地址,从而快速访问到指定位置的元素。需要注意的是,数组的大小在创建时就确定了,无法动态增加或减少。

4.从数据类型的角度说一说什么是数组?


从数据类型的角度来说,数组是一种数据结构,用于存储相同类型的多个元素。它是一个固定大小的、连续的内存区域,用于存储一系列的元素。数组的元素可以是任意数据类型,包括基本数据类型和引用数据类型。在创建数组时,需要指定数组的类型和大小。数组的大小在创建时确定,并且无法动态改变。通过索引,可以访问数组中的元素。索引是一个整数值,用于表示数组中元素的位置。数组的第一个元素的索引通常为0,第二个元素的索引为1,以此类推。数组的好处是可以通过索引快速访问和修改元素,因为数组的内存空间是连续的。此外,数组还可以进行一些基本的操作,如添加、删除、排序等。总结起来,从数据类型的角度来说,数组是一种用于存储相同类型元素的固定大小、连续的数据结构。它通过索引来访问和操作元素,提供了快速的数据访问和处理能力。

5.说说你目前知道的异常有?什么情况下会产生这些异常?


在Java中,有许多异常类型,每个异常类型都代表了不同的错误或异常情况。以下是一些常见的异常类型和它们可能发生的情况:1. NullPointerException(空指针异常):当尝试访问一个空对象的属性或调用一个空对象的方法时,会抛出该异常。2. ArrayIndexOutOfBoundsException(数组下标越界异常):当尝试访问数组中不存在的索引位置时,会抛出该异常。3. ClassCastException(类转换异常):当试图将一个对象强制转换为不兼容的类类型时,会抛出该异常。4. ArithmeticException(算术异常):当进行非法的算术运算,如除以零时,会抛出该异常。5. FileNotFoundException(文件未找到异常):当试图打开或读取一个不存在的文件时,会抛出该异常。6. IOException(输入输出异常):当发生输入或输出操作失败时,会抛出该异常,如读写文件、网络通信等。7. IllegalArgumentException(非法参数异常):当传递给方法的参数不符合方法的预期要求时,会抛出该异常。8. InterruptedException(中断异常):当一个线程在等待、休眠或阻塞状态时,被其他线程中断时,会抛出该异常。9. NumberFormatException(字符串解析异常) : 在Java中,如果需要将字符串转换为整数、浮点数等基本数据类型,可以使用相应的包装类提供的静态方法进行转换。如果字符串无法解析为相应的数据类型,这些方法会抛出NumberFormatException异常。这些异常是Java中常见的一些异常类型,它们代表了不同的错误或异常情况。在编写代码时,应该注意捕获和处理这些异常,以保证程序的稳定性和健壮性。

6.思考:不定义第三个变量的情况下,如何交换两个变量的值?

package _09182023.homework_06;/**** 不定义第三个变量的情况下,如何交换两个变量的值**/
public class _6 {public static void main(String[] args) {int a = 5;int b = 10;System.out.println("交换前:");System.out.println("a = " + a);System.out.println("b = " + b);a = a + b;b = a - b;a = a - b;System.out.println("交换后:");System.out.println("a = " + a);System.out.println("b = " + b);}}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7.编程:封装一个函数,任意输入一个数判断这个数是否是质数,如果是则返回true,不是在返回false

package _09182023.homework_06;/**** 封装一个函数,任意输入一个数判断这个数是否是质数,如果是则返回true,不是在返回false**/
public class _7 {public static void main(String[] args) {int num = 17;boolean isPrime = isPrimeNumber(num);System.out.println(num + " 是质数吗? " + isPrime);}public static boolean isPrimeNumber(int num) {if (num <= 1) {return false;}for (int i = 2; i <= Math.sqrt(num); i++) {if (num % i == 0) {return false;}}return true;}}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

8.编程:封装一个函数,对于区间[1,100],输出这个区间内所有的质数

package _09182023.homework_06;/**** 封装一个函数,对于区间[1,100],输出这个区间内所有的质数**/
public class _8 {public static void main(String[] args) {System.out.println("区间[1,100]内的质数有:");printPrimeNumbers(1, 100);}public static void printPrimeNumbers(int start, int end) {for (int num = start; num <= end; num++) {if (isPrimeNumber(num)) {System.out.print(num + " ");}}}public static boolean isPrimeNumber(int num) {if (num <= 1) {return false;}for (int i = 2; i <= Math.sqrt(num); i++) {if (num % i == 0) {return false;}}return true;}}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

9.编程:封装一个函数,对于任意数组,将数组中的所有质数拼接成字符串形式[a,b,c]返回

package _09182023.homework_06;/**** 封装一个函数,对于任意数组,将数组中的所有质数拼接成字符串形式[a,b,c]返回**/
public class _9 {public static void main(String[] args) {int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};String primeNumbers = getPrimeNumbers(nums);System.out.println("数组中的质数为:" + primeNumbers);}public static String getPrimeNumbers(int[] nums) {StringBuilder sb = new StringBuilder();for (int num : nums) {if (isPrimeNumber(num)) {sb.append(num).append(",");}}if (sb.length() > 0) {sb.deleteCharAt(sb.length() - 1);}return "[" + sb.toString() + "]";}public static boolean isPrimeNumber(int num) {if (num <= 1) {return false;}for (int i = 2; i <= Math.sqrt(num); i++) {if (num % i == 0) {return false;}}return true;}}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

10.分析并编程:自己准备数组画图分析冒泡排序算法的过程,并写出冒泡排序算法

冒泡排序

冒泡排序算法是一种简单的排序算法,它的基本思想是将相邻的元素两两比较,如果前面的元素大于后面的元素,则交换它们的位置。通过一轮比较和交换,可以将最大的元素移动到数组的末尾。然后再对剩下的元素进行同样的操作,直到整个数组排序完成。下面是一个数组的冒泡排序过程的图示:原始数组:[5, 3, 8, 6, 4]第一轮排序:比较5和3,交换位置,比较5和8,不交换位置,比较8和6,交换位置,比较8和4,交换位置。此时数组变为:[3, 5, 6, 4, 8]第二轮排序:比较3和5,不交换位置,比较5和6,不交换位置,比较6和4,交换位置。此时数组变为:[3, 5, 4, 6, 8]第三轮排序:比较3和5,不交换位置,比较5和4,交换位置。此时数组变为:[3, 4, 5, 6, 8]第四轮排序:比较3和4,不交换位置。此时数组已经排好序,排序完成。通过上面的图示可以看出,在每一轮排序中,都会将当前未排序部分中最大的元素移动到末尾。因此,需要进行n-1轮排序,才能将整个数组排序完成。冒泡排序算法的时间复杂度为O(n^2),其中n为数组的长度。

package _09182023.homework_06;/**** 冒泡排序**/import java.util.Scanner;public class _10 {public static void main(String[] args) {int[] target = { 5, 3, 8, 6, 4 };System.out.println( "原始数组为: " );for ( int v: target ) {System.out.print( v + "\t" );}bubbleSort( target );}/**** 冒泡排序* @param arr*/public static void bubbleSort(int[] arr) {int n = arr.length;// 需要进行n-1轮排序for (int i = 0; i < n-1; i++) {// 每一轮排序将最大的元素放到末尾for (int j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {// 交换位置int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}System.out.println( "\n" + "数组排序: " );for ( int v: arr ) {System.out.print( v + "\t" );}}}

11.分析并编程:自己准备数组画图分析选择排序算法的过程,并写出选择排序算法

选择排序

选择排序算法是一种简单的排序算法,它的基本思想是每次从未排序部分选择最小(或最大)的元素,并将其放到已排序部分的末尾。通过不断选择最小(或最大)的元素,将数组逐步排好序。下面是一个数组的选择排序过程的图示:原始数组:[5, 3, 8, 6, 4]第一轮排序:找到最小的元素3,并将其与第一个元素交换位置。此时数组变为:[3, 5, 8, 6, 4]第二轮排序:在剩下的未排序部分中找到最小的元素4,并将其与第二个元素交换位置。此时数组变为:[3, 4, 8, 6, 5]第三轮排序:在剩下的未排序部分中找到最小的元素5,并将其与第三个元素交换位置。此时数组变为:[3, 4, 5, 6, 8]第四轮排序:在剩下的未排序部分中找到最小的元素6,并将其与第四个元素交换位置。此时数组变为:[3, 4, 5, 6, 8]经过n-1轮排序,整个数组排序完成。通过上面的图示可以看出,在每一轮排序中,都会从未排序部分选择最小的元素,并将其放到已排序部分的末尾。因此,需要进行n-1轮排序,才能将整个数组排序完成。选择排序算法的时间复杂度为O(n^2),其中n为数组的长度。

package _09182023.homework_06;/**** 选择排序**/
public class _11 {public static void main(String[] args) {int[] arr = {5, 3, 8, 6, 4};System.out.println("原始数组: ");printArray(arr);selectionSort(arr);System.out.println("排序后数组: ");printArray(arr);}public static void selectionSort(int[] arr) {int n = arr.length;for (int i = 0; i < n-1; i++) {int minIndex = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}int temp = arr[minIndex];arr[minIndex] = arr[i];arr[i] = temp;System.out.println("第" + (i+1) + "轮排序后数组: ");printArray(arr);}}public static void printArray(int[] arr) {for (int num : arr) {System.out.print(num + " ");}System.out.println();}}

12.编程:封装一个函数,申明整型数组,存放用户循环输入的数据,首尾倒置输出。

package _09182023.homework_06;import java.util.Scanner;/**** 封装一个函数,申明整型数组,存放用户循环输入的数据,首尾倒置输出**/
public class _12 {public static void main(String[] args) {int[] nums = getUserInput();System.out.println("原始数组:");printArray(nums);reverseArray(nums);System.out.println("倒置数组:");printArray(nums);}public static int[] getUserInput() {Scanner scanner = new Scanner(System.in);System.out.print("请输入数组的长度:");int length = scanner.nextInt();int[] nums = new int[length];System.out.println("请输入数组的元素:");for (int i = 0; i < length; i++) {nums[i] = scanner.nextInt();}return nums;}public static void reverseArray(int[] nums) {int start = 0;int end = nums.length - 1;while (start < end) {int temp = nums[start];nums[start] = nums[end];nums[end] = temp;start++;end--;}}public static void printArray(int[] nums) {for (int num : nums) {System.out.print(num + " ");}System.out.println();}}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

13.编程:申明浮点型数组,存放有序数据,让用户输入搜索数据,使用二分查询法查询用户输入的数据在索引为几的元素,或无此数据。

package _09182023.homework_06;import java.util.Scanner;/**** 申明浮点型数组,存放有序数据,让用户输入搜索数据,* 使用二分查询法查询用户输入的数据在索引为几的元素,或无此数据。**/
public class _13 {public static void main(String[] args) {double[] nums = {1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0, 10.1};System.out.print("请输入要搜索的数据:");Scanner scanner = new Scanner(System.in);double target = scanner.nextDouble();int index = binarySearch(nums, target);if (index != -1) {System.out.println("数据 " + target + " 在索引 " + index + " 的位置。");} else {System.out.println("无此数据。");}}public static int binarySearch(double[] nums, double target) {int left = 0;int right = nums.length - 1;while (left <= right) {int mid = (left + right) / 2;if (nums[mid] == target) {return mid;} else if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1;}}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

探索云原生数据库技术:构建高效可靠的云原生应用

数据库是应用开发中非常重要的组成部分&#xff0c;可以进行数据的存储和管理。随着企业业务向数字化、在线化和智能化的演进过程中&#xff0c;面对指数级递增的海量存储需求和挑战以及业务带来的更多的热点事件、突发流量的挑战&#xff0c;传统的数据库已经很难满足和响应快…

2023年终总结——跌跌撞撞不断修正

目录 一、回顾1.一月&#xff0c;鼓足信心的开始2.二月&#xff0c;焦躁不安3.三月&#xff0c;路还是要一步一步的走4.四月&#xff0c;平平淡淡的前行5.五月&#xff0c;轰轰烈烈的前行6.六月&#xff0c;看事情更底层透彻了7.七月&#xff0c;设计模式升华月8.八月&#xff…

04hive数仓内外部表复杂数据类型与分区分桶

hive内部表和外部表 默认为内部表&#xff0c;外部表的关键字 &#xff1a;external内部表&#xff1a;对应的文件夹就在默认路径下 /user/hive/warehouse/库名.db/外部表&#xff1a;数据文件在哪里都行&#xff0c;无须移动数据 # students.txt 1,Lucy,girl,23 2,Tom,boy,2…

Kafka的分区机制

Kafka的分区机制是其核心功能之一&#xff0c;旨在提高可扩展性和并行处理能力。下面概述了Kafka分区的基本概念和工作原理&#xff1a; Kafka分区基本概念 分区&#xff08;Partition&#xff09;&#xff1a;Kafka中的主题&#xff08;Topic&#xff09;可以细分为多个分区…

政安晨:【深度学习处理实践】(五)—— 初识RNN-循环神经网络

RNN&#xff08;循环神经网络&#xff09;是一种在深度学习中常用的神经网络结构&#xff0c;用于处理序列数据。与传统的前馈神经网络不同&#xff0c;RNN通过引入循环连接在网络中保留了历史信息。 RNN中的每个神经元都有一个隐藏状态&#xff0c;它会根据当前输入和前一个时…

Java EE之wait和notify

一.多线程的执行顺序 由于多个线程执行是抢占式执行&#xff0c;就会导致顺序不同&#xff0c;同时就会导致出现问题&#xff0c;就比如俩个线程同时对同一个变量进行修改&#xff0c;我们难以预知执行顺序。 但在实际开发中&#xff0c;我们希望代码按一定的逻辑顺序执行&am…

计算机视觉——P2PNet基于点估计的人群计数原理与C++模型推理

简介 人群计数是计算机视觉领域的一个核心任务&#xff0c;旨在估算静止图像或视频帧中的行人数量。在过去几十年中&#xff0c;研究人员在这个领域投入了大量的精力&#xff0c;并在提高现有主流基准数据集性能方面取得了显著进展。然而&#xff0c;训练卷积神经网络需要大规…

matlab阶段学习笔记小节2

syms定义符号变量 求极限 第二题 第三题 limit(y,n,inf);求的的函数y关于自变量n在无穷处&#xff08;inf&#xff09;的极限 exp(2)即指数为2&#xff0c;底为e,也就是e^2 求导数 第一题 log(x)默认是以e为底的指数函数&#xff0c;也就是ln(x). 使用diff(f)对函数进行求…

算法-双指针、BFS与图论-1113. 红与黑

题目 思路 本题相当于问BFS中的当前点所在的区域连通块有多少个 Flood Fill算法 &#xff08;可参考以下链接&#xff1a;洪水覆盖算法(Flood Fill)&#xff1a;颜色填充-CSDN博客&#xff09;本题用DFS实现Flood Fill算法DFS是否需要恢复现场&#xff1a;&#xff08;重要&am…

新IDEA电脑环境设置

1.设置UTF-8 2.Maven 3.JRE选对

【漏洞复现】华三用户自助服务产品dynamiccontent.properties.xhtml接口处存在RCE漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

VUE+HBuilder的uniapp技术路线开发应用使用总结

使用总结 本来想做一个记录日常数据的应用&#xff0c;主要在Android端使用&#xff0c;后来发现在uniapp中使用sqllite数据库不是像原生中那样简单(所以当前准备去进行另一个路线&#xff0c;就是给我使用的电脑都安装一个portalble的服务端&#xff0c;用来记录数据&#xf…

java中使用rabbitmq

文章目录 前言一、引入和配置1.引入2.配置 二、使用1.队列2.发布/订阅2.1 fanout(广播)2.2 direct(Routing/路由)2.3 Topics(主题)2.4 Headers 总结 前言 mq常用于业务解耦、流量削峰和异步通信,rabbitmq是使用范围较广,比较稳定的一款开源产品,接下来我们使用springboot的sta…

角蜥优化算法 (Horned Lizard Optimization Algorithm ,HLOA)求解无人机路径优化

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化飞行时间和节省能量消耗。 二、算法介…

数据结构:图及相关算法讲解

图 1.图的基本概念2. 图的存储结构2.1邻接矩阵2.2邻接表2.3两种实现的比较 3.图的遍历3.1 图的广度优先遍历3.2 图的深度优先遍历 4.最小生成树4.1 Kruskal算法4.2 Prim算法4.3 两个算法比较 5.最短路径5.1两个抽象存储5.2单源最短路径--Dijkstra算法5.3单源最短路径--Bellman-…

Dataset 读取数据

Dataset 读取数据 from torch.utils.data import Dataset from PIL import Image import osclass Mydata(Dataset):def __init__(self,root_dir,label_dir):self.root_dir root_dir #根目录 dataset/trainself.label_dir label_dir #标签的后面链接目录 ants_ima…

windows系统玩游戏找不到d3dx9_43.dll缺失,无法启动此程序的解决方法

今日&#xff0c;我们要深入讨论d3dx9_43.dll文件的重要性及其缺失问题。最近&#xff0c;我也遇到了这个文件丢失的困扰&#xff0c;因此想借此机会与大家分享如何解决d3dx9_43.dll缺失的问题。 一.电脑d3dx9_43.dll丢失会提示什么&#xff1f; 关于电脑提示d3dx9_43.dll丢失…

神经网络实战前言

应用广泛 从人脸识别到网约车&#xff0c;在生活中无处不在 未来可期 无人驾驶技术便利出行医疗健康改善民生 产业革命 第四次工业革命——人工智能 机器学习概念 机器学习不等价与人工智能20世纪50年代&#xff0c;人工智能是说机器模仿人类行为的能力 符号人工智能 …

【环境配置】Linux MySQL8 忘记密码解决措施

本片博客介绍 Linux 操作系统 Ubuntu 下&#xff0c;MySQL8 忘记密码怎么重新设置&#xff0c;笔者亲测有效&#xff0c;分享给大家。 查看 MySQL 版本 $ mysql --version停止 MySQL 服务器&#xff0c;并查看状态是否变更为 Server shutdown complete # 等价命令sudo syste…

Django简易用户登入系统示例

Django简易用户登入系统示例 1&#xff09;添加url和函数的对应关系&#xff08;urls.py) urlpatterns [ path(login/, views.login), #login:url路径&#xff0c;views.login:对应的函数 ]2&#xff09;添加视图函数&#xff08;views.py) def login(req):if…