1.数组:

01.一组 相同数据类型的集合!
02.数组在内存中会 开辟一串连续的空间来保存数据!

***存储30名学生的姓名!

01.姓名 应该用什么数据类型保存??? String
02.难道需要创建30个String类型的变量吗??? 不需要

*********

人类 [] 1号车厢=new 人类[50];
找到18号座位的乘客
1号车厢[18]="小黑";

*********

***数组的基本要素:
元素的类型: 人类 数组中每个元素的数据类型
标识符: 1号车厢 数组的名称
数组的长度: [50]
数组的元素:"小黑"
元素的下标:[18] 数组的下标从0开始!

想访问到数组中的元素,必须通过数组的下标来访问!

***语法:

数据类型 [] 数组名称=new 数据类型 [大小];

***使用:

01. 声明数组 创建一个火车车厢
int [] nums;

02.分配空间 给火车创建座位
nums=new int[5];

03.赋值 乘客入座
nums[0]=50;
**************************************************
数组的长度一旦被定义,不允许被改变!

**************************************************

2.经典案例

01.

public static void main(String args[]) {
/**
* 需求:
* 想创建一个能保存5名学员成绩的数组!
*
* 分析:
* 01.学员成绩都是double类型
* 02.5学员是一个集合
*
* 相同数据类型的一组数据的集合=======》数组
*/

// double[] scores = new double[5]; 在声明数组的同时,在内存中开辟了5个连续的空间!
// System.out.println(scores[5]); 数组下标越界

String[] scores;// 声明数组
scores = new String[5]; // 开辟空间

/**
scores[0] = "小黑1";
scores[1] = "小黑2";
scores[2] = "小黑3";
scores[3] = "小黑4";
scores[4] = "小黑5";
* 使用循环给5名学生的姓名赋值
*
* scores.length:获取数组的长度
*
* 数组的下标最大值=数组的长度-1
*/
Scanner input = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.println("请您输入下标是" + i + "的姓名");
scores[i] = input.next();
}

// 遍历==》把集合中的每个元素打印出来

for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}

}
02.

public static void main(String[] args) {
/**
* 求数组的最大值 和 最小值
*/

// 定义一个数组 参赛的选手
int[] nums = { 50, 20, 100, 30, 400, 800 };
// 默认第一个元素先上台 擂主
int max = nums[0];
// 循环比较 打擂
for (int i = 0; i < nums.length; i++) {
// 如果发现 元素比 我们的max值大,那就让这个元素成为max
if (nums[i] > max) {
max = nums[i];
System.out.println("历届的擂主:" + max);
}
}
System.out.println("我最NB==》" + max);

}

03.

/**
*
* 需求:
* 有一组数据{10,5,6,80,100}
* 01.循环输出数组中的每一个元素
* 02.求数组中所有元素的和
* 03.猜字游戏,让用户输入一个数字,然后进行循环比较
*/
public static void main(String[] args) {
// 创建一个数组 保存这组数据
int nums[] = { 10, 5, 6, 80, 100 };
// 定义一个变量保存总数
int sum = 0;
System.out.println("*****遍历数组******");
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
System.out.println(nums[i]);
}
System.out.println("总和为:" + sum);

System.out.println("请您输入一个数字:");
Scanner input = new Scanner(System.in);
int choose = input.nextInt();
boolean flag = false; // 默认没有找到
// 循环比较 于数组中的每一个元素进行比对
for (int i = 0; i < nums.length; i++) {
if (choose == nums[i]) {
flag = true;
break; // 找到之后直接退出循环
}
}
if (flag) {
System.out.println("恭喜您中奖!");
} else {
System.out.println("很遗憾......");
}

}

*******************************************************

3.拓展::::

01.

