java数组4

Wltong Wltong     2022-11-29     171

关键词:

数组

  • 首先必须声明一个数组变量,才能在程序中使用数组

    int[]  array;
  • 使用new操作符来创建一个数组

    array = new int[10];
  • 数组的元素是通过索引访问的,数组索引从0开始

  • 获取数组长度

    array.length
  • 声明和创建数组可以写到一起

    int[]  array = new int[10];  //10代表初始化了一个arraySize

    int[] array = 1,2,3,4,5,6,7,8,9,10
    案例
    public class Demo01
      public static void main(String[] args)
          int[] a = new int[5]; //声明一个数组,创建一个数组
          //给数组赋值
          a[0] = 1;
          a[1] = 2;
          a[2] = 3;
          a[3] = 4;
          a[4] = 5;
          // System.out.println(a[0]);
          //计算所有元素的和
          int sum = 0;
          for (int i = 0; i < a.length; i++)
              sum = sum + a[i];
         
          System.out.println("所有元素的和是 "+sum);
     

内存分析

image-20210516233122594

数组的使用

  • 普通的for循环

  • For-Each循环

  • 数组作方法入参

  • 数组作返回值

    案例
    public class Demo04
       public static void main(String[] args)
             int[] arrays = 1,2,3,4,5;
    //       //For-Each循环
    //       for (int array : arrays)   //arrays是一个数组   前边int array是数组中得值
    //           System.out.print(array+" ");
    //      
    //           printArray(arrays);
             int[] reverse = reverse(arrays);  //调用完方法reverse(arrays)这个方法,返回给reverse数组
               printArray(reverse);            //输出反转后得数组
     
       //打印数组元素
       public static   void    printArray(int[] arrays)
           for (int i = 0; i < arrays.length; i++)
               System.out.print(arrays[i]+" ");
         
     
       //数组作返回值
       public static   int[]  reverse(int[] arrays)
           int[] result = new int[arrays.length];
           //反转
           for (int i = 0,j=result.length-1; i < arrays.length; i++,j--)
               result[j] = arrays[i];
         
           return result;
     

多维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组

  • 二维数组

    int a[][] = new int[2][5];

    解析:二维数组a可以看成一个两行五列的数组

    案例
    public class Demo05
       //二维数组
       public static void main(String[] args)
           int[][] array = 1,2,3,4,5,6,7,2,3,4,3,4,5,4,5,6;
           for (int i = 0; i < array.length; i++)
               for (int j = 0; j < array[i].length; j++)
                   System.out.println(array[i][j]);

             
               System.out.println("====================");
               //System.out.println(array[2][0]);
         
          // System.out.println(array[0][1]);
     

冒泡排序

  • 冒泡排序思路

  1. 比较数组中,两个相邻的元素,如果第一个数比第二个数大,我就交换他们的位置

  2. 每一次比较,都会产生出一个最大,或者最小的数字

  3. 下一轮则可以少一次排序

  4. 一次循环,直到结束

public class Demo06 
public static void main(String[] args)
int[] a = 12,21,11,15,35,53,54,431,1,2,5;
int[] sort = sort(a);
System.out.println(Arrays.toString(sort));

public static int[] sort(int[] array)
//临时变量
int temp = 0;
//外层循环,判断我们这个要走多少次
for (int i = 0; i < array.length-1; i++)
boolean a = false; //通过这个flag 标识位减少没有意义得比较
//内层循环,比较判断两个数,如果第一个数比第二个数大,则交换位置
for (int j = 0; j < array.length-1-i; j++)
if (array[j+1]<array[j])
temp = array[j];
array[j] = array[j+1];
array[j+1]= temp;
a = true;


if (a==false)
break;


return array;

稀疏数组

  • 案例编写五子棋游戏中,有存盘退出和续上盘的功能

image-20210602225143073image-20210602225706600

 

