JavaSE基础知识整理——数组的运用

————数组是一个变量,存储相同类型的一组数据。
1、JVM内存分析(即java虚拟机)
虚拟机把虚拟内存分为:
①栈区(存基础类型列如int,double,char,float)
存放函数参数值(方法),局部变量的值。在超过这个变量的作用域时会被系统自动释放存于JVM内存中的资源。
优点:存取速度比较快。
缺点:存在栈中的数据大小与生存期是确定的,无灵活性。
②堆区
存放由new创建的对象和数值,JVM不定时查看这个对象,如果没有引用指向这个对象就回收。
Scanner in=new Scanner(System.in);
有点:可以动态分配JVM内存。
缺点:要在运行时分配JVM内存,速度慢。
③静态区
④代码区
2、声明数组
①数据类型 数组名[];
②数据类型[] 数组名;
③边声明边赋值:1.int[]arr={11,13,17};
2.int[]arr=new int{11,13,17};
④动态从键盘录入并赋值:
Scanner in=new Scanner(System.in);
for(int i=0,i<30,i++){
arr[i]=in.nextInt();
}
3、如何使用数组
四步走:
1.声明变量 int[] a;
2.分配空间 a=new int[5];//5代表存5个数据,下标分别为0,1,2,3,4
3.赋值 a[0]=6;//即赋值下标为0的数值为6,如果没有赋值默认为0
4.处理数据
4、实例,length的属性(用数组求任意个同学的平均成绩):

import java.util.*;
public class Arr {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入学生的人数");
		int num=in.nextInt();
		int[] grade=new int[num];
		int sum=0;
		for(int i=0;i<grade.length;i++) {
			System.out.println("请输入第"+(i+1)+"个人成绩");
			grade[i]=in.nextInt();
			sum=grade[i]+sum;
		}
		System.out.println("平均成绩为"+sum/num);
	}
}

5、数组求最大值

import java.util.*;
public class shuzuavg {
	public static void main(String[] args) {
		Scanner in= new Scanner(System.in);
		int[] arr=new int[5];
		for(int i=0;i<arr.length;i++) {
			System.out.println("请输入第"+(i+1)+"个同学的成绩");	
			arr[i]=in.nextInt();
		}
		int max=arr[0];
		for(int i=0;i<arr.length;i++) {
			if(max<=arr[i]) {
				max=arr[i];
			}
		}
		System.out.println("最大值为"+max);
	}
}

6、数组排序

import java.util.Arrays;
import java.util.Scanner;
public class shuzupaixu {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入数组长度");
		int i=in.nextInt();
		int arr[]=new int[i];
		for(int j=0;j<arr.length;j++) {
			System.out.println("请输入第"+(j+1)+"个数");
			arr[j]=in.nextInt();
	}
		for(int j=0;j<arr.length;j++) {
			Arrays.sort(arr);
			System.out.println(arr[j]);
		}
	}
}

7、字母倒排序

import java.util.*;
public class daoxunpaizimu {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入数组长度");
		int a=in.nextInt();
		String arr[]=new String[a];
		for(int i=0;i<arr.length;i++) {
			System.out.println("请输入第"+(i+1)+"个字符");
			arr[i]=in.next();
		}
		Arrays.sort(arr);
		for(int i=arr.length-1;i>=0;i--) {
			System.out.println(arr[i]);
		}
	}
}

8、数组算法:
数组复制算法

import java.util.*;
public class copyshuzu {
	public static void main(String[] args) {
		int arr[]={1,2,3,4,5};
		int arr2[]=new int[arr.length];
		for(int i=0;i<arr.length;i++) {
			arr2[i]=arr[i];
		}
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr2[i]);
		}
	}
}

数组查找算法

import java.util.*;
public class Searchshuzu {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入你要查找的姓名");
		String name=in.next();
		String arr[]= {"张三","李四","玄武","至尊"};
		boolean flag=false;
		for(int i=0;i<arr.length;i++) {
			if(name.equals(arr[i])) {
				flag=true;
				break;
			}
		}
		if(flag==true) {
			System.out.println("找到了");
		}else {
			System.out.println("查找失败");
		}
	}
}

数组插入算法

import java.util.*;
public class insertshuzu {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int arr[]= {3,7,9,11,23,59};
		System.out.println("请输入你要插入的数");
		int num=in.nextInt();
		arr[arr.length-1]=num;
		for(int i=arr.length-1;i>0;i--) {
			if(arr[i]<arr[i-1]) {
				int t=arr[i];
				arr[i]=arr[i-1];
				arr[i-1]=t;
			}else {
				break;
			}
		}
			for(int i=0;i<arr.length;i++) {
				System.out.println(arr[i]);
		}
	}
}

9、数组冒泡排序

import java.util.*;
public class maopaopaixu {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入所输数组长度");
		int i=in.nextInt();
		int arr[]=new int[i];
		for(int j=0;j<i;j++) {
		System.out.println("请输入第"+(j+1)+"个字符");
		int a=in.nextInt();
		arr[j]=a;
	}
		for(int s=0;s<arr.length-1;s++) {
		for(int j=0;j<arr.length-1;j++) {
			if(arr[j]>arr[j+1]) {
				int k=arr[j+1];
				arr[j+1]=arr[j];
				arr[j]=k;
			}
			}
		}
		for(int j=0;j<arr.length;j++) {
			System.out.println(arr[j]);
		}
	}
}

10、利用二维数组,循环输入6个名字,使其输出格式为:
XX XX
XX XX
XX XX

   import java.util.*;
    public class duochongshuzu {
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		String[][] arr = new String[3][2];
    		for (int i = 0; i < arr.length; i++) {
    			for (int j = 0; j < arr[i].length; j++) {
    				String s = in.next();
    				arr[i][j] = s;
    			}
    		}
    		for (int i = 0; i < arr.length; i++) {
    			System.out.println("");
    			for (int j = 0; j < arr[i].length; j++) {
    				System.out.print(arr[i][j] + "  ");
    			}
    		}
    	}
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值