Java学习笔记2024/2/4

1. 方法(接2024/2/3笔记)

1.4 方法的内存

package com.angus.method.theMemoryOfMethod_4;public class note {public static void main(String[] args) {//方法的内存 ->讲到内存就要联系内存图来理解//将学习以下3种内存//1.方法调用的基本内存原理//就是进栈出栈//先进后出//和数据结构那个一样//2.方法传递基本数据类型的内存原理//在基本数据类型当中,//变量中存储的是真实的数据//只要是new出来的,都是引用数据类型//引用数据类型当中//变量中存储的是地址值//引用:使用了其他空间中的数据//从内存的角度去解释//基本数据类型:数据值时存储在自己的空间中->栈中//特点:赋值给其他变量,也是赋的真实值//后改前不改,单独用//引用数据类型:数据值存储在其他空间中,自己空间存储的是地址值//特点:赋值给其他变量,赋的是地址值//后改前也改,共用//3.方法传递引用数据类型的内存原理//方法传递基本数据类型的内存原理//传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值//传递引用数据类型的时候,传递的是地址值,形参的改变,会影响到实际参数的值System.out.println("^^");}
}

2. 做题

知识点:

方法

题目1

定义一个方法,该方法能够找出两个小数中的较小值并返回。在主方法中调用方法进行测试。

训练提示

  1. 根据方法的功能描述,方法的参数应该是两个小数。

  2. 要返回两个小数的较小值,所以返回值类型也是小数类型。

解题方案

操作步骤

  1. 定义方法getMin(),方法的参数是double a ,double b。

  2. 在方法中对两个数字进行判断,返回较小值。

  3. 在主方法中调用getMin()方法并接受返回值。

  4. 在主方法中打印结果。

参考代码

package test;
​
public class test1 {public static void main(String[] args) {//定义一个方法,//该方法能够找出两个小数中的较小值并返回。//在主方法中调用方法进行测试。double min =getMin(1.1,2.2);System.out.println(min);System.out.println("^^");}
​public static double getMin(double num1,double num2) {if (num1 < num2) {return  num1;} else {return  num2;}
​}}
​

题目2

定义一个方法,该方法能够找出三个整数中的最大值并返回。在主方法中调用方法测试执行。

训练提示

  1. 根据题意,方法中需要使用三个整数,所以方法参数应该是三个整数类型。

  2. 方法需要有返回值,返回值的类型也是整数类型。

解题方案

操作步骤

  1. 定义方法getMax(),方法的参数是三个int类型变量a,b,c,方法的返回值是int类型。

  2. 在方法中使用多分支if...else...或者三元运算符判断出最大值并返回。

  3. 在主方法中调用getMax()方法并接受返回值。

  4. 在主方法中打印结果。

参考代码

package test;
​
public class test2 {public static void main(String[] args) {//定义一个方法,//该方法能够找出三个整数中的最大值并返回。//在主方法中调用方法测试执行。int max = getMax(1,2,3);System.out.println(max);
​System.out.println("^^");}//定义一个方法,该方法能够找出三个整数中的最大值并返回。在主方法中调用方法测试执行。public static int getMax(int num1,int num2,int num3) {
​int max = num1;
​if (num2 > max) {max = num2;}
​if (num3 > max){max = num3;return max;} else {return max;}
​}
​
}
​

题目3

在主方法中通过键盘录入三个整数。定义一个方法,方法接收三个整数变量,在方法中从大到小依次打印三个变量。执行效果如下:

请输入第一个整数:10
请输入第二个整数:30
请输入第三个整数:20
从大到小的顺序是: 30 20 10 

训练提示

  1. 方法需要接受三个整数,那么方法的形式参数如何定义?

  2. 方法没有返回值的需求,返回值类型是什么?

解题方案

操作步骤

  1. 使用键盘录入分别录入三个整数。

  2. 定义method方法,方法的参数是三个int类型,方法的返回值类型是void。

    2.1. 定义整数变量max用于存储最大值,定义min变量用于存储最小值。

    2.2. 使用if..else..多分支判断语句或者三元运算符计算三个整数中的最大值并赋值给max。

    2.3. 使用if..else..多分支判断语句或者三元运算符计算三个整数中的最小值并赋值给min。

    2.4. 定义变量mid代表中间数,三个整数的和减去max,再减去min,就是中间数的值。

    2.5. 依次打印最大值,中间值和最小值。

  3. 在主方法中调用method方法,传入参数。

参考答案

package test;
​
import java.util.Scanner;
​
public class test3 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个整数:");int num1 = scanner.nextInt();System.out.println("请输入第二个整数:");int num2 = scanner.nextInt();System.out.println("请输入第三个整数:");int num3 = scanner.nextInt();getPrint(num1,num2,num3);
​System.out.println("^^");}//在主方法中通过键盘录入三个整数。定义一个方法,方法接收三个整数变量,在方法中从大到小依次打印三个变量。执行效果如下:////```//请输入第一个整数:10//请输入第二个整数:30//请输入第三个整数:20//从大到小的顺序是: 30 20 10//```public static void getPrint(int num1,int num2,int num3) {
​int max = 0;int min = 0;int mid = 0;
​if (num1 > num2) {max = num1;min = num2;} else {max = num2;min = num1;}
​if (num3 > max){max = num3;}
​System.out.println(max);
​if (num3 < min){min = num3;mid = (num1 + num2 + num3) - max - min;System.out.println(mid);System.out.println(min);} else {mid = (num1 + num2 + num3) - max - min;System.out.println(mid);System.out.println(min);
​}
​}
​
}
​

