第六章 数组
- 提纲:
- 一维数组概述:
- 元素类型为引用类型的数组:
3. 数组的初始化
注:
理解main函数中的参数:String[] args
约瑟夫环(逢三减一):选择排序法、冒泡排序法以及数组模拟链表法
包装类Integer中parseInt()的使用
Integer类的简单介绍(大佬版)
练习:
代码:
public class TestDateBinarySearch {
public static void main (String [] args) {
Date[] date = new Date[5];
date[0] = new Date(2006,5,4);
date[1] = new Date(2006,7,4);
date[2] = new Date(2008,5,4);
date[3] = new Date(2004,5,9);
date[4] = new Date(2004,5,4);
bubbleSort(date);
for(int i=0;i<date.length;i++) {
System.out.println(date[i]);
}
Date d = new Date(2008,5,4);
System.out.println(d + " " +"binary search is" + " " + binarySearch(date,d) + " " +"index");
}
public static void bubbleSort (Date[] date) {
int len = date.length;
for (int i=len-1;i>=0;i--) {
for (int j=0;j<=i-1;j++) {
if (date[j].compare(date[j+1]) > 0) {
Date temp = date[j];
date[j] = date[j+1];
date[j+1] = temp;
}
}
}
}
public static int binarySearch (Date[] date,Date d) {
if(date.length == 0) return -1;
int startPro = 0;
int endPro = date.length-1;
int m = (startPro + endPro)/2;
while(startPro <= endPro) {
if(date[m].compare(d) == 0) return m;
if(date[m].compare(d) < 0) {
startPro = m+1;
}
if(date[m].compare(d) > 0) {
endPro = m-1;
}
m = (startPro + endPro)/2;
}
return -1;
}
}
class Date {
int year,month,day;
Date (int year,int month,int day) {
this.year = year;
this.month = month;
this.day = day;
}
public int compare (Date date) {
return year > date.year ? 1
:year < date.year? -1
:month > date.month ? 1
:month < date.month ? -1
:day > date.day ? 1
:day < date.day ? -1 : 0;
}
public String toString () {
return "Year-Month-Day:" + year + "-" + month + "-" + day;
}
}
运行截图:
4. 二维数组概述
注:声明必须从高维到低维。
例:
5.数组的拷贝
例子代码:
public class TestArrayCopy {
public static void main (String [] args) {
String[] s = {"Mircosoft","IBM","Sun","Oracle","Apple"};
//String[] s = ("Mircosoft");
String[] sBak = new String[6];
System.arraycopy(s,0,sBak,0,s.length);
for(int i=0;i<sBak.length;i++) {
System.out.print(sBak[i] + " ");
}
System.out.println();
int[][] intArray = {{1,2},{1,2,3},{3,4}};
int[][] intArrayBak = new int[3][];
System.arraycopy(intArray,0,intArrayBak,0,intArray.length);
intArrayBak[2][1] = 100;
for(int i=0;i<intArrayBak.length;i++) {
for(int j=0;j<intArrayBak[i].length;j++) {
System.out.print(intArrayBak[i][j] + " ");
}
System.out.println();
}
}
}
效果图:
注意:这里输出的最后一个值为100,因为第二个数组复制的是第一个数组的引用,此时两者的低维数组仍为同一数组,故均发生变化。
内存分析图:
注:本博客由溺水狗原创但其学习资源资料来源于网络(马士兵老师的教学视频),特此感谢马士兵老师