热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java基础——函数、数组、排序

函数的重载函数的重载:在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。函数重载的作用:同一个函数名可以出现了不同的函数

函数的重载

函数的重载:在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载。

函数重载的作用: 同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数。

函数重载的要求:
1. 函数名一致。
2. 形参列表不一致。(形式参数的个数或者是对应的数据类型不一致)
3. 与函数的返回值类型是无关的。


数组

数组的定义格式:
数据类型[] 变量名 = new 数据类型[长度];
局部变量: 如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量。

成员变量: 成员变量就是定义在方法之外,类之内的.
数组中的内存分析

数组内存分析2

数组内存分析3
以下代码报错:空指针异常

int[] arr = new int[2];arr = null ; //null 让该变量不要引用任何的对象。 不要记录任何 的内存地址。arr[1] = 10;System.out.println(arr[1]);

空指针异常

数组的初始化方式:

动态初始化:数据类型[] 变量名 = new 数据类型[长度];静态初始化: 数据类型[] 变量名 = {元素1,元素2.....};

如果程序一开始你就已经确定了数据,那么这时候建议使用静态初始化。如果
数据一开始还不太明确,这时候就建议使用动态初始化。

算一个数组的最大值:

public static int getMax(int[] arr){int max = arr[0]; //用于记录最大值 --这里容易出错,如果int max=0;那么在这个数组的所有元素都为负数时,结果会出错for(int i = 1 ; i length ; i++){if(arr[i]>max){ //如果发现有元素比max大,那么max变量就记录该元素。max = arr[i];}}return max;}

选择排序(直接排序):使用一个元素与其他 的元素挨个比较一次,符合条件交换位置。

public static void selectSort(int[] arr){//把最大值放在首位置。for(int j = 0; j1; j++){ // 控制的是轮数。for(int i = j+1 ; i// 找出最大值if(arr[i]>arr[j]){//交换位置int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}

冒泡排序:冒泡排序的思想就是使用相邻的2个元素挨个比较一次,符合条件交换位置

public static void bubbleSort(int[] arr){//把最大值放在首位置。for(int j = 0; j1; j++){ // 控制的是轮数。for(int i = 0 ; i1-j ; i++){ // 找出最大值if(arr[i]>arr[i+1]){//交换位置int temp = arr[i];arr[i] = arr[i+1];arr[i+1] = temp;}}}}

需求:定义一个函数接收一个数组对象和一个要查找的目标元素,函数要返回该目标元素在
数组中的索引值,如果目标元素不存在数组中,那么返回-1表示。

折半查找法(二分法): 使用前提必需是有序的数组。

public static int halfSearch(int[] arr, int target){//定义三个变量分别记录最大、最小、中间的查找范围索引值int max &#61; arr.length-1;int min &#61; 0;int mid &#61; (max&#43;min)/2;while(true){if(target>arr[mid]){min &#61; mid&#43;1;}else if(targetmax &#61; mid -1;}else{//找到了元素return mid;}//没有找到的情况if (max<min){return -1;}//重新计算中间索引值mid &#61; (min&#43;max)/2;}}

排序&#xff08;sort&#xff09;
找元素在数组中的位置(二分查找法) binarySearch
数组转换为字符串 toString();
数组的工具类&#xff08;Arrays&#xff09;&#xff1a;

public static void main(String[] args) {int[] arr &#61; {12,3,1,10,8};//排序的方法Arrays.sort(arr); String info &#61; Arrays.toString(arr);System.out.println("数组的元素&#xff1a;"&#43; info);// 1, 3, 8, 10, 12 int index &#61; Arrays.binarySearch(arr,9);// 二分法查找&#xff08;使用之前要先排序&#xff09; : 如果能在数组中找到对应 的元素&#xff0c;那么就返回该数据的索引值&#xff0c;如果没有找到那么就返回一个负数表示。System.out.println("找到的索引值&#xff1a;"&#43; index);}

数组的特点&#xff1a;
1. 数组只能存储同一种 数据类型的数据。
2. 数组是会给存储到数组中 的元素分配一个索引值的&#xff0c;索引值从0开始&#xff0c;最大的索引值是length-1&#xff1b;
3. 数组一旦初始化&#xff0c;长度固定。
4. 数组中的元素与元素之间的内存地址是连续的。
二维数组&#xff1a; 二维数组就是数组中的数组。

二维数组 的定义格式&#xff1a;数据类型[][] 变量名 &#61; new 数据类型[长度1][长度2];长度1&#xff1a;一条烟有多少盒。长度2&#xff1a; 一盒烟有多少根。二维数组 的初始化方式&#xff1a;动态初始化:数据类型[][] 变量名 &#61; new 数据类型[长度1][长度2];静态初始化&#xff1a;数据类型[][] 变量名 &#61; {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...} ..}int[][] arr &#61; new int[3][4];System.out.println("二维数组的长度&#xff1a;"&#43; arr.length); // 3

推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
author-avatar
超人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有