题目4

数字是有绝对值的,负数的绝对值是它本身取反,非负数的绝对值是它本身。请定义一个方法,方法能够得到小数类型数字的绝对值并返回。请定义方法并测试。

训练提示

  1. 方法的功能是得到一个小数的绝对值,参数应该是一个小数类型。

  2. 绝对值需要被返回,返回值类型应该也是小数类型。

解题方案

操作步骤

  1. 定义一个小数变量num。

  2. 定义获取绝对值的方法,方法的参数是一个double类型,返回值类型是double。

  3. 在方法内部使用if..else..判断。

    3.1. 如果是负数则对负数取反并返回。

    3.2. 如果不是负数则直接返回数字本身。

  4. 在主方法中调用绝对值方法,传入参数num,并接受返回值。

  5. 打印返回的结果。

参考答案

package test;
​
public class test4 {public static void main(String[] args) {double jue = getJue(-1.1);System.out.println(jue);System.out.println("^^");}//数字是有绝对值的,负数的绝对值是它本身取反,非负数的绝对值是它本身。//请定义一个方法,方法能够得到小数类型数字的绝对值并返回。请定义方法并测试。public static double getJue(double num) {
​if (num >= 0) {return num;} else {num = 0 - num;return num;}
​}
​
}
​

题目5

键盘录入一个正整数

定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回

在main方法中打印该数字是几位数

演示格式如下: (1)演示一: 请输入一个整数:1234 控制台输出:1234是4位数字 (2)演示二: 请输入一个整数:34567 控制台输出:34567是5位数字

训练提示

  1. 方法的功能是求有多少位,所以参数是一个,就是要计算的数据。

  2. 题目说要返回,所以方法必须有返回值。

解题方案

操作步骤

  1. 键盘录入一个正整数

  2. 定义获取位数的方法,方法的参数是一个int类型,返回值类型是int。

  3. 在方法内部使用循环获取有多少位

    可以不断的除以10,当结果为0时,循环结束。 除以10的次数,就是数字的位数。

    举例:

    123 除以第一次10之后为:12

    除以第二次10之后为:1

    除以第三次10之后为:0

    表示123是三位数

  4. 在主方法中调用方法,传入参数,并接受返回值。

  5. 打印返回的结果。

参考答案

package test;
​
import java.util.Scanner;
​
public class test5 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("键盘录入一个正整数");int num = scanner.nextInt();int count = getCount(num);System.out.println(num + "是" + count + "位数字");
​System.out.println("^^");}//键盘录入一个正整数////定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回////在main方法中打印该数字是几位数////演示格式如下://(1)演示一://  请输入一个整数:1234//  控制台输出:1234是4位数字//(2)演示二://  请输入一个整数:34567//  控制台输出:34567是5位数字public static int getCount(int num) {int count = 0;while (num > 0){ //123num = num / 10;count++;}return count;}
​
}
​

题目6

需求:

定义一个方法equals(int[] arr1,int[] arr2).

功能:

比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的)

package test;
​
public class test6 {public static void main(String[] args) {int arr1[] = {1,2,3};int arr2[] = {1,2,3};boolean get = equals(arr1,arr2);System.out.println(get);
​System.out.println("^^");}//需求:////  定义一个方法equals(int[] arr1,int[] arr2).////功能:////  比较两个数组是否相等(长度和内容均相等则认为两个数组是相同的)public static boolean equals(int[] arr1,int[] arr2) {
​for (int i = 0; i < arr1.length; i++) {
​if (arr1[i] != arr2[i]) {return false;}
​}return true;
​}
​
}
​

