数组

数组:数组是存储同一种数据类型数据的集合容器。

数组的定义格式:

数据类型[]  变量名  =  new  数据类型[长度];

数组的好处:对分配到数组对象中每一个数据都分配一个编号(索引值、角标、下标),索引值的范围是从0开始,最大是:长度-1。

局部变量:如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量。

成员变量:成员变量就是定义在方法之外,类之内的.

数组中最常见的问题:

1.NullPointerException 空指针异常原因:引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。

2.ArrayIndexOutOfBoundsException索引值越界。原因:访问了不存在的索引值。

数组的初始化方式:

动态初始化:

数据类型[] 变量名 = new 数据类型[长度];

静态初始化:

数据类型[] 变量名 = {元素1,元素2.....};

如果程序一开始你就已经确定了数据,那么这时候建议使用静态初始化。如果数据一开始还不太明确,这时候就建议使用动态初始化。

class Demo7 {

public static void main(String[] args) {

//动态初始化

//int[] arr = new int[10];

//静态初始化

int[] arr = {10,20,30,40,50};

for(int index = 0 ; index

System.out.print(arr[index]+",");

}

/*

int[] arr = new int[50];

Scanner scanner = new Scanner(System.in);

for(int i = 0 ; i< arr.length ; i++){

arr[i] = scanner.nextInt();

}

*/

}

}

class Demo8 {

public static void main(String[] args)

{

int[] arr = {-12,-14,-5,-26,-4};

int max = getMax(arr);

System.out.println("最大值:"+ max);

}

public static int getMax(int[] arr) {

int max = arr[0]; //用于记录最大值

for(int i = 1 ; i < arr.length ; i++){

if(arr[i]>max){ //如果发现有元素比max大,那么max变量就记录该元素。

max = arr[i];

}

}

return max;

}

}

选择排序(直接排序):使用一个元素与其他 的元素挨个比较一次,符合条件交换位置。

class Demo9 {

public static void main(String[] args) {

int[] arr = {12,5,17,8,9}; //对于5元素的数组,只需要找出4个最大值就可以排序了。

selectSort(arr);

}

public static void selectSort(int[] arr) {

//把最大值放在首位置。

for(int j = 0; j

for(int i = j+1 ; i

if(arr[i]>arr[j]){

//交换位置

int temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

}

}

//遍历数组,查看效果

System.out.print("目前的元素:");

for (int i = 0 ; i

System.out.print(arr[i]+",");

}

}

}

冒泡排序:冒泡排序的思想就是使用相邻的两个 元素挨个比较一次,符合条件交换位置。

class Demo10 {

public static void main(String[] args) {

int[] arr = {12,8,17,5,9}; // 最大的索引值: 4 容量:5

bubbleSort(arr);

}

public static void bubbleSort(int[] arr){

// 把最大值放在最后一个位置

for(int j = 0 ; j

for(int i = 0 ; i

//相邻的元素比较

if(arr[i]>arr[i+1]){

int temp = arr[i];

arr[i] = arr[i+1];

arr[i+1] = temp;

}

}

}

//遍历数组,查看效果

System.out.print("目前的元素:");

for (int i = 0 ; i

System.out.print(arr[i]+",");

}

}

}

折半查找法(二分法): 使用前提必需是有序的数组。

class Demo12 {

public static void main(String[] args) {

int[] arr = {12,16,19,23,54};

//int index = searchEle(arr,23);

int index = halfSearch(arr,116);

System.out.println("元素所在的索引值是:"+ index);

}

public static int halfSearch(int[] arr, int target){

//定义三个变量分别记录最大、最小、中间的查找范围索引值

int max = arr.length-1;

int min = 0;

int mid = (max+min)/2;

while(true){

if(target>arr[mid]){

min = mid+1;

}else if(target

max = mid -1;

}else{

//找到了元素

return mid;

}

//没有找到的情况

if (max

return -1;

}

//重新计算中间索引值

mid = (min+max)/2;

}

}

public static int searchEle(int[] arr, int target) {

for(int i = 0 ; i

if(arr[i]==target){

return i;

}

}

return -1;

}

}

二维数组: 二维数组就是数组中的数组。

二维数组的定义格式:

数据类型[][] 变量名 = new 数据类型[长度1][长度2];

二维数组 的初始化方式:

动态初始化:

数据类型[][] 变量名 = new 数据类型[长度1][长度2];

静态初始化:

数据类型[][] 变量名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...} ..}