public class ArraysDemo02 {

/**
* Arrays是操作数组的工具类!
* int: 集合中每一个元素的数据类型
* num:只是一个变量名,保存每一个需要输出的元素
* nums:需要遍历的集合
* for(int num:nums){
* }
*/
public static void main(String[] args) {
int[] nums = { 50, 20, 100, 30, 400, 800 };
System.out.println("排序之前");
for (int num : nums) {
System.out.println(num);
}
// 01.实现数组的排序
Arrays.sort(nums);
// 使用for加强 实现遍历
System.out.println("排序之后");
for (int num : nums) {
System.out.println(num);
}
// 02.把数组转换成一个字符串
String result = Arrays.toString(nums);
System.out.println(result);
// 03.将数组中的所有元素都改变成一个值
Arrays.fill(nums, 521);
System.out.println("看看所有的元素是否被改变");
for (int num : nums) {
System.out.println(num);
}
System.out.println("新数组");
// 04.将数组复制成一个新数组
nums = Arrays.copyOf(nums, 10);
for (int num : nums) {
System.out.println(num);
}
// 05.查询某个元素 在 数组中的位置 前提 必须 先排序
int[] nums2 = { 50, 20, 100, 30, 400, 800 };
Arrays.sort(nums2);
int index = Arrays.binarySearch(nums2, 400);
System.out.println("400出现的位置是:" + index);

// 将一个Stirng类型的字符串转换成 char类型的数组
String a = "50,20,100,30,400,800";
char[] words = a.toCharArray();
for (char c : words) {
System.out.print(c);
}
}

02.

/**
* 需求:
* 01.以,为分割点,把String转换成一个数组
* 02.把String转换成int之后求和
*/
public static void main(String[] args) {
String a = "50,20,100,30,400,800";
String[] words = a.split(",");
// 定义一个变量保存 和
int sum = 0;
for (int i = 0; i < words.length; i++) {
sum += Integer.parseInt(words[i]);
}
System.out.println(sum);

System.out.println("*************字符的逆序输出***************");
char[] chars = { 'z', 'f', 'g', 'c', 'a', 'b', 'j' };
Arrays.sort(chars);
for (char c : chars) {
System.out.println(c);
}

for (int i = chars.length - 1; i >= 0; i--) {
System.out.println(chars[i]);
}

}

java⑾的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  10. c#与java的区别

    经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...

随机推荐

  1. 消息队列rabitMq

    rabbitmq MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息 ...

  2. dock容器操作命令

    删除容器 docker rm -f ams 删除镜像 docker rmi -f ams:351 构建镜像 docker build -t ams:351 . 启动容器 docker run  --p ...

  3. Codeforces 233 D - Table

    D - Table 思路:dp 首先,第i列的个数肯定和第i - n列个数一样,假设[i - n + 1, i - 1] 之间的个数之和为x,那么第i列和第i-n列的个数应该是n - x 那么我们可以 ...

  4. BZOJ 3585 mex

    题目已经没有了 思路: 莫队+分块 首先有一个结论:所有的答案都在0到n之间,用反正法就能证明,所以所有大于n的数都可以看成n 离线,对询问区间进行莫队,再对答案的范围0到n进行分块 复杂度(n+2* ...

  5. JAVA基础知识总结:十六

    一.File类 主要用于文件操作 对存储在磁盘上的文件和目录的抽取和封装 二.IO流 1.概念 File类只能创建或者修改文件或者文件夹的层级结构,如果要访问文件中的内容的话,就需要用到IO流(Inp ...

  6. 第 8 章 容器网络 - 057 - macvlan 网络隔离和连通

    macvlan 网络隔离和连通 验证 macvlan 之间的连通性. bbox1 能 ping 通 bbox3,bbox2 能 ping 通 bbox4. 即:同一 macvlan 网络能通信. bb ...

  7. Getting Started with Processing 第五章的easing问题

    分析 使用 easing easing 的感官目的是为了 draw 的时候,画的图形不是即时 mouseX 的值,而是稍有落后一点.从算法分析,就是让所画图形的 x 坐标 落后于 mouseX 的值, ...

  8. pandas更换index,column名称

    1)仅换掉index名称 df.index = list 2)调整index时,后面的项目也要跟着调整: df.reindex(list) 注意如果list中出现了df中没有的index,后面的项目会 ...

  9. Tomcat基本组件、其功能和处理请求的过程

      一.Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的组件是Catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中 Tomcat的各个组件是 ...

  10. 关于JAVA项目中的常用的异常处理情况总结

    1. JAVA异常处理 在面向过程式的编程语言中,我们可以通过返回值来确定方法是否正常执行.比如在一个c语言编写的程序中,如果方法正确的执行则返回1.错误则返回0.在vb或delphi开发的应用程序中 ...