题目7

需求:

定义一个方法fill(int[] arr,int value)

功能:

将数组arr中的所有元素的值改为value

package test;
​
public class test7 {public static void main(String[] args) {int arr[] = {1,2,3};int crr[]=fill(arr,5);for (int i = 0; i < crr.length; i++) {System.out.println(crr[i]);}
​System.out.println("^^");}//需求:////  定义一个方法fill(int[] arr,int value)////功能:////  将数组arr中的所有元素的值改为value -> 服了,我还以为是改为value这个单词全放进去,value表示的意思是值,意思是把原数组的值全改为新给定的值,下次注意,而且还定义了int,更不应该理解错public static int[] fill(int[] arr,int value) {int brr [] = new int[arr.length];
​for (int i = 0; i < arr.length; i++) {
​if (arr[i] != brr[i]) {brr[i] = value;}
​}return brr;
​}
​
}
​

题目8(较难)

需求:

定义一个方法fill(int[] arr,int fromIndex,int toIndex,int value)

功能:

将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)对应的值改为value

package test;
​
public class test8 {public static void main(String[] args) {int arr[] = {1,2,3,4,5,6,7,8,9}; //3,4,5,6  7-3=4  4,5,6,7  toIndex-fromIndex  arr[fromIndex]~arr[toIndex]  brr[index]  index = 0  index++int crr[] = fill(arr,3,7,5);for (int i = 0; i < crr.length; i++) {System.out.println(crr[i]);}
​System.out.println("^^");}//需求:////  定义一个方法fill(int[] arr,int fromIndex,int toIndex,int value)////功能:////  将数组arr中的元素从索引fromIndex开始到toIndex(不包含toIndex)对应的值改为valuepublic static int[] fill(int[] arr,int fromIndex,int toIndex,int value) {int brr[] = new int[toIndex-fromIndex];int index = 0;for (int i = fromIndex; i < toIndex; i++) {if (brr[index] != arr[i]) {brr[index] = value;index++;}}return brr;}}
​

题目9(较难)

需求:

定义一个方法copyOf(int[] arr, int newLength)

功能:

将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始

package test;
​
public class test9 {public static void main(String[] args) {int arr[] = {1,2,3,4,5,6};int crr[] =copyOf(arr,5);for (int i = 0; i < crr.length; i++) {System.out.println(crr[i]);}System.out.println("^^");}//需求:////  定义一个方法copyOf(int[] arr, int newLength)////功能:////  将数组arr中的newLength个元素拷贝到新数组中,并将新数组返回,从索引为0开始public static int[] copyOf(int[] arr, int newLength) {int brr[] = new int[newLength];for (int i = 0; i < newLength; i++) {brr[i] = arr[i];}return brr;}
}
​

题目10(较难)

需求:

定义一个方法copyOfRange(int[] arr,int from, int to)

功能:

将数组arr中从索引from(包含from)开始,到索引to结束(不包含to)的元素复制到新数组中,

并将新数组返回。

package test;
​
public class test10 {public static void main(String[] args) {int [] arr = {1,2,3,4,5,6,7,8,9};int crr[] = copyOfRange(arr,3,7);for (int i = 0; i < crr.length; i++) {System.out.println(crr[i]);}System.out.println("^^");}//需求:////  定义一个方法copyOfRange(int[] arr,int from, int to)////功能:////  将数组arr中从索引from(包含from)开始,到索引to结束(不包含to)的元素复制到新数组中,////  并将新数组返回。public static int[] copyOfRange(int[] arr,int from, int to) {int brr[] = new int[to - from];int index = 0;for (int i = from; i < to; i++) {brr[index] = arr[i];index++;}return brr;}
}
​

题目11(很难)

一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)

888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出

训练提示

  1. 奖项要随机出现,但奖金不是连续的数字,不能被随机产生。能随机产生的只有数组的索引了,可以使用随机索引来代表随机元素。因为索引和元素是一一对应的,

  2. 哪些奖被抽过了,哪些奖没有被抽过,要定义一个数组来存放已经被抽过的奖项。

  3. 每个奖项只能被抽出一次,要写一个方法来控制奖项不重复。

解题方案

使用数组存放多个奖金,再使用另一个数组存放已经被抽过的奖金,使用方法来判断某个奖金是否已经被抽取过。

