Java数组

—————————————————————————————————————————————————————————

1.数组

  • 数组:存储批量数据。除此之外还有,二维数组,对象,集合……

  • 数组使用的原因:

    用变量存储批量数据,代码会非常臃肿;

    对于类型相同的大批量数据,使用数组存储,明显优于用多个变量进行存储。

  • 静态初始化:

// 1>. 定义一个数组,用来存储5个学生的姓名
// 静态初始化一个数组:定义数组的时候,数据已经确定好了
String names [] = new String[] {"张三","李四","王五","赵六","孙七"};
  • 数组是一个数据容器,用来存储一批同类型的数据。

    数组的访问,为数组某个位置赋值,获取数组的长度(元素个数)

  • 数组的动态初始化:

// 1). 需要一个数组来存储8名同学的成绩
// 动态初始化数组,只确定数组的类型和存储数据的容量
// 数据类型 [] 数组名 = new 数据类型 [数组容量];
double [] scores = new double [8];
// scores = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
// 0 1 2 3 4 5 6 7 Scanner sc = new Scanner(System.in); // 2). 录入8个同学的java成绩,并把成绩存入数组中
for (int i = 0; i < scores.length; i++) {
System.out.println("请输入第" + (i + 1) + "个同学的java成绩:");
scores[i] = sc.nextDouble();
}
  • 一维数组的随机访问:
// 2>. 随机获取一个索引值
// Math.random() : [0 - 1)
// names.length : 是数组长度,即元素个数 15
// Math.random() * names.length : [0 - 15) =====> [0, 14]
int index = (int)(Math.random() * names.length); // 3>. 打印数组中的元素
System.out.println("总共有" + names.length +"个学生,随机抽一个同学是:" + names[index]);
System.out.println(names);

2.二维数组

  • 二维数组运用:桌面类型游戏的开发——塔牌游戏。

  • 静态初始化:

// 数据类型 [] [] 数组名  = new 数据类型 [] [] { { },{ },{ }...}
// 其中 new 数据类型 [] [] 可以省略
String [][] classmates = {
{"张无忌", "赵敏","周芷若"},
{"张三丰", "宋远桥", "殷梨亭"},
{"灭绝师太", "陈坤","玄冥二老","金毛狮王"},
{"杨逍", "纪晓芙"}
};
  • 动态初始化:
// 数据类型 [ ] [ ] 数组名  = new 数据类型 [长度1] [长度2]
// 动态初始化数组
int [][] arr = new int [3][5];
  • 随机的思路:(假设数组中有n个数据)

    思路一:遍历数组,每次从数组中随机一个位置,然后将当前位置的数和随机位置交换;

    思路二:遍历n次,每次随机两个位置出来,将两个位置的数交换。
// 思路一:
for (int i = 0; i < poker.length; i++) {
int index = (int)(Math.random() * 54); // =====> 0 ~ 53
// 每次随机一个位置,将两个位置的数交换
String temp = poker[i];
poker[i] = poker[index];
poker[index] = temp;
} // 思路二:
for (int i = 0; i < poker.length; i++) {
int index1 = (int)(Math.random() * 54); // =====> 0 ~ 53
int index2 = (int)(Math.random() * 54); // =====> 0 ~ 53
// 每次随机两个位置,将两个位置的数交换
String temp = poker[index1];
poker[index1] = poker[index2];
poker[index2] = temp;
}

3.其他

  • 动态初始化数组元素默认值

    基本类型:

    byte、short、char、int、long =====> 0

    float、double =====> 0.0

    boolean =====> false

    引用类型:

    类、接口、数组、String =====>null

  • 求最值代码的优化:

    找数组比较浪费性能,所以多用变量进行代码运算,少用数组参与运算

// 遍历数组,统计总分,统计最高分,统计最低分,算平均成绩
// 找最值代码的优化:找数组比较浪费性能
public static void FindMaxAndMin(double scores []) {
double grade = scores[0]; // 优化一
double allScore = grade ;
double max = grade ;
double min = grade ;
// 从数组的第二个位置开始遍历
for (int i = 1; i < scores.length; i++) {
// 通过一个变量,把当前遍历到的这个分数保存起来,只需要找一次数组
double score = scores[i]; // 优化二
if (score > max) {
max = score;
}
if (score < min) {
min = score;
}
allScore += score;
}
System.out.println("总分:" + allScore);
System.out.println("平均分:" + allScore / scores.length);
System.out.println("最高分:" + max);
System.out.println("最低分:" + min); }

