java基础总结——数组

时间:2021-09-02 23:56:27

数组需要掌握的:

  1、数组的定义
  2、数组的内存分配及特点
  3、数组操作常见问题
  4、数组常见操作
  5、数组中的数组(理解)

数组唯一属性:length,即数组的长度。

1.数组定义

  格式一:

    元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
     示例:int[] arr = new int[5];
  格式二:

    元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
       示例:int[] arr = new int[]{3,5,1,7};
           int[] arr = {3,5,1,7};

区别:方式一定义了数组的长度,但是没有给数组赋值,数组有默认值,和数据类型默认值一样;

   方式二定义数组,并赋值,默认指定数组的长度。推荐使用方式二

  

2.数组的内存分配及特点

java基础总结——数组

java基础总结——数组

3、数组常见操作

3.1数组遍历

  将数组中的每个数据分别取出,for循环来完成 数组.length数组的长度,也就是存储数据的个数,数组中的最大角标值 = 数组.length - 1

 /*
遍历数组,已经用for循环解决掉了
数组越来越多
如何去遍历呢
采用函数的方式,将遍历数组的功能,定义在函数中
直接调用函数的遍历功能就可以了
*/
class ArrayDemo5{
/*
分析步骤:
这个函数就负责遍历数组,并打印在命令行上
1. 有没有运算结果,没,void
2. 有没有未知数参与函数运算,就那数组
*/ /*
printArray函数,就负责遍历数组,打印数组
调用这个函数的时候,传递函数进来
*/
public static void printArray(int[] arr)
{
for(int x = 0; x<arr.length ;x++){
if(x!=arr.length-1){
System.out.print(arr[x]+",");
}
else{
System.out.print(arr[x]);
} }
System.out.println();
}
public static void main(String[] args)
{
int[] arr ={34,435,324,324,3246,63,3};
int[] arr1 ={34,435,324,324,3246,63,3,5};
printArray(arr);
// printArray(arr1);
}
}

3.2数组求最值

  遍历数组,对每一个数组中的元素进行比较,并且记录 较大数据的下标 必须定义函数完成

 /*
数组中获取最值的操作
最大值,最小值
*/
class ArrayDemo6{
public static void main(String[] args) {
int[] arr = {4,3,2,6,1,0};
int max = getMax(arr); System.out.println("max="+max);
}
/*
定义函数,来获取数组中的最大值
1 明确函数计算后的结果是什么,int
2 未知数据就是数组
*/ public static int getMax(int[] arr){
//定义变量,记录数组中0下标上的数据
int max = 0;//4
//遍历数组,分别进行比较,保留最大值
for(int x = 0 ; x<arr.length;x++){
if(arr[max]<arr[x]){
max = x;
}
}
return arr[max];
} public static int getMin(int[] arr){
int min = 0;//4
//遍历数组,分别进行比较,保留最大值
for(int x = 0 ; x<arr.length;x++){
if(arr[min]>arr[x])
{
min = x;
}
}
return arr[min];
}
}

3.3数组排序

1、选择排序

Ÿ 利用原理是:从第0个下标开始进行比较和较大的数进行换位(借用第三方变量)第一次比较完后,从第1个小标开始进行比较和较大的数进行换位(借用第三方变量)

Ÿ 特点:第一次都比较完后,最小的数出现在了0下标位置上嵌套的for来完成

2、冒泡排序

相邻两个数据进行比较,根据结果换位

两种排序示意图

java基础总结——数组

