函数的重载

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

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

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

数组

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

成员变量: 成员变量就是定义在方法之外,类之内的.


以下代码报错:空指针异常

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 < arr.length ; i++){
if(arr[i]>max){ //如果发现有元素比max大,那么max变量就记录该元素。
max = arr[i];
}
}
return max;
}

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

public static void selectSort(int[] arr){

        //把最大值放在首位置。
for(int j = 0; j<arr.length-1; j++){ // 控制的是轮数。
for(int i = j+1 ; i<arr.length ; 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; j<arr.length-1; j++){ // 控制的是轮数。
for(int i = 0 ; i<arr.length-1-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 = arr.length-1;
int min = 0;
int mid = (max+min)/2;
while(true){
if(target>arr[mid]){
min = mid+1;
}else if(target<arr[mid]){
max = mid -1;
}else{
//找到了元素
return mid;
} //没有找到的情况
if (max<min){
return -1;
} //重新计算中间索引值
mid = (min+max)/2;
} }

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

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

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

二维数组 的定义格式:

    数据类型[][] 变量名 = new 数据类型[长度1][长度2];

    长度1:一条烟有多少盒。

    长度2: 一盒烟有多少根。

二维数组 的初始化方式:

    动态初始化:

        数据类型[][] 变量名 = new 数据类型[长度1][长度2];

    静态初始化:

        数据类型[][]  变量名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...} ..}

    int[][] arr = new int[3][4];
System.out.println("二维数组的长度:"+ arr.length); // 3

java基础——函数、数组、排序的更多相关文章

  1. 【java基础】选择排序and冒泡排序

    前言 : 今天学习的是J2SE视频里的第五章,数组部分,它里面留了一个经典的作业,就是让我们去从1倒9按一定规格排序,这让我想起了学习vb的时候最最让我头疼的两种排序方法,选择排序法 和 冒泡排序法. ...

  2. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  3. Java基础教程——数组

    数组 Java数组:用于存储同一种数据类型的多个数据. Java数组本身是一种数据类型--引用类型. 类(String.Scanner等大写字母开头的类型)也属于引用类型,int.double等基本类 ...

  4. Java基础-反转数组

    /** java基础,如何将一个数组反转,思考方法采用使用临时变量的情况下,将第一个元素与第二个元素进行反转,需要定义两个索引,一个记录数组的第一个元素与最后一个元素,将其两两交换* */public ...

  5. java基础(十) 数组类型

    1. 数组类简介   在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) { Class ...

  6. java 基础概念 -- 数组与内存控制

    问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...

  7. Java基础:数组的声明,循环,赋值,拷贝。

    数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...

  8. java 基础知识-数组的7种算法(排序、求和、最值、遍历...)

    遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...

  9. JAVA基础--函数和数组03

    一.函数的引入 函数的引入 能把相同的代码都抽出来,放到一个地方,等到要使用的时候再去调用,如果有不同的数据,在使用的时候传递就行了: 2. 函数的概念:函数又叫方法,一段独立于代码块 直接卸载类中, ...

  10. Java基础总结--数组

    ---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...

随机推荐

  1. C#连接小智服务器并将音频解码播放过程记录

    前言 最近小智很火,本文记录C#连接小智服务器并将音频解码播放的过程,希望能帮助到对此感兴趣的开发者. 如果没有ESP-32也想体验小智AI,那么这两个项目很适合你. 1.https://github ...

  2. 探秘Transformer系列之(23)--- 长度外推

    探秘Transformer系列之(23)--- 长度外推 目录 探秘Transformer系列之(23)--- 长度外推 0x00 概述 0x01 背景 1.1 问题 1.2 解决思路 1.3 微调的 ...

  3. C 图上的遍历算法

    图上的遍历算法 广度优先搜索 BFS 概念 广度优先搜索(Breadth-First Search)是一种图遍历算法,用于在图或树中按层次逐层访问节点.它从源节点(起始节点)开始,首先访问源节点的所有 ...

  4. Python复制单个文件为多个脚本

    编写背景: 由于线上用户反馈媒体添加页加载时间很长,猜测是由于本地视频/图片数量过多引起,于是编写此脚本以便快速生成大量测试视频 代码如下: # coding=utf-8 import os impo ...

  5. springAPI对事物支持之注解式配置

    一.无Spring核心配置文件:applicationContext.xml下开启注解式事物 @Configuration @EnableTransactionManagement public cl ...

  6. 剑气纵横千行码:AI写就的设计模式侠客行助您仗剑走天涯

    烟火里的江湖旧忆 暮色里,代码侠的电动车在巷口急刹,外卖箱里的热汤晃出细响,恍惚间竟像当年工厂堡锻造炉的轰鸣.难得休息之余,他抹了把额头的汗,扶了扶常开网约车的腰,摸了摸自己晒黑的脸,偶感那颠炒粉的手 ...

  7. mysql8的sql_mode不起作用

    如果sql_mode似乎没有起作用,可能是由以下几个原因造成的: 配置文件位置不正确:确保my.ini文件位于MySQL服务器实际读取配置的位置.对于Windows系统,这通常是MySQL安装目录下的 ...

  8. rider更新2021.2

    Rider 的新功能Rider 2021.2 带有增强的 C# 语言支持,包括对代码分析.可为空引用类型和源生成器的大量更新.对于 Web 开发人员,此版本支持 ASP.NET Core Endpoi ...

  9. maven-helper解决依赖冲突

    idea中可以使用maven-helper解决依赖冲突

  10. SpringMVC的注解

    @RequestMapping 指定请求的路径 value :用于指定请求的url.它和path属性的作用是一样的. path :路径 method :请求的方法.RequestMethod.GET, ...