public class Demo08 
public static void main(String[] args)
//创建一个二维数组 11*11 0:没有棋子 1:黑棋 2:白棋
int[][] arrary1 = new int[11][11];
arrary1[1][2] = 1;
arrary1[2][3] = 2;
System.out.println("遍历数组");
for (int[] ints : arrary1)
for (int anInt : ints)
System.out.print(anInt+"\\t");

System.out.println();

System.out.println("===============================");
//转换为稀疏数组保存
//获取有效值的个数
int sum = 0;
for (int i = 0; i < 11; i++)
for (int j = 0; j < 11; j++)
if (arrary1[i][j]!=0)
sum++;



System.out.println("有效值的个数是"+sum);
//创建一个稀疏数组
int[][] arrary2 = new int[sum+1][3];
arrary2[0][0] = 11;
arrary2[0][1] = 11;
arrary2[0][2] = sum;
int count = 0;
//遍历二维数组,将非零的值,存放稀疏数组中
for (int i = 0; i < arrary1.length; i++)
for (int j = 0; j < arrary1[i].length; j++)
if (arrary1[i][j]!=0)
count++;
arrary2[count][0]=i;
arrary2[count][1]=j;
arrary2[count][2]=arrary1[i][j];



//输出稀疏数组
System.out.println("稀疏数组");
for (int i = 0; i < arrary2.length; i++)
System.out.println(arrary2[i][0]+"\\t"
+arrary2[i][1]+"\\t"
+arrary2[i][2]);

System.out.println("==================");
System.out.println("还原");
//1、读取稀疏数组
int[][] arrary3 = new int[arrary2[0][0]][arrary2[0][1]];
//2、给其中的元素还原他的值
for (int i = 1; i < arrary2.length; i++)
arrary3[arrary2[i][0]][arrary2[i][1]] = arrary2[i][2];

//打印数组
System.out.println("还原稀疏数组");
for (int[] ints : arrary3)
for (int anInt : ints)
System.out.print(anInt+"\\t");

System.out.println();


 

java数组4

数组首先必须声明一个数组变量,才能在程序中使用数组int[] array;使用new操作符来创建一个数组array=newint[10];数组的元素是通过索引访问的,数组索引从0开始获取数组长度array.length声明和创建数组可以写到一起int[] array=ne... 查看详情

廖雪峰java1-4数组操作-3多维数组

二维数组二维数组就是元素为数组的数组二维数组每个数组的长度不要求一样。比如int[][]={{1,2},{3,4,5},{6,7,8,9}}int[][]ns={{1,2,3,4},{5,6,7,8},{9,10,11,12}};System.out.println("ns.length:"+ns.length);System.out.println("ns[1][2]:"+ns[1][2]);f 查看详情

java数组

//一维数组//声明inta[];int[]b;//初始化//动态初始化a=newint[4];//能放4个int类型的数组//静态初始化b=newint[]{1,2,3,4};//数组中的数以确定//数组元素的引用System.out.println(b[1]);//2//length是数组的长度System.out.println(b.length);//4//数组元素的默... 查看详情

java数组06二维数组

