欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java学习日记——基础梳理(4) 20190228

程序员文章站 2022-03-20 18:03:59
...

LEARNING

数组:

数组作为对象,允许使用new运算符进行内存分配
1)一维数组(一组相同类型数据的线性集合)
①创建:先声明后分配(2种)
声明

数组元素类型  数组名[ ];
数组元素类型[ ]  数组名;

分配内存空间

数组名 = new 数组元素类型[数组元素的个数]

两者结合

int month[ ] = new int[12];

②初始化(2种)

int a1[ ] = new int[]{1,2,3,4,5};
int a2[ ] = {6,7,8};

③使用

2)二维数组
①创建+分配内存

int a[][] = new int[2][3];  //可分配每一维

②初始化

int a[][] = {{1,2},{2,4}};

③遍历

for(i=0;i<=a.length;i++)
   for(j=0;j<=a[i].length;j++)
          System.out.print(a[i][j]);

3)数组的基本操作

①遍历:for循环,foreach语句

int a[][] = {{1,2},{3,4}};
for( int x[]:a){               //外层循环遍历为一维数组
      for(int e:x){                   //循环遍历每一个数组元素
            if(e==x.length)   System.out.print(e);    //判断遍历是否为二维数组最后一个元素
            else  System.out.print(e+"、");  
            }
      }

②填充替换数组元素
通过Arrays类的静态方法fill()

fill(int a[] , int value)  //将value指赋给数组a[]的每个元素

fill(int a[] , int formIndex , int toIndex , int value)  
      //用formIndex和toIndex指定填充范围,但是formIndex<=m<toIndex

注:需要导入Arrays类import java.util.Arrays;,然后引用Arrays.fill()

③排序
通过Arrays类的静态方法sort()

Arrays.sort(a)     //a为数组名  数字>大写字母>小写字母

④复制
通过Arrays类的copyOf()和copyOfRange()

copyOf(a,int newlength)
copyOfRange(a,int formIndex,int toIndex)

⑤查询
通过Arrays类的binarySearch() 使用前需要进行排序!!

    int Index = binarySearch(a,int key);   //值都小于key,则返回a.length
    
    int Index = binarySearch(a,int formIndex,int toIndex,int key);
    //若数组a中无key,则返回"-"插入点,比如1,2,3,索引位置是1-2即插入位置
    //为2之后,3之前,此时插入点为3的索引值2,所以Index值为-2。若所有的
    //值都小于key,则返回toIndex

4)数组排序算法
①冒泡排序(双层循环)
外层:控制排序轮数
内层:比较临近元素大小

  for(i=1;i<a.lengtn;a++)
        for(j=0;j<a.length-i;j++){        //由于数组是下标为0开始,所以需要长度减一
            if a[j]>a[j+1]{          
                 int temp = a[j];        
                 a[j] = a[j+1];
                 a[j+1] = temp;         //交换a[j]和a[j+1]
                 }
            }

②直接选择排序(交换次数少,速度比冒泡快)
将指定排序位置与其他数组元素对比,若满足条件则交换。

int flag;
for(int i=1;i<a.length;i++){
      flag = 0;
      for(int j = 0;j<a.length-i;i++){
           if(a[j]>a[flag])   flag = j;
           int temp = a[a.length-i];
            int a[a.length-i] = a[flag];
            a[flag] = temp;
           }
      }

③翻转排序
以相反的顺序重新排序。

for(int i=0;i<a.length/2;i++){
      temp = a[i];
      a[i]=a[a.length-1-i];
      a[lengtn-1-i]=temp;
      }

PRATICING

1.Java程序:创建数组a1,a2,将a1中索引位置是0-3的元素复制到a2中。

package Pratices;
import java.util.Arrays;
public class Pratice11 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
    int a[]= {1,1,2,8,5};
    int b[]=Arrays.copyOfRange(a,0,3);
    for(int i=0;i<a.length;i++)
        System.out.print(a[i]);
    System.out.println();
    for(int j=0;j<b.length;j++)
    	System.out.print(b[j]);
	}
}

2.Java程序:将数组中最小元素输出。

package Pratices;
import java.util.Arrays;
public class Pratice12 {
		public static void main(String[] args) {
			// TODO 自动生成的方法存根
	    int a[]= {6,6,2,8,5};
	    Arrays.sort(a);
	    System.out.print(a[0]);
	}
}

3.Java程序:实现将数组a中索引位置为2的元素替换成"bb"。

package Pratices;
import java.util.Arrays;
public class Pratice13 {
	public static void main(String[] args) {
	     String a[]= {"J","a","n","e"};
	     for(int j=0;j<a.length;j++)
	     System.out.print(a[j]);
	     System.out.println();
	     Arrays.fill(a,2,3,"bb");
	     for(int i=0;i<a.length;i++)
	     System.out.print(a[i]);
	}
}

4.Java程序:将二维数组中的行列互调显示出来。

错误程序+改正

package Pratices;
public class Pratice14 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
     int a[][] = {{1,2,3},{4,5,6},{7,8,9}};

     for(int i=0;i<a.length;i++)
    	 for(int j=0;j<a[i].length;j++) {    //j<i而不是j<a[i].length
    			 int temp = a[i][j]; 
    		     a[i][j] = a[j][i];
    		     a[j][i] = temp;                  		
    		 }
      for(int i=0;i<a.length;i++)
    	 for(int j=0;j<a[i].length;j++) {
       System.out.print(a[i][j]);}
	}
}

因为j<i则j在下三角数组中交换,只交换一次,而j<a[i].length则j的取值范围是a[i]行的长度,那么j在a[i][j]所做的交换会在a[j][i]再做一次导致数组无变化!

法2

package Pratices;
public class Pratice14 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
     int a[][] = {{1,2,3},{4,5,6},{7,8,9}};
     int newa[][] = new int[a.length][a[0].length];
     for(int i=0;i<a.length;i++)
    	 for(int j=0;j<a[i].length;j++) {
       System.out.print(a[i][j]);}
     System.out.println();
     for(int i=0;i<a.length;i++)
    	 for(int j=0;j<a[i].length;j++) {
    		     newa[i][j] = a[j][i];
    		 }
      for(int i=0;i<a.length;i++)
    	 for(int j=0;j<a[i].length;j++) {
       System.out.print(newa[i][j]);}
	}
}
相关标签: Java学习