3、函数和数组


函数

定义函数的格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
{
执行语句;
return 返回值;

}

特殊情况:
功能没有具体的返回值。
这时return的后面直接用分号结束。
返回值类型怎么体现呢?因为没有具体值,所以不可以写具体的数据类型。
在java中只能用一个关键字来表示这种情况。关键字是:void.

总结:没有具体返回值时,返回值类型用void来表示。
注意:如果返回值类型是void,那么函数中的return语句可以省略不写。

函数重载

再同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同,即可。


数组

同一种类型数据的集合,其实数组就是一个容器。

定义数组

格式一: 元素类型[] 数组名 = new 元素类型[元素个数或者数组长度]

格式二:元素类型[] 数组名 = { 元素1,元素2,元素3.....}

内存的划分

1、寄存区

2、本地方法区

3、方法区

4、栈内存:储存的都是局部变量,而且变量所属的作用域一旦结束,该变量就自动释放。

5、堆内存:储存的是数组和对象,凡是new的都建立在堆内存中,其特点有:a、每个实体都有首地址值。b、堆内存中的每个变量都有默认初始化值,根据类型的不同而不同。c、垃圾回收机制。

对数组最基本的操作就是存和取,核心思想就是对角标的操作。

数组排序练习

选择排序和冒泡排序

//数组排序练习,主要练习选择排序和冒泡排序
class  PaiXuText
{
	public static void main(String[] args) 
	{
		int[] arr = { 23, 45, 123, -87, 9, -45};
		System.out.print("选择排序演示\r\n	未排序前数组	");
		printArray(arr);
		xuanZe_2(arr);
		System.out.print("	排序后数组	");
		printArray(arr);
		
		int[] arr2 = { 23, 45, 123, -87, 9, -45};
		System.out.print("冒泡排序演示\r\n	未排序前数组	");
		printArray(arr2);
		maoPao(arr2);
		System.out.print("	排序后数组	");
		printArray(arr2);
	}

	//选择排序是将第一个数依次与后面数相比较,将最小值存于第一个元素上,再类推第二个数,最后以小到大排序。
	public static void xuanZe( int[] arr){

		for (int i = 0; i < arr.length - 1 ; i ++ )
		{
			for (int j = i + 1; j < arr.length ; j ++ )
			{
				if (arr[i] > arr[j])
				{
					swap(arr,i,j);
				}
			}
		}
	}
<span style="white-space:pre">	</span>//性能优化后的方法,考虑到数组排序的性能问题</span>
<span style="white-space:pre">	</span>public static void xuanZe_2( int[] arr){

<span style="white-space:pre">		</span>for (int i = 0; i < arr.length - 1 ; i ++ )
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>int num = arr[i];
<span style="white-space:pre">			</span>int index = i;
<span style="white-space:pre">		</span>for (int j = i + 1; j < arr.length ; j ++ )
<span style="white-space:pre">		</span>{
<span style="white-space:pre">			</span>if (num > arr[j])
<span style="white-space:pre">			</span>{
<span style="white-space:pre">				</span>num = arr[j];
<span style="white-space:pre">				</span>index = j;
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>if (index != i)
<span style="white-space:pre">			</span>swap(arr,i,index);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
	//冒泡排序,是相邻的两个元素比较,把大的元素往后面移,直至数组内从小到大排序
	public static void maoPao(int[] arr)
	{
		for (int i = arr.length - 1; i > 0 ; i -- )
		{
			for (int j = 0; j < i ; j ++ )
			{
				if (arr[j] > arr[j+1])
					swap(arr, j, j+1);
			}
		}
	}
</pre><pre name="code" class="java">	//定义一个互换数组元素的函数
	public static void swap(int[] arr, int i, int j){
	
		int temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}

	//遍历数组并打印
	public static void printArray(int[] arr){
	
		System.out.print("[ ");
		for (int x = 0; x < arr.length ; x++ )
		{
			if (x != arr.length-1)
				System.out.print(arr[x] + ", ");
			else
				System.out.println(arr[x] + " ]");
		}
	}
}

运行结果为



数组常见功能:查找


查表法进制转化练习

class  ArrayText
{
	public static void main(String[] args) 
	{
		toHax(60);
		toBinary(60);
		toOctal(60);
	}
	
	//16进制
	public static void toHax(int num)
	{
		getChange(num, 15, 4);
	}

	//二进制
	public static void toBinary(int num)
	{
		getChange(num, 1, 1);
	}

	//八进制
	public static void toOctal(int num)
	{
		getChange(num, 7, 3);
	}
	//进制转化
	public static void getChange(int num, int base, int offset)
	{
		if (num == 0)
		{
			System.out.print('0');
			return ;
		}
		char[] arr = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
		char[] arr2 = new char[8];
		int pos = arr2.length;
		while(num != 0)
		{
			int x = num&base;
			arr2[--pos] = arr[x];
			num = num >>> offset;
		}
		for (int x = pos; x < arr2.length ; x ++ )
		{
			System.out.print(arr2[x]);
		}
		System.out.println();
	}
}
结果为




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值