————数组是一个变量,存储相同类型的一组数据。
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] + " ");
}
}
}
}