Eclipse 和数组

Eclipse 安装和使用

...

数组的概述

数组(Array):是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

数组相关的概念:

  • 数组名;
  • 元素;
  • 下标或索引;
  • 数组的长度。

数组的特点:

  • 数组是有序排列的;
  • 数组属于引用数据类型的变量,但是数组的元素可以是任何数组类型;
  • 创建数组对象会在内存中开辟一整块连续的空间;
  • 数组的长度一旦确定,就不能修改。

数组的分类:

  • 按维数:一维、二维、...;
  • 按类型:基本数据类型的数组、引用数据类型的数组。

一维数组的使用

声明:

  • 声明方式:type var[];type[] var;
  • 声明数组时不能指定其长度,例如 int a[5]; 就非法。

初始化:

  • 动态初始化:数组声明且为数组元素分配空间 与 赋值的操作 分开进行;

    String[] names = new String[5];
    names[0] = "A1";
    names[1] = "A2";
    names[2] = "A3";
  • 静态初始化:数组声明且为数组元素分配空间 与 赋值的操作 同时进行;

    String[] names = {"AA", "BB", "CC"};
    // 或者
    String[] names = new String[]{"AA", "BB", "CC"};

数组元素的引用:

  • 定义并用运算符 new 为之分配空间后,才可以引用数组中的每个元素;
  • 数组元素的引用方式:数组名[数组元素下标]
  • 每个数组都有一个属性 length 指明它的长度,数组一旦初始化,其长度是不可变的。

数组元素的默认初始值:

  • 因为数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个也被按照成员变量同样的方式被隐式初始化

    public class Test{
    public static void main(String[] args) {
    int[] a= new int[5];
    for (int i = 0; i < a.length; ++i) {
    System.out.println(a[i]); // 0 0 0 0 0
    }
    }
    }
  • 对于基本数据类型而言,byte、short、int、long、float、double、char 均为 0,boolean 为 false;

  • 对于引用数据类型而言,默认初始化值为 null。

一维数组的内存解析

内存的典型结构:

  • 栈(stack):局部变量;
  • 堆(heap):new 出来的结构;
  • 方法区:
    • 常量池;
    • 静态域。
package com.parzulpan.java.ch03;

import java.util.Scanner;

/**
* @Author : parzulpan
* @Time : 2020-11-17
* @Desc : 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
* 成绩>=最高分-10 等级为’A’
* 成绩>=最高分-20 等级为’B’
* 成绩>=最高分-30 等级为’C’
* 其余 等级为’D’
*/ public class ArrayTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生人数:");
int studentNumber = scanner.nextInt();
int[] studentScores = new int[studentNumber];
int maxScore = 0;
int temp;
System.out.println("请输入 " + studentNumber + " 个成绩:");
for (int i = 0; i < studentScores.length; ++i) {
temp = scanner.nextInt();
studentScores[i] = temp;
if (maxScore < temp) {
maxScore = temp;
}
} System.out.println("最高分是:" + maxScore); char level;
for (int i = 0; i < studentScores.length; ++i) {
if (maxScore - 10 <= studentScores[i]) {
level = 'A';
} else if (maxScore - 20 <= studentScores[i]) {
level = 'B';
} else if (maxScore - 30 <= studentScores[i]) {
level = 'C';
} else {
level = 'D';
} System.out.println("student " + i + " , score is " + studentScores[i] + " , grade is " + level);
} }
}

二维数组的使用

多维数组:

  • Java 语言里提供了支持多维数组的语法;
  • 可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格;
  • 可以看成是一维数组 array1 又作为另一个一维数组 array2 的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组

初始化:

  • 动态初始化:

    int[][] arr = new int[3][2];  // 二维数组中有 3 个一维数组,每一个一维数组中有 2 个元素
    
    int[][] arr = new int[3][];   // 二维数组中有 3 个一维数组,每一个一维数组都是默认初始值 null
  • 静态初始化:

    int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
    // 或者
    int[][] arr = {{3,8,2},{2,7},{9,0,1,6}}; // 类型推断
  • 特殊的,int[] x, y[]; x 是一维数组,y 是二维数组;

  • Java 中多维数组不必都是规则矩阵形式。

数组元素的默认初始值:

  • 看程序得结论:

    public class Test {
    public static void main(String[] args) {
    int[][] arr = new int[4][3];
    System.out.println(arr); // 地址:[[I@2ff4f00f
    System.out.println(arr[0]); // 地址:[I@2ff4f00f
    System.out.println(arr[0][0]); // 0 String[][] arr2 = new String[4][2];
    System.out.println(arr2); // 地址:[[Ljava.lang.String;@3f0ee7cb
    System.out.println(arr2[0]); // 地址:[Ljava.lang.String;@75bd9247
    System.out.println(arr2[0][0]); // null String[][] arr3 = new String[4][];
    System.out.println(arr3); // 地址:[[Ljava.lang.String;@7d417077
    System.out.println(arr3[0]); // null
    System.out.println(arr3[0][0]); // Error
    }
    }

