作用:存储相同类型的一组数组,相当于一个容器,存放数据的。对同种数据类型集中存储、管理、便于遍历

数组类型:就是数组中存储的数据的类型

特点:数组中的所有元素必须属于相同的数据类型,数组中所有元素在内存中连续存储的。数组本身也是一种引用类型,数组名只是引用,指向堆中创建的数组对象,该对象保存一组其他引用或直接值。

一、数组的声明和创建:告诉系统数据类型是什么?

1.语法:

  数据类型[] 数组名;

2.数据的创建: 为数组分配内存空间(堆中分配)(数组名指向堆中)

   new 操作符的使用

3.声明并创建数组

  数据类型[] 数组名 = new 数据类型[大小];

4.数据特点:

  • 数组又一个字段length,表示此数组对象可以存储多少元素即数组长度;length不是实际保存的元素个数。
  • “[]”语法是访问数组对象成员的唯一方式
  • 对象数据保存的是引用,基本类型数组直接保存基本类型的值
  • 新生成的数组对象,其中所有的引用自动初始化为null,基本类型数组成员有各自默认值(数值型自动初始化为0,字符型为(char)0,不二星为false。

5.数组的初始化

  • 为数组中的成员一一赋值

6.数组赋值的两种方式

  • 边声明边赋值(静态初始化)

int[] score = {66,77,88,99}

  int[] score =new int[]{66,77,88,99}

  • 动态的获取(从键盘录入)信息并赋值
int[] score = new int[3];
Scanner input = new Scanner(System.in);
for(int i=0;i<3;i++){
score[i]=input.nextInt();
}
  • 综合赋值和遍历
import java.util.Scanner;

public class Arrays {

    public static void main(String[] args){

        int[] array = new int[3];
System.out.println(array[0]);
System.out.println(array.length);
//对数组中的元素进行赋值,通过下标进行赋值
array[0]=1;
array[2]=3;
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
//通过for循环遍历数组
for(int i=0;i<array.length;i++){
System.out.println(array[i]);
} //创建数组的同时做初始化
int[] array1 = {10,20,30};
for(int i=0;i<array.length;i++){
System.out.println(array1[i]);
} //通过Scanner赋值
int[] score = new int[3];
Scanner input = new Scanner(System.in);
for(int i=0;i<3;i++){
score[i]=input.nextInt();
} for(int i=0;i<array.length;i++){
System.out.println(score[i]);
}
}
}

二、数据的查找

//线性查找法:从头开始一直找,直到找到为止,返回数组的下标,找不到返回-1
public static int linearSearch(){
Scanner input = new Scanner(System.in);
System.out.println("请输入你要查找到的数:");
int string =input.nextInt();
int[] arrry= {20,10,5,30,35,25,40,50}; for(int i = 0;i<arrry.length;i++){
if(arrry[i]==string){
return i;
}else{
continue;
}
}
return -1;
}
//2分查找法,原理就是一切为2,中间位置和想要查找的数做比较,比中间数大,那么要后面一半,比中间数小,要前一半,以此类推
//找到返回下标,找不到返回-1
public static void binarySearch(){
int[] arrry= {20,21,22,30,35,36,40,50,51,52,53,54,55,67};
Scanner input = new Scanner(System.in);
int number =input.nextInt();
System.out.println("请输入你要查找到的数:");
int index = -1; //保存找到数的下标,没有找到返回-1
int start = 0;
int end = arrry.length-1;
int middle ;
while(start<=end){
//找到中间下标对应的元素值
middle = (start+end)/2;
if(number==arrry[middle]){
index = middle;
break;
} //如果被查找的数大于中间数,去掉左边一部分
if(number>arrry[middle]){
start = middle+1;
} //如果被查找的数小于中间数,去掉右边一部分
if(number<arrry[middle]){
end = middle-1;
}
} if(index==-1){
System.out.println("没有找到");
}else{
System.out.println("找到:"+index);
}
}

三、数组的排序

//冒泡排序
//工作原理,相邻两个元素比较大小,若第一个大于第二个,那么交换位置,此时的第二个再去和第三个比较,以此类推,一轮会得到一个最大的数,然后进行第二轮,那么比前面一轮少比较一次
public static void bubbleSort(){
int[] arrry= {20,10,5,30,35,25,40,50};
//N个数比较,轮数为N-1次
for(int i=0;i<arrry.length-1;i++){
//每一轮比较的次数 N-1-i
for(int j=0;j<arrry.length-i-1;j++){
//比较相邻的两个,大的往后排
if(arrry[j]>arrry[j+1]){
int temp;
temp = arrry[j];
arrry[j]=arrry[j+1];
arrry[j+1]=temp;
}
}
} //把排好的顺序输出
for(int i=0;i<arrry.length;i++){
System.out.print(arrry[i]+",");
}
}

4个数比较了3轮,那么n个数比较n-1轮

  

  

java的数组的更多相关文章

  1. java中数组的相关知识

      1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...

  2. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  3. JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

  4. java将数组中的零放到末尾

    package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...

  5. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  6. 在java 中,数组与 List<T> 类型的相互转换

    在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...

  7. Java RGB数组图像合成 ImageCombining (整理)

    /** * Java RGB数组图像合成 ImageCombinning (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * 注意事项: * 1.本程序为java程序,同时感谢您花费 ...

  8. java对象数组

    问题描述:     java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...

  9. Java中数组的初始化方式

    Java中数组的初始化方式    初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...

  10. Java动态数组

    其中java动态数组: Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList. ...

随机推荐

  1. 关于视频断点续播和H5的本地存储

    前段时间,需要在下实现一个视频的断点续播功能,呃,我不会呀,这就很尴尬了.然后呢,在下就想起了一个叫做localStorage的东西.这是个什么东西呢?在网上查阅了一些资料后,在下发现这是webSto ...

  2. Retrofit+MVP框架封装记录篇

    当下最流行的网络请求组合,retrofit2+okhttp+rxjava+mvp 这里是封装记录篇 首先分模块,比如登录 先来说封装后的使用 package com.fragmentapp.login ...

  3. spring mvc 在上传图片时,浏览器报The request sent by the client was syntactically incorrect

    项目中,在一个jsp页面里其它图片上传是功能是可以使用的,当我自己新加了一个图片上传时,提交表单后,浏览器报The request sent by the client was syntactical ...

  4. java或Jmeter实现两个日期相加减(2003-06-01-2003-05-01)

    在beanshell中写入如下代码, import java.io.FileInputStream; SimpleDateFormat myFormatter = new SimpleDateForm ...

  5. VUE新版扫码下单必选分类设置FAQ

    使用场景:商家想要设置某些分类下的商品设置必选,否则不能下单.如某火锅店,商家想要设置汤底这个分类下的商品,顾客扫码下单的时候必须选择一份才能下单,此时 就可以使用这个功能 配置步骤和注意事项如下: ...

  6. memcached架构及缓存策略

    ----------------------------------------概述---------------------------------------- Memcached是一套高性能分布 ...

  7. 试试Linux下的ip命令,ifconfig已经过时了

    linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命 ...

  8. 如何在本地编译Fabric Code

    之前的博客都是拿官方现成的Docker镜像来用,但是并没有自己动手做镜像,也没有说到如何去开发和测试Fabric的代码.这一篇博客就从入门的角度讲解如何编译.测试和开发Fabric. 一.环境准备 要 ...

  9. 【网站公告】请大家不要发表任何涉及“得到App”的内容

    大家好,今天我们收到来自杭州某某网络科技有限公司的维权骑士团队的邮件,说他们受某某(天津)文化传播有限公司委托,展开维权.园子里有些博主因为学习“得到App”的课程在博客中记了一些笔记,也被维权. 为 ...

  10. 用Case类生成模板代码

    将类定义为case类会生成许多模板代码,好处在于: ①会生成一个apply方法,这样就可以不用new关键字创建新的实例. ②由于case类的构造函数参数默认是val,那么构造函数参数会自动生成访问方法 ...