3、代码实例

         /*
选择排序的三个步骤
1. 遍历数组,把数组中每个元素分别取出
2. 出去后,进行大小的比较
3. 进行数组的换位置
*/
//选择排序
for (int x = 0; x < arr.length - 1; x++) {
for (int y = x + 1; y < arr.length; y++) {
// x=1 y=1+1=2
if (arr[x] > arr[y])// arr[1]>arr[2]
{
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
} /*
定义函数实现冒泡排序
1. 确定函数运算后没有返回值
2. 不确定的数据就是数组 说明:
内圈循环,-x是为了比较的次数一次一次在减少
-1是为了防止数组越界异常
希尔排序,公认的效率最高的排序方式
插入形式的排序算法
*/
//冒泡排序
for(int x =0 ;x<arr.length; x++){
for(int y = 0 ; y <arr.length-x-1;y++){
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}

4、数组操作常见问题

ArrayIndexOutOfBoundsException 数组下标越界异常
NullPointerException 空指针异常,引用类型中最常见

java基础总结——数组的更多相关文章

  1. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  2. java基础&lpar;十&rpar; 数组类型

    1. 数组类简介   在java中,数组也是一种引用类型,即是一种类. 我们来看一个例子,理解一下数组类: public static void main(String[] args) { Class ...

  3. java 基础概念 -- 数组与内存控制

    问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. ...

  4. Java基础:数组的声明,循环,赋值,拷贝。

    数组的声明 一般有两种形式的声明: int[] a; int a[]; 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号. 声明一个数组,并没有将a真正的初始化为一个数组 ...

  5. Java基础总结--数组

    ---数组的定义---组织存储一组数据1.存放相同类型数据的集合--就是一种容器本质上变量也是一种容器--区别就是只存储了一个数据的容器--面对容器,而不是分散的数据eg.买一盘鸡蛋--蛋托其实就是容 ...

  6. java 基础知识-数组的7种算法(排序、求和、最值、遍历&period;&period;&period;)

    遍历 遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如 double[] score = new double[5]; Scanner in ...

  7. Java基础之数组类型

    对于Java,前面的一些基础概念不是很想写,看了看还是从数组开始写吧(毕竟数组是第一个引用类型,相对复杂一点),我也是学了JAVA不是很久,目前看完了JAVA的基础视频,还有JAVA疯狂讲义这本书的大 ...

  8. 黑马程序员——JAVA基础之数组

    ------- android培训.java培训.期待与您交流! ---------- 数组: 数组的定义: 数组是相同类型数据的集合, 描述的是相同类型的若干个数据按照一定的先后顺序排列组合而成,其 ...

  9. Java基础从数组到集合之间关键字的区别!!!!

    1.&& 和 &区别和联系: 相同点 : 结果是一样的.       不同点 :如果使用双&号判断,如果说条件一为false,不会判断条件二,但是单&号会继续判 ...

  10. java基础之数组常用操作

    常用的对数组进行的操作 1.求数组中最大值,最小值 思路:假设下标为0的元素是最大值,遍历数组,依次跟max进行比较,如果有元素比这个max还大,则把这个值赋给max.最小值同样 public cla ...

随机推荐

  1. [terry笔记]Oracle数据泵-schema导入导出

    数据泵是10g推出的功能,个人倒数据比较喜欢用数据泵. 其导入的时候利用remap参数很方便转换表空间以及schema,并且可以忽略服务端与客户端字符集问题(exp/imp需要排查字符集). 数据泵也 ...

  2. 使用Spring框架的好处(转帖)

    http://blog.csdn.net/cynhafa/article/details/6205361 在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为 ...

  3. Django学习(八)---修改文章和添加文章

    博客页面的修改文章和添加新文章 从主页点击不同文章的超链接进入文章页面,就是传递了一个id作为参数,然后后台代码根据这个参数从数据库中取出来对应的文章,并把它传递到前端页面 修改文章和添加新文章,是要 ...

  4. ASP&period;NET Core 2&period;0 in Docker on Windows Container

    安装Docker for Windows https://store.docker.com/editions/community/docker-ce-desktop-windows 要想将一个ASP. ...

  5. c&sol;c&plus;&plus; 网络编程 UDP 设定MTU

    网络编程 UDP 设定MTU MTU(Maximun Transmisson Unit):一次送信的最大size. 在程序里动态改变MTU.注意:程序运行需要root权限. 程序运行的方法: sudo ...

  6. TCP-IP详解笔记3

    TCP-IP详解笔记3 地址解析协议 IP协议的设计目标是为跨越不同类型物理网络的分组交换提供互操作. 网络层软件使用的地址和底层网络硬件使用的地址之间进行转换. 对于TCP/IP网络,地址解析协议( ...

  7. java 容器 List

    1.概念:Java容器类类库的用途是保存对象,容器中不能存储基本数据类型,必须是对象(引用数据类型) 2.为什么需要容器:主要是在以数组作为数据的存储结构中,其长度难以扩充,同时数组中元素类型必须相同 ...

  8. SQL Server 2012 安装过程详解&lpar;包含每一步设置的含义&rpar;

    转http://www.cnblogs.com/EastLiRoar/p/4051969.html 一.启动安装程序,点击“安装”选项卡,选择“全新SQL Server独立安装或向现有安装添加功能”. ...

  9. &lbrack;LeetCode&amp&semi;Python&rsqb; Problem 824&period; Goat Latin

    A sentence S is given, composed of words separated by spaces. Each word consists of lowercase and up ...

  10. offsetof使用小结

    先上例子 #include <stdio.h> #include <stdlib.h> /* offsetof example */ #include <stddef.h ...