黑马程序员_Java基础_04数组

---------- Android、Java开发期待与您交流----------
一.数组的声明、创建、初始化
        一维数组的声明方式:
                type[] var;
                type var[];
                声明数组不能指定其长度(数组元素的个数)
       Java中使用关键字new创建数组对象,格式为:
       arrayName = new type[数组元素个数];
    初始化:
       1.动态初始化:数组定义与分配空间和赋值操作分开进行;
       2.静态初始化:在定义数组的同时就为数组元素分配空间并赋值;
       3.默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后每个元素也按照成员变量的规则被隐士初始化。
二.打印数组长度和数组元素
        打印数组元素:for循环和for each循环
        打印数组长度:数组名称.length;
三.数组拷贝:
       1.java.util.Arrays.copyOf(Object src,int lengthlength)
               src代表源数组;length代表拷贝的元素个数,从第角标为零的元素开始复制;该方法的返回类型为和源数组同类型的数组
      2.java.lang.System.arraycopy(Object src,int srcPos,Object dest,int destPos,length);
                Object代表源数组,srcPos代表从源数组的第几个元素开始拷贝,dest代表目标数组,destPos代
       表从源数组拷贝的元素从目标数组的第几个元素位置开始存放,length表示从源数组拷贝的元素个数
四.数组元素排序:
        1.选择排序:第一轮,用数组的第一个元素和其余元素比较,如果其它元素比第一个元素小则互换位置,直到一轮结束,最小的元素排在第一位;第二轮从第二个元素开始  重复之前的动作,直到一轮结束取出次小的元素放在第二个元素的位置;重复操作,直到数组元素顺序排列

    2.冒泡排序:第一轮,从第一个元素开始和相邻元素比较,如果前一个元素大,则交换位置,重复操作直到倒数第二元素和最后一个元素比较完,则最大的元素被交换放在数组最后一个元素的位置;第二轮重复之前的操作,直到找出次大元素;重复操作直到数组元素按升序排列

import java.util.Arrays;

public class ArrayDemo1 {
	
	public static void main(String[] args) {
		String week[];// 声明数组
		int[] score;// 声明数组
		int[] month = new int[12];// 声明并创建数组
		week = new String[] { "Monday", "Tuesday", "Wednesday", "Thursday",
				"Friday", "Saturday", "Sunday" };// 创建数组并赋值
		String[] Dayily = { "Monday", "Tuesday", "Wednesday", "Thursday",
				"Friday", "Saturday", "Sunday" };// 创建数组并赋值
		char[] newYear;
		newYear = new char[] { 'N', 'e', 'w', ' ', 'Y', 'e', 'a', 'r' };// 声明数组、创建数组并为数组赋值
		// 打印数组长度
		int nyLength = newYear.length;
		System.out.println("nyLength:" + nyLength);
		System.out.println("for循环遍历数组:");
		// for循环遍历数组
		for (int i = 0; i < nyLength; i++) {
			System.out.print(newYear[i]);
		}
		System.out.println();
		System.out.println("for each循环遍历数组:");
		// for each循环遍历数组
		for (char ny : newYear) {
			System.out.print(ny);
		}
		System.out.println();
		String[] copy1 = Arrays.copyOf(week, 3);// 数组拷贝
		System.out.println("ArraysArrays.copyOf()数组拷贝结束后的结果:");
		for (int i = 0; i < copy1.length; i++) {
			System.out.print(copy1[i] + "\t");
		}
		char[] copy2 = new char[8];
		System.out.println();
		System.out.println("System.arraycopy()数组拷贝结束后的结果:");
		
		System.arraycopy(newYear, 4, copy2, 0, 4);//数组拷贝
		for (int i = 0; i < copy2.length; i++) {
			System.out.print(copy2[i]);
		}
	}
}
public class ArrayDemo2 {
	// 交换数组元素
	static void swap(int[] arr, int a, int b) {
		int temp;
		temp = arr[a];
		arr[a] = arr[b];
		arr[b] = temp;
	}

	// 选择排序
	static void selectSort(int[] score) {
		for (int i = 0; i < score.length; i++) {
			for (int j = i + 1; j < score.length; j++) {
				if (score[i] > score[j]) {
					swap(score, i, j);
				}
			}
		}
	}

	// 冒泡排序
	static void bubbleSort(int[] score) {
		for (int i = 0; i < score.length; i++) {
			for (int j = 0; j < score.length - 1; j++) {
				if (score[j] > score[j + 1])
					swap(score, j, j + 1);
			}
		}
	}

	public static void main(String[] args) {
		int[] score = new int[] { 78, 35, 55, 92, 49, 36 };
		System.out.println("选择排序:");
		selectSort(score);
		for (int grade : score) {
			System.out.print(grade + "\t");
		}
		score = new int[] { 35, 78, 49, 36, 55, 92 };
		System.out.println("冒泡排序:");
		bubbleSort(score);
		for (int grade : score) {
			System.out.print(grade + "\t");
		}
	}
}

public class ArrayDemo3 {

	// 查找某个元素在数组中第一次出现的索引位置
	static int getIndex(int[] arr, int x) {
		int index = 0;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == x) {
				index = i;
				break;
			} else {
				index = -1;// 在数组arr中找不到x元素
			}
		}
		return index;
	}

	// 进制转换
	static String toBinary(int num) {

		return trans(num, 1, 1);
	}

	static String toOctonary(int num) {

		return trans(num, 7, 3);
	}

	static String toHexadecimal(int num) {

		return trans(num, 15, 4);
	}

	// 数组元素交换位置
	static String trans(int num, int base, int offset) {
		String str = "";
		if (num != 0) {
			StringBuffer sb = new StringBuffer();

			char[] table = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
					'a', 'b', 'c', 'd', 'e', 'f' };
			while (num != 0) {
				int temp = num & base;
				num = num >>> offset;

				sb.append(table[temp]);
				str = sb.reverse().toString();
			}
		} else {
			str = "0";
		}
		System.out.println(str);
		return str;

	}

	// 二分查找
	static int halfSearch_2(int[] arr, int num) {
		int min, max, mid;
		min = 0;
		max = arr.length - 1;
		mid = (min + max) / 2;
		while (num != arr[mid]) {
			if (num > arr[mid]) {
				min = mid + 1;
			} else {
				max = mid - 1;
			}
			if (min > max) {
				return -1;
			}
			mid = (min + max) / 2;
		}
		return mid;
	}

	public static void main(String[] args) {

		int[] hs = { 3, 5, 7, 9, 12, 23, 43, 53 };
		System.out.println(getIndex(hs, 7));
		toHexadecimal(60);
		toOctonary(60);
		toBinary(60);
		System.out.println(halfSearch_2(hs, 7));

	}
}


---------- Android、Java开发期待与您交流----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值