操作步骤

  1. 定义奖金的数组arr。

  2. 定义数组brr准备存放已经被抽过的奖金,两个数组长度相同。

  3. 定义一个变量index,用户代表数组brr的索引。

  4. 定义方法,判断数组中是否存在某数字,存在返回true,不存在返回false。

  5. 写一个while循环,如果index<arr.length则说明奖项没有被抽完继续抽取。

  6. 在循环中使用随机数产生一个随机索引i。

  7. 使用步骤4的方法判断brr数组中是否包含arr[i]奖金。

  8. 如果不包含,则打印arr[i]奖金,并且把它放入brr数组中代表已经被抽取过,同时index加一。

参考答案

package test;
​
import java.util.Random;
​
public class test11 {public static void main(String[] args) {int arr[] = {2,588,888,1000,10000};int brr[] = new int[5];int index = 0;while (index < arr.length){Random random = new Random();int i = random.nextInt(arr.length);boolean flag = get(brr,arr[i]);if (flag == false) {System.out.println(arr[i]);brr[index] = arr[i];index++;}}System.out.println("^^");}//一个大V直播抽奖,//奖品是现金红包,//分别有{2,588,888,1000,10000}五个奖金。//请使用代码模拟抽奖,打印出每个奖项,//奖项的出现顺序要随机且不重复。//打印效果如下:(随机顺序,不一定是下面的顺序)//888元的奖金被抽出//588元的奖金被抽出//10000元的奖金被抽出//1000元的奖金被抽出//2元的奖金被抽出public static boolean get(int[]brr,int num) {for (int i = 0; i < brr.length; i++) {if (brr[i] == num) {return true;}}return false;}
}
​

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

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

相关文章

协同办公的2024开年大战,打的就是“超级助理”

文|智能相对论 作者|沈浪 开年&#xff0c;腾讯发布了一份报告《影响2024年的十大科技应用趋势》。其中提到&#xff0c;从大脑到Agent&#xff0c;大模型从CoPilot副驾&#xff0c;走向主驾驶。在不久的将来&#xff0c;任何上网的人都将能够拥有由人工智能驱动的个人助手&a…

Java学习-内部类

内部类概述 1.成员内部类 注意&#xff1a; 2.静态内部类 3.局部内部类&#xff08;看看就行&#xff09; 4.匿名内部类 应用场景&#xff1a;通常作为一个参数传给方法 Eg.小猫和小狗都参加游泳比赛

【算法】{画决策树 + dfs + 递归 + 回溯 + 剪枝} 解决排列、子集问题(C++)

文章目录 1. 前言2. 算法例题 理解思路、代码46.全排列78.子集 3. 算法题练习1863.找出所有子集的异或总和再求和47.全排列II17.电话号码的字母组合 1. 前言 dfs问题 我们已经学过&#xff0c;对于排列、子集类的问题&#xff0c;一般可以想到暴力枚举&#xff0c;但此类问题用…

单片机的50个电路

单片机 电源 声音模块 收音机 485 蓝牙 光耦 can 光敏电阻 单片机 矩阵 单片机电路 时钟 ADC 接口电路 红外发射 显示模块 红外接收 蜂鸣器驱动 流水灯 usb供电 烧录电路 数码管 EEPROM LCD1602电路 数码管 max485 红外开关 译码器 移位寄存器 步进电机控制 复位电路 下载电路 …

基于springboot智慧养老平台源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

挑战!贪吃蛇小游戏的实现(1)

引言 相信大家都玩过贪吃蛇这个游戏&#xff01; 玩家控制一个不断移动的蛇形角色&#xff0c;在一个封闭空间内移动。随着时间推进&#xff0c;这个蛇形角色会逐渐增长&#xff0c;通常是通过吞食屏幕上出现的物品&#xff08;如点或者其他标志&#xff09;来实现。每当贪吃…

《低功耗方法学》翻译——附录B:UPF命令语法

附录B&#xff1a;UPF命令语法 本章介绍了文本中引用的所选UPF命令的语法。 节选自“统一电源格式&#xff08;UPF&#xff09;标准&#xff0c;1.0版”&#xff0c;经该Accellera许可复制。版权所有&#xff1a;(c)2006-2007。Accellera不声明或代表摘录材料的准确性或内容&…

Leetcode 3031. Minimum Time to Revert Word to Initial State II

Leetcode 3031. Minimum Time to Revert Word to Initial State II 1. 解题思路2. 代码实现 题目链接&#xff1a;3031. Minimum Time to Revert Word to Initial State II 1. 解题思路 这一题就是一个z算法的题目&#xff0c;算是比较套路的题目了。 关于z算法&#xff0c…