二维数组的内存解析

...

练习和总结


创建一个长度为 6 的 int 型数组,要求数组元素的值都在 1-30 之间,且是随机赋值。同时,要求元素的值各不相同。

package com.parzulpan.java.ch03;

/**
* @Author : parzulpan
* @Time : 2020-11-17
* @Desc : 创建一个长度为 6 的 int 型数组,要求数组元素的值都在 1-30 之间,且是随机赋值。同时,要求元素的值各不相同。
*/ public class genArray {
public static void main(String[] args) {
int[] arr = new int[6]; for (int i = 0; i < arr.length; ++i) {
arr[i] = (int)(Math.random() * 30) + 1; for (int j = 0; j < i; ++j) {
if (arr[i] == arr[j]) {
--i;
break;
}
}
} for (int value : arr) {
System.out.println(value);
}
}
}

【Java基础】Eclipse 和数组的更多相关文章

  1. Java 基础类型转换byte数组, byte数组转换基础类型

    Java 基础类型转换byte数组, byte数组转换基础类型 Java类型转换 java类对象转化为byte数组

  2. Java基础-Eclipse第三方安装包管理工具之Maven

    Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...

  3. java基础-Eclipse开发工具介绍

    java基础-Eclipse开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 所谓工欲善其事必先利其器,即将身为一名Java开发工程师怎么能没有一款好使的IDE呢?今天就 ...

  4. Java基础语法(7)-数组

    title: Java基础语法(7)-数组 blog: CSDN data: Java学习路线及视频 1.数组的概述 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并 ...

  5. Java基础语法(8)-数组中的常见排序算法

    title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...

  6. Java基础--Eclipse使用

    Eclipse是JavaWeb开发最常用的工具,下面详细介绍一下如何下载安装最新版Eclipse.本文eclipse的使用是在JDK安装配置完成的基础上进行的,否则Eclipse安装后可能无法运行程序 ...

  7. Java基础语法(数组)

    第4天 Java基础语法 今日内容介绍 u 流程控制语句(switch) u 数组 第1章 流程控制语句 1.1 选择结构switch switch 条件语句也是一种很常用的选择语句,它和if条件语句 ...

  8. Java基础学习之数组基本属性和方法

    数组对于每一门编程语言都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同.Java语言中提供的数组是用来存储固定大小的同类型元素.你可以声明一个数组变量,如 int[100] 来代替直接 ...

  9. Java基础复习之数组

    Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...

  10. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))    二维数组(二维数组的遍历.排序.查找.定义. ...

随机推荐

  1. windows安装程序无法将windows配置为在此计算机上运行

    ----------------------------------------------- 解决办法: 当出现如上提示的时候,按下shift+f10 会打开命令窗口,进入到C:\windows\s ...

  2. 题解-SHOI2005 树的双中心

    SHOI2005 树的双中心 给树 \(T=(V,E)(|V|=n)\),树高为 \(h\),\(w_u(u\in V)\).求 \(x\in V,y\in V:\left(\sum_{u\in V} ...

  3. 如何理解group by语句

    参考文章: https://blog.csdn.net/hao1066821456/article/details/69556644 如何实现一对多关系,得到一行多列的显示方式: group by可以 ...

  4. MySQL(一):MySQL数据库事务与锁

    基本概念 事务是指满足ACID特性的的一组操作,可以通过Commit提交事务,也可以也可以通过Rollback进行回滚.会存在中间态和一致性状态(也是真正在数据库表中存在的状态) ACID Atomi ...

  5. STL——容器(List)List 的概念

    1. List 容器的基本概念 1. list 是一个双向链表容器,可高效的进行插入删除元素,他的原理在于每个元素都有两个指针来记录前后两个元素的地址,像火车车厢一样,list 中各个元素在物理存储单 ...

  6. DVWA各级文件包含漏洞

    File Inclusion文件包含漏洞 漏洞分析 程序开发人员通常会把可重复使用的函数写入到单个文件中,在使用某些函数时,直接调用此文件,而无需再次编写,这种调用文件的过程被称为包含. 有时候由于网 ...

  7. django 初始化项目 和modelviewset 使用

    django初始化项目 1.初始化项目结构└─shiyanlou_project │ .gitignore│ README.en.md # 英文│ README.md # 中文项目简介│├─celer ...

  8. linux之文本编辑器vi常用命令

    由于经常在linux下面文本操作,所以这里稍微系统的总结一下自己常用的vi命令 1.打开命令: vi+filename  (还有各种打开的姿势,只不过我比较顺手这个) 2.退出命令: :q   退出而 ...

  9. Python读写EXCEL文件常用方法大全

    前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...

  10. 阿里云服务器Centos7上使用Nginx部署https协议的网站

    1,申请域名证书成功后,下载压缩包,一定要选择Nginx的证书类型,解压后得到一个key文件一个pem文件,将这两个文件上传到服务器的root目录 2,打开nginx配置文件 vim /etc/ngi ...