函数:
特点:
1,程序中一段独立的小程序。
2,该程序实现了独立功能。
3,被调用才会被执行。
4,可以被重复使用。
如何定义一个函数呢?
1,明确该功能运算后的结果。其实是为了明确函数的返回值类型。
2,明确该功能实现过程中,是否有未知内容参与运算。其实是为了明确函数的参数列表。
int add(int x,int y)
{
return x+y;
}
main()
{
int x = add(4,5);
System.out.println("x="+x);
}
注意:对于一个功能没有具体返回值的时候,用void来表示。这时函数内可以不用书写return语句。
函数的特性:重载。
定义:一个类中,可以存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
通常在功能时,如果功能一致那么没有必要定义过多的功能名称,用同一个即可。
在该功能实现的时候所需的参数有不同。
int add(int x,int y)
{
return x+y;
}
int add(int x,int y,int z)
{
return x+y+z;
}
main()
{
add(3,4,6);
}
/*
需求:
思路:
*/
boolean compare(int x,int y)
{
/*
if(x==y)
return true;
else
return false;
*/
//return (x==y)?true:false;
return x==y;
}
注意:
定义函数时,建议函数内的代码不过长,将函数的多个小功能进行再次的函数封装。
---------------------------------------------
数组:
定义:同一类型数据的集合。
定义格式:
1,元素类型[] 数组名称 = new 元素类型[数组长度];
2,元素类型[] 数组名称 = {3,4,1,6};
好处:可以数组中的元素进行编号。从0开始。
什么时候使用数组呢?
当元素较多时,为了便于操作,需要将这些元素进行临时存储。那么数组就是该临时存储的一种体现形式。
也可以称之为容器。
为了操作数组中的元素,明确元素的个数。数组实体提供了一个属性length.
int[] arr = new int[2];
在内存中分配情况。
1,在堆内存中建立一个数组实体,并划分了两个元素空间。
并将这个两个空间进行了默认初始化。
2,在栈内存中定义一个数组类型的变量arr。
3,将堆内存中的数组实体的内存地址值赋给了变量arr。
4,arr就指向了该数组实体。
基本数据类型和引用数据类型的区别:
基本数据类型是将数据存入变量中。
引用数据类型存放的是实体的地址,用来引用实体。
该实体可以被多个引用所指向。
栈内存:
存放的是局部变量,当该局部变量作用的范围结束时,该变量会自动释放。
堆内存:
存放的是数组和对象,也就是实体。
1,每一个实体都有内存地址值。
2,该内存中的变量都有默认初始化值。
3,垃圾回收机制回收。
数组在使用时需要注意的事项:
1,数组角标越界异常:ArrayIndexOutOfBoundsException
当使用到数组中不存在的角标时,就会发生该异常。注意,该异常出现的运行时期。
2,空指针异常:NullPointerException.
当引用数据类型值为null时,还在操作实体,就会发生该异常。
----------------------
数组的常见操作:
1,遍历。通常要获取数组中的元素,都需要遍历动作。
获取元素原理:其实就是通过角标,以及角标的不断变化。
2,获取最值。
思路:
这些元素都需要比较,而且比较时,需要将比较大的记录下来。
当都比完时,最后记录的那个就是最值。
步骤:
1,定义一个变量记录住比较大的值。那么该变量在定义时,如何初始化呢?
初始化为数组中的任意一个元素即可。或者初始化为数组中的任意一个角标即可。
2,需要元素自动的比一下。使用到了循环结构。
在循环过程中加入条件。只要有比该变量大的值就将其记录。
/*
获取整形数组最大的值。
*/
public static int getMax(int[] arr)
{
int max = arr[0];
for(int x=1; x<arr.length; x++)
{
if(arr[x]>max)
max = arr[x];
}
return max;
}
/*
获取整形数组最小的值。
*/
public static int getMin(int[] arr)
{
int min = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]<arr[min])
min = x;
}
return arr[min];
}
3,排序。
选择排序:
原理:指定一个位置,不断的使用该位置上的元素与其他元素进行比较。
如果满足条件,进行元素的换位,继续使用该位置元素进行下一次比较。
特点:内循环结束一次,在起始位出现最值。
public static void selectSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=x+1; y<arr.length; x++)
{
if(arr[x]>arr[y])
{
swap(arr,x,y);
}
}
}
}
private static void swap(int[] arr,int x,int y)
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
冒泡排序:
原理:数组中相邻两个元素进行比较,满足条件,换位置。
特点:内存换结束一次,在最末位出现最值。
public static void bubbleSort(int[] arr)
{
for(int x=0; x<arr.length-1; x++)
{
for(int y=0; y<arr.length-x-1; y++)
{
if(arr[y]>arr[y+1])
{
swap(arr,y,y+1);
}
}
}
}
实际开始时,如果用到了排序,要使用java提供的方式,Arrays.sort(arr);//默认就是升序的。
4,查找。
1.获取指定数据在数组中的第一次出现的位置。
public static int getIndex(int[] arr,int key)
{
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1;
}
2,对于一个有序的数组这样的查找是低效的。
为了提高效率,来了一个折半查找。
前提:必须是有序的数组。
思路:
通过头角标和尾角标的和除以2,取中间角标的元素进行比较。
如果要找元素大于中间角标元素,那么查找范围减少到一半,再次在剩下一半中继续折半。
但这时头角标或者尾角标在变化。
public static int halfSearch(int[] arr,int key)
{
int max,min,mid;
max = arr.length-1;
min = 0;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
public static int halfSearch(int[] arr,int key)
{
int max,min,mid;
max = arr.length-1;
min = 0;
while(min<=max)
{
mid = (max+min)/2;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
----------------------------------------
二维数组:
其实就是数组中的数组。
格式:int[][] arr = new int[3][];
System.out.println(arr[0]);//null
arr[0] = new int[2];
System.out.println(arr[0])//该数组的哈希值。
arr[1] = new int[3];
arr[2] = new int[1];
int[] arr = {{20,30,12,89},{4,21,6}};
int sum = 0;
for(int x=0; x<arr.length; x++)
{
for(int y=0; y<arr[x].length; y++)
{
sum = sum + arr[x][y];
}
}
System.out.println("sum="+sum);
int[] x,y[];//int[] x; int[][] y; int[] x ;
x = y[0];
x[0] = y[0];
x[0] = y;
x = y;
分享到:
相关推荐
在Java编程语言中,数组是一种特殊的数据结构,用于存储...通过这个实例,我们可以深入理解Java中一维数组的创建、初始化和遍历的基本概念,这对于后续学习更复杂的数组操作,如多维数组和数组操作函数,奠定了基础。
在Java中,数组的复制分为浅拷贝和深拷贝两种。浅拷贝仅复制数组本身,不复制其元素,而深拷贝则会复制整个对象包括嵌套的对象。对于基本类型数组,复制过程就是简单的内存复制;对于引用类型数组,浅拷贝仅复制...
总的来说,"Java多线程基础-01、数组概述"的学习将帮助你理解如何在Java中创建和管理线程,以及如何在多线程环境下安全地使用数组。通过深入学习这部分内容,你将具备编写高效并发程序的基础,为后续的多线程编程...
在Java中,我们可以通过链表和数组这两种不同的方式来实现栈。 1. 链表实现栈: - **链表栈定义**:链表栈是一种基于链表结构的栈,每个节点包含数据和指针,使得数据在链表中按照后进先出的顺序排列。 - **链表...
总结来说,JNI为Java和C/C++之间的通信提供了一种强大而灵活的方式。通过学习如何访问和操作简单类型数组,我们可以利用C/C++的性能优势处理大规模数据或执行低级操作,同时保持Java代码的可移植性和易维护性。在...
相比之下,Java等其他编程语言可以直接通过函数返回数组,但在C/C++中,我们通常采用两种方法来实现这一功能。 #### 方法一:返回指向数组的指针 第一种常见的方法是通过返回一个指向数组的指针。这种方法的核心...
在自定义数据排序中,通常我们需要提供一个比较函数或比较器(Comparator),以便程序知道如何根据我们的需求来比较和排序这些非基本类型的数据。 1. **自定义数据类型**:在编程中,除了基本数据类型如整型、浮点...
下面将深入探讨如何在Java中实现对象数组向JSON的转换,并反过来将JSON字符串转换为Java对象数组,同时也会提及一些相关技术和代码示例。 ### Java对象数组转JSON 首先,我们来看如何将一个Java对象数组转换成JSON...
Java数组实验 本实验的主要目的是掌握数组相关常用算法和方法的定义和调用。通过本实验,学生将学习如何使用Java语言生成随机整数数组,并将其写入文本文件中。同时,学生还将学习如何从文本文件中读取数据并将其...
通过这个项目,学习者可以深入理解Java的基本概念,如何操作数组,以及如何设计和实现简单的面向对象程序。同时,它也提供了一个实践场景,展示了在没有数据库支持的情况下如何存储和管理数据。尽管它可能不适合大型...
在Java编程中,数组是一种非常基础且重要的数据结构,它允许我们存储同类型...学习和熟练掌握这些数组函数,对于提升Java编程能力是非常有帮助的。在实际开发中,我们应该充分利用这样的工具库,使代码更加简洁、高效。
结合上述内容,下面是一个完整的Java程序,用于打印二维数组的行数和列数: ```java public class ArrayLengthExample { public static void main(String[] args) { int[][] array = { {1, 2, 3}, {4, 5}, {6,...
数值计算方法--插值函数(java实现) 数值计算方法--插值函数(java实现) 数值计算方法--插值函数(java实现) 数值计算方法--插值函数(java实现) 数值计算方法--插值函数(java实现) 数值计算方法--插值函数(java实现) ...
java学习中数组复制函数的调用方法,供java初学者入门参考使用,分享给大家
总结来说,Java中合并两个`byte`数组可以通过创建新的数组并使用`System.arraycopy()`方法来实现。如果需要进一步处理合并后的数组,如反转或加密,可以分别使用自定义函数或Java内置的加密库。这些操作在处理二进制...
Java函数数组是编程中常见的一种数据结构,它用于存储一系列函数引用或函数对象。在Java中,函数不能直接像其他编程语言那样作为变量存储,但可以通过接口、匿名内部类、方法引用来模拟函数数组的效果。这里我们将...
Java 生成随机字符串数组的实例详解 Java 生成随机字符串数组的实例详解是一种常见的编程任务,主要是利用Collections.sort()方法对泛型为String的List进行排序。下面是一个详细的实例详解,介绍了生成随机字符串...
Java函数与数组是编程基础的重要组成部分,特别是在Java中,它们被广泛用于数据处理和逻辑控制。本实验旨在帮助学生深入理解和应用这些概念。 首先,数组是存储一组相同类型数据的集合,可以是一维、二维或多维。在...
总的来说,理解和掌握如何在Java中计算两个数组的差集是一项重要的技能,它有助于你在软件开发过程中实现高效的数据处理逻辑。无论是使用Java 8的Stream API还是传统的循环方法,都为解决问题提供了灵活的选择。在...