monaco-editor布局篇(二)-自动换行

monaco-editor的换行方式&#xff0c;主要分为3种情况&#xff1a; 不换行按照编辑器宽度换行按照制定列数换行 主要受wordwrap和wordwrapcolumn控制&#xff0c;具体如下&#xff1a; 取值含义off不换行&#xff0c;会一直滚动on换行&#xff0c;文本将在视区宽度内自动换行…

2024年Java架构篇之数据结构与算法面试题

2024年Java实战面试题_java 5 年 面试-CSDN博客 2024年Java架构篇之数据结构与算法面试题 1、判断一个数是否是2的N次方&#xff0c;比如2、4、8、16是6、10不是 1:01、2:10、3:011、4:100、7:0111、8:1000、15:01111、16:10000 if(n&(n-1) 0) 那么n就是2的次方 n > 1

Linux命令:traceroute命令

目录 traceroute1、简介2、探测原理3、traceroute说明4、实例设置每跳探测数设置跳数探测包使用的基本UDP端口设置6789把对外发探测包的等待响应时间设置为3秒 总结 traceroute 1、简介 traceroute的主要功能是跟踪从IP网络发送到指定主机经过的网关的工具。它利用IP协议的生…

5 分钟让你了解什么是搜索引擎

文章目录 搜索引擎概述基于业务模式分类垂直搜索&#xff08;垂搜&#xff09;通用搜索&#xff08;通搜&#xff09;本地搜索引擎 基于技术实现分类基于关键词的搜索引擎&#xff08;Keyword-based Search Engine&#xff09;语义搜索引擎&#xff08;Semantic Search Engine&…

幻兽帕鲁mac可以玩吗?

《幻兽帕鲁》&#xff08;英文&#xff1a;Palworld&#xff09;是一款近期在 Steam 爆红的动作冒险生存游戏&#xff0c;游戏设置在一个居住着「帕鲁」的开放世界中&#xff0c;玩家可以战斗并捕捉帕鲁&#xff0c;也能用它们来建造基地、骑乘和战斗。 不过目前《幻兽帕鲁》仅…

【Java万花筒】编织数字音符:Java多媒体魔法

Java多媒体处理大全&#xff1a;解锁音视频领域的绝佳工具库 前言 在当今数字化时代&#xff0c;多媒体处理已经成为Java开发者必不可少的一项技能。无论是开发多媒体应用、实时流媒体处理&#xff0c;还是进行视频编辑、音频转码&#xff0c;Java提供了丰富的库和工具。本文…

C语言内存函数:memcpy、memcat、memmove介绍和模拟实现(实用性高,建议三连收藏)

目录 1.memcpy函数 1.1函数介绍 1.2函数示范使用 1.3函数的模拟实现 1.4补充 2.memmove函数 2.1函数介绍 2.2函数的使用示范 2.3函数的模拟实现 3.memcmp(内存比较函数&#xff09; 3.1函数介绍 3.2函数的示范使用&#xff0c;有趣的例子 4.函数补充memset(内存…

【靶场实战】Pikachu靶场RCE漏洞关卡详解

Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Nx02 RCE漏洞概述 RCE漏洞&#xff0c;可以让攻击者直接向后台…

Python语言解释器

Python语言解释器是实现Python编程语言的软件&#xff0c;它负责读取用户编写的Python源代码&#xff0c;并将其一行行地转换和执行。Python是一种解释型语言&#xff0c;这意味着其程序不需要像C或Java那样预先编译成机器码&#xff0c;而是直接由解释器在运行时逐句解析并执行…

【Jenkins】配置及使用|参数化|邮件|源码|报表|乱码

目录 一、Jenkins 二、Jenkins环境搭建 1、下载所需的软件包 2、部署步骤 3、其他 三、Jenkins全局设置 &#xff08;一&#xff09;Manage Jenkins——Tools系统管理->全局工具配置分别配置JDK、Maven、Allure、Git&#xff0c;可以配置路径或者直接选择版本安装 1…

解决zabbix图像中文乱码

使用zabbix查看监控图像信息&#xff0c;发现会有中文乱码现象。 解决方法如下&#xff1a; 1.拷贝windows文字文件到服务器上 C:\Windows\Fonts目录下拷贝自己需要的中文语言文件 2.修改配置文件 vim /usr/share/zabbix/include/defines.inc.php 81行 define(ZBX_GRAPH_F…

从零学算法162

162.峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O…