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

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

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

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

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. SAP 没有激活HUM功能照常可以使用Handling Unit

    SAP 没有激活HUM功能照常可以使用Handling Unit 笔者所在的项目上的公司间STO的流程里,发货公司在做PGI之后系统自动触发收货公司的inbound delivery单据,发货公司发出 ...

  2. nlp词性标注

    nlp词性标注 与分词函数不同,jieba库和pyltp库词性标注函数上形式相差极大. jieba的词性标注函数与分词函数相近,jieba.posseg.cut(sentence,HMM=True)函 ...

  3. Android防止按钮快速重复点击

    在用户使用 Android 应用的时候,经常会出现过快且多次点击同一按钮的情况,一方面这是因为应用或手机当前有些卡顿,另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮 ...

  4. Activity、Window、View三者之间的联系

    Activity类:Android四大组件之一,是开发者最常用的一个组件 Window类:是一个抽象类,具有窗口管理的功能,实现类为PhoneWindow View类:提供对View的操作,包括绘制测 ...

  5. javafx--tableView笔记-----tableView里已经填充了实体类数据但是很狗血地显示不出来

    private String cClass private String cUp private String cDown 刚开始实体类的字段 cClassCol.setCellValueFactor ...

  6. docker根据配置文件启动redis

    更多docker基本命令请自行查询. 1.首先拉取合适版本的docker镜像 docker pull redis:5 2.如果不需要更改什么配置或者仅仅测试用可以直接启动镜像运行容器,这里要说明的是根 ...

  7. 在原有数据库中使用 CodeFirst

    一.为当前实体模型启用数据迁移 1.Enable-Migrations -ContextTypeName EME.DBHelper.StoreContext(数据访问上下文) 2. Add-Migra ...

  8. 写一函数,用来求表达式1+2+3+.....+n的值,并编写主函数

    Description 写一函数,用来求表达式1+2+3+.....+n的值,并编写主函数.n由键盘输入. Input 输入一个整数 Output 输出表达式的值 Sample Input 5 Sam ...

  9. MYSQL内置MYSQL数据库中你可以得到的信息

    1:help_topic  可以查看函数帮助,例如:SELECT * from help_topic WHERE name='concat' 可以查看concat函数. 2:SLOW_LOG 慢查询日 ...

  10. time-时间模块

    # time模块import time# 时间戳res = time.time() # ***print(res, type(res)) # time.sleep(1) # ***# print(12 ...