packagecom.Leo.array;publicclassArrayDemo05{publicstaticvoidmain(String[]args){//[4][2]/*1,2array[0]2,3array[1]3,4array[2]4,5array[3]*/int[][]array={{1,2},{2,3},{3,4},{4,5}};//printArray(array[0]);//S 查看详情

java数组复制和扩容

有时候想要用一下数组的复制和扩容操作,记录一下:数组的复制:int[]a={1,2,3,4,5};int[]a1={4,5,6,7,8,9};System.arraycopy(a,1,a1,0,4);[2,3,4,5,8,9]数组的扩容int[]a=  {1,2,3,4,5};a=Arrays.copy(a,a.length+1);[1,2,3,4,5,0] 查看详情

java数组复制和扩容

有时候想要用一下数组的复制和扩容操作,记录一下:数组的复制:int[]a={1,2,3,4,5};int[]a1={4,5,6,7,8,9};System.arraycopy(a,1,a1,0,4);[2,3,4,5,8,9]数组的扩容int[]a=  {1,2,3,4,5};a=Arrays.copy(a,a.length+1);[1,2,3,4,5,0] 查看详情

java二维数组

一.二维数组的定义格式1.int[][]arr=newint[3][4];上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组2.int[][]arr=newint[3][];第二种方式和第一种类似,只是数组中每个元素的... 查看详情

java笔记4

第四天笔记1.数组概念:用来存放同一种数据类型的容器。1.1  java中数组的定义:数据类型[]数组名=new数据类型[长度] 1.2数组的长度可以指定也可以不指定int[]arr=newint[0];  1.3创建一个int类型的数组arr:是一个变... 查看详情

java合并两个排序数组

 题目:将两个排序好的数组组成一个新的排序好的数组,给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6] 挑战你能否优化你的算法,如果其中一个数组很大而另一个数组很小?   思路:两根指针分别指向两个数组... 查看详情

学了数组天下无敌————快乐人的java初学日记[4](代码片段)

数组的定义与使用数组的基本用法1.1什么是数组1.2创建数组1.3数组的使用2.数组作为方法的参数2.1基本用法2.2理解引用类型(重点/难点)2.3认识null2.4初识JVM内存区域划分(重点)3.二维数组数组的基本用法1.1什么是数组我们平时定义... 查看详情

java基础——数组

1.数组  1.1声明    int[]a;    intb[];  1.2创建对象    a=newint[2];    b=newint[4];  1.3初始化    a[1]=1;    a[2]=1;     for(inti=0;i<4;i++){      b[i]=2;    }        int[]c={1,2... 查看详情

java数组

数组为引用型,需要new(重点掌握内存,算法)一维数组:静态初始化:int[]a={1,2,3,4};动态初始化:int[]a;a=newint[4];a[0]=1;a[1]=2;a[2]=3;a[3]=4;(先声明,再创建对象,最后初始化)    注意:元素为引用类型时的数组每... 查看详情

java从入门到精通(第4版)第6章数组

开始讲解之前,先列出本章的提纲,如下图所示:6.1数组概述数组是具有相同数据类型的一组数据的集合。数组中的每个元素具有相同的数据类型。可根据数组的维数将数组分为一维数组、二维数组……6.2一维数组的创... 查看详情

如何在java中将4字节数组转换为浮点数

】如何在java中将4字节数组转换为浮点数【英文标题】:Howtoconvert4bytesarraytofloatinjava【发布时间】:2012-11-0807:29:41【问题描述】:我有一个代表浮点值的4字节数组。从网络读取字节,例如3e3fe3a0。如何将它从byte[]转换为java中的浮... 查看详情

java基础知识—数组

1.数组:是一个变量,存储相同数据类型的一组数据。2.数据的优点:减少代码量、易查找。3.数组的使用步骤:1)声明数组:intscores[];2)开辟空间:scores=newint[5];3)赋值:scores[0]=100;4)使用:scores[0]=scores[0]+20;4.数组的声明... 查看详情

java学习笔记3.9.4lambda表达式-操作数组

文章目录零、本讲学习目标一、遍历数组(一)基本概念(二)案例演示任务:采用多种方式遍历数组二、过滤数组(一)基本概念(二)案例演示任务1、筛选出整型数组中大于50的元素任务2、筛出字符串数组中满足条件的元... 查看详情

java中数组2

二维数组:定义方式:三种第一种方式:int[][]arr=newint[3][4];第二种方式:int[][]arr=newint[3][];数组中每个元素的长度不确定。第三种方式:int[][]arr={{1,2},{3,4,5,6},{7,8,9}};二维数组的遍历和求和:int[][]arr2={{1,2},{3,4,5},{6,7,8,9,10}};intsum2=0;... 查看详情

Java中的多维数组长度

】Java中的多维数组长度【英文标题】:MultidimensionalArrayslengthsinJava【发布时间】:2011-08-2222:12:36【问题描述】:如何找到索引不相等的多维数组的长度?比如我有int[][]pathList=newint[6][4]没有实际对索引进行硬编码,我需要找到“6... 查看详情