java的数组
作用:存储相同类型的一组数组,相当于一个容器,存放数据的。对同种数据类型集中存储、管理、便于遍历
数组类型:就是数组中存储的数据的类型
特点:数组中的所有元素必须属于相同的数据类型,数组中所有元素在内存中连续存储的。数组本身也是一种引用类型,数组名只是引用,指向堆中创建的数组对象,该对象保存一组其他引用或直接值。
一、数组的声明和创建:告诉系统数据类型是什么?
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的数组的更多相关文章
- 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[ ...
- Java基础——数组应用之StringBuilder类和StringBuffer类
接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...
- JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"
将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...
- java将数组中的零放到末尾
package com.shb.java; /** * 将数组中的0放到数组的后边,然后原来的非零数的顺序不改变 * @author BIN * */ public class Demo2{ publ ...
- Java中数组的特性
转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...
- 在java 中,数组与 List<T> 类型的相互转换
在java中,数组与List<T> 之前进行互相转换,转换方法可总结为以下几种: 一. 将 数组转换成List<T> 1. 使用 Collections 的addAll 方法 ...
- Java RGB数组图像合成 ImageCombining (整理)
/** * Java RGB数组图像合成 ImageCombinning (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * 注意事项: * 1.本程序为java程序,同时感谢您花费 ...
- java对象数组
问题描述: java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...
- Java中数组的初始化方式
Java中数组的初始化方式 初始化方式有两种: 1.静态初始化:初始化时由程序猿显式指定每一个数组元素的初始值,由系统指定数组长度 2.动态初始化:初始化时由程序猿仅仅指定数组长度,由系统为数组 ...
- Java动态数组
其中java动态数组: Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList. ...
随机推荐
- 前端入门23-CSS预处理器(Less&Sass)
声明 本篇内容梳理自以下几个来源: Github:smyhvae/web Bootstrap网站的 less 文档 Sass中文网 感谢大佬们的分享. 正文-CSS预处理(less&Sass) ...
- 基于jwt的用户登录认证
最近在app的开发过程中,做了一个基于token的用户登录认证,使用vue+node+mongoDB进行的开发,前来总结一下. token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信 ...
- DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优
胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...
- Python3 isdigit()方法
描述 Python isdigit() 方法检测字符串是否只由数字组成. 语法 isdigit()方法语法: str.isdigit() 参数 无. 返回值 如果字符串只包含数字则返回 True 否则 ...
- DataGuard 单实例到RAC搭建
背景简介: 本文为针对一次windows平台RAC数据库迁移至Linux平台RAC的笔记,基本步骤为: 1.搭建windows RAC到Linux 单实例数据库的DataGuard 2.做switch ...
- Linux学习历程——Centos 7 passwd命令
一.命令介绍 passwd 命令用于修改用户密码,过期时间,认证信息等. 普通用户只能使用 passwd 命令修改自身的系统密码,而 root 管理员则有权限修改其他所有人的密码.更酷的是,root ...
- 记录一次Orthanc dicom数据异常手动修复
问题复现场景 同一个StudyInstanceUID,对应两个不同的PatientID. 通俗讲,原本是一个病人的一次影像,却割裂成两个病人的影像,虽然两个病人不影响系统数据,但是同一个Study分别 ...
- crontab的笔试题随想
最近看到一道题目,具体如下: 下列哪个是创建一个每周三01:00~04:00每3分钟执行一次的crontab指令? A: 1,4 3 /bin/bash /home/sijiaomao/ok.sh B ...
- python3 购物车 增改查终极版~
还是先来条NLP再说,快没了,以后想抄还没有... 十一,没有挫败,只有回应讯息 “挫败”只是指出过去的做法得不到预期的效果,是给我们需要改变的信号. “挫败”只是在事情画上句号时才能用上,欲想事情解 ...
- Linux:Day9(上) 压缩工具
压缩.解压缩及归档工具 compress/uncompress:.Z # 现在已经很少在见到了 gzip/gunzip:.gz bzip2/bunzip2:.bz2 xz/unxz:.xz # 目前推 ...