day04-数组的更多相关文章

  1. 基础学习day04---数组的操作

    一.数组基本常见操作 1.1.静态初始化 //第一种声明 //第一种声明 int [] arr=new int[5]; //第二种声明 int [] arr1=new int[]{5,3,8,1,9, ...

  2. Day04 dom详解及js事件

    day04 dom详解 DOM的基础 Document对象 Element对象 Node对象 innerHTML 事件处理 表单验证   上次课内容回顾: JS中ECMAScript用法: JS定义变 ...

  3. python开发学习-day04(迭代器、生成器、装饰器、二分查找、正则)

    s12-20160123-day04 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  4. 使用数组实现ArrayList的效果

    package day04.d2.shuzu; /** * 通过数组实现类似于集合的功能 * 包含功能有: * * 动态添加元素 * 在指定位置添加元素 * * 删除指定下标的元素 * 删除指定内容的 ...

  5. java中的数组的Arrays工具类的使用

    package day04.d1.shuzu; import java.util.Arrays; /** * Arrays 工具类 * @author Administrator * */public ...

  6. 关于java基础_数组的学习

    数组的学习 1.数组的概念?作用是什么? 系统中存储多个值, 2.数组的定义? 数据类型[] 数组名; 3.定义好数组以后需要对其进行初始化 数组初始化有两种: 第一种动态初始化,指定数组的长度,长度 ...

  7. java基础:数组详解以及应用,评委打分案例实现,数组和随机数综合,附练习案列

    1.数组 1.1 数组介绍 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致. 1.2 数组的定义格式 1.2.1 第一种格式 数据类型[] 数组名 示例: int[] arr;     ...

  8. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  9. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  10. 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)

    建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...

随机推荐

  1. 在matlab中使用遗传算法执行最优化

    遗传算法是一种通用的最优化方法,具体原理可以看:遗传算法详解与实验.下面记录在Matlab中如何使用遗传算法来做优化. 用法 调用方式如下: 1 x = ga(fun,nvars) 2 x = ga( ...

  2. 如何使用建造者模式(Builder Pattern)创建不可变类

    本文由 ImportNew - 唐小娟 翻译自 Journaldev.如需转载本文,请先参见文章末尾处的转载要求. ImportNew注:如果你也对Java技术翻译分享感兴趣,欢迎加入我们的 Java ...

  3. Kibana之基本使用

    介绍kibana经常使用的功能 查询: # 查询内容不为空的数据,并返回总数量 GET mp_article/_search?rest_total_hits_as_int=true { "q ...

  4. JPEG格式研究——(4)反量化、逆ZigZag变化和IDCT变换

    反量化 反量化其实很简单,将霍夫曼解码出来的数据乘上对应的量化表就好了 通过当前色度选择出SOF中的Component,其中的Tqi指出了这一色度所需的量化表id Component的结构如下: 名称 ...

  5. HZNUOJ-1503公路乘车--DP

    题目传送门:https://acm.hznu.edu.cn/OJ/problem.php?id=1503 题解:我们发现后一状态由前一状态决定,即后一公里由前面十公里的状态决定,经典 dp,我们直接列 ...

  6. spring 使用 事件机制

    概述 在编写代码的时候,比如我删除一篇文章,这个时候,如果我想做些额外的逻辑,这是就需要修改删除部分的代码.spring 提供了事件机制更优雅的实现这个,用户只需要实现事件监听即可. 代码实现 注入发 ...

  7. require.js 笔记

    1.前言 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用.单元测试等等一系列 ...

  8. bat隐藏窗口运行

    在bat脚本开头添加: if "%1" == "h" goto begin mshta vbscript:createobject("wscript. ...

  9. electron postinstall$ node install.js报错

    本来以为是文件路径错了执行失败,手动去执行了下install.js,还是报错,但是不一样是连接超时 试了几种办法,简单直接就是如下方法 1:从项目node_modules中找到electron下的in ...

  10. 腾讯技术岗位笔试&面试题(五)

    说在前面 本篇文章是腾讯技术面试题目汇总第五篇. 后续将持续推出互联网大厂,如阿里,腾讯,百度,美团,头条等技术面试题目,以及答案和分析. 欢迎大家点赞关注转发. 1.define.const.typ ...