class Demo16 {

public static void main(String[] args) {

int[][] arr = {{10,11,9},{67,12},{33,35,39,40}};

//遍历二维数组

for(int i = 0; i

for(int j = 0 ; j

System.out.print(arr[i][j]+",");

}

//换行

System.out.println();

}

}

}

数组的特点:

1.数组只能存储同一种数据类型的数据。

2.数组是会给存储到数组中的元素分配一个索引值的,索引值从0开始,最大的索引值是length-1;

3.数组一旦初始化,长度固定。

4.数组中的元素与元素之间的内存地址是连续的。

简单java数组程序_java(数组及常用简单算法 )相关推荐

  1. java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

    java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用 七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了J ...

  2. 简单Java小程序----有界面ATM机

    继<简单Java小程序---无界面ATM机>以后,尝试对有界面ATM机改写,对面向对象的了解又深了一层! 桌面的创建过程       由于使用的NetBean软件没有提供专用的控件拖拽使用 ...

  3. java数组解析_Java - 数组解析

    一.什么是数组 数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的! 但是这只是数组的最表面的东西!深一点?就是这样 ...

  4. java抽奖程序_java怎么做出简单的抽奖程序?实例代码展示

    自从20世纪90年代以来,java编程语言的发展如火如荼,不仅仅应用于高新产业的壮大发展,还涉及到了我们的日常生活,为我们的生活带来了更多的便利与快捷方法.今天主要为大家介绍一下,如何用java做出一 ...

  5. java合法的数组声明_Java数组详解

    Java数组详解 数组详解 1.数组概述 数组是相同类型数据的有序集合 每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 2.数组声明和创建 ①数组声明形式 dataType[] a ...

  6. java 数组效率_java数组复制的四种方法效率对比

    有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容. 来源于牛客网的一道选择题: JAVA语言的下面几种数组复制方法中,哪个效率最高? ...

  7. java类型的数组初始化_java数组初始化详解

    介绍 学习Java的朋友想必对数组并不陌生,它需要使用之前对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使 ...

  8. java 数组成员_java 数组中含有

    <数据结构与抽象:Java语言描述(原书第4版)>一2.2.1 可变大小数组 本节书摘来华章计算机<数据结构与抽象:Java语言描述(原书第4版)>一书中的第2章 ,第2.2. ...

  9. java定义数组范围_Java数组的定义和使用

    为什么需要数组? 问题:我们要计算30个学生的平均分 如果没有数组,我们的代码是这样的 int score1 = 32; int score2 = 56; int score3 = 78; //--此 ...

最新文章

  1. c语言菱形花圃,一种便于自动修剪花圃的电锯支架的制作方法
  2. 判断一个变量类型是数组还是对象
  3. java 全局变量 内存不回收_JAVA知识梳理:内存管理与垃圾回收机制
  4. 编译时错误之 error C2338: tuple_element index out of bounds
  5. 28muduo_net库源码分析(四)
  6. Eclipse启动tomcat项目乱码而终端启动tomcat正常的解决办法
  7. shift and算法
  8. sql union用法和sql union all用法,sql union效率
  9. OpenCV身份证离线识别技术实战(一)
  10. vue使用插件jsbarcode 生成条码下载
  11. 简易矩阵乘法计算器2.0
  12. 【Opencontrail】对接k8s基本原理
  13. 1179: 带参宏定义(函数专题)
  14. 如何裁剪动图大小?试试这个在线照片裁剪工具
  15. 基于GPT-4的免费代码生成工具
  16. microapp微前端基础使用
  17. EditPlus中文版+英文版+注册码下载
  18. Hadoop生态系统官网、下载地址、文档
  19. js css如何按比例放大视频或者图片
  20. python cnn 实例_学习python的算法-Faster RCNN算法复现

热门文章

  1. 课下作业——对正在使用的搜索类软件/输入法进行评价
  2. alert 乱码(转 学习)
  3. 软件工程1916|W(福州大学)_助教博客】助教总结
  4. PHP 结合redis实现高并发下抢购、秒杀
  5. 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优...
  6. Qt富文本编辑器QTextDocument
  7. Akka边学边写(3)-- ByteString介绍
  8. ARC学习笔记(一)
  9. excel用警员姓名查找警号信息
  10. Windows域策略设置 禁止客户端上网【全域策略生效】