4修改初始值_Java基础语法 --4(连载)

f606ecdfb920977717dc1a75a6c7e27b.png

第一部分 : IDEA开发工具

参见 :IEDA的安装请参考文件夹PPT中的 04_IDEA.ppt

1.数组

1.1 数组介绍

​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。

1.2 数组的定义格式

1.2.1 第一种格式

​ 数据类型[] 数组名

​ 示例:

int[] arr;        
double[] arr;      
char[] arr;

1.2.2 第二种格式

​ 数据类型 数组名[]

​ 示例:

int arr[];
double arr[];
char arr[];

1.3 数组的动态初始化

1.3.1 什么是动态初始化

​ 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值

1.3.2 动态初始化格式

数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];

1.3.3 动态初始化格式详解

  • 等号左边:
  • int:数组的数据类型
  • []:代表这是一个数组
  • arr:代表数组的名称
  • 等号右边:
    • new:为数组开辟内存空间
    • int:数组的数据类型
    • []:代表这是一个数组
    • 5:代表数组的长度

代码 :

package com.itheima.array;public class Demo2Array {/*数组的动态初始化:在初始化的时候, 需要手动指定数组的长度, 系统会为数组容器分配初始值.动态初始化格式:数据类型[] 数组名 = new 数据类型[数组的长度];注意:打印数组变量的时候, 会打印出数组的内存地址[I@10f87f48 :@ : 分隔符[ : 当前的空间是一个数组类型I : 当前数组容器中所存储的数据类型10f87f48 : 十六进制内存地址0 1 2 3 4 5 6 7 8 9 a b c d e f*/public static void main(String[] args) {// 数据类型[] 数组名 = new 数据类型[数组的长度];// 通过new关键字创建了一个int类型的数组容器, 该容器可以存储5个int类型的整数, 该容器被arr数组变量所记录int[] arr = new int[5];// [I@10f87f48System.out.println(arr);byte[] bArr = new byte[3];// [B@b4c966aSystem.out.println(bArr);}
}

1.4 数组元素访问

1.4.1 什么是索引

​ 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。

​ 这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

1.4.2访问数组元素格式

数组名[索引];

1.4.3示例代码

package com.itheima.array;public class Demo3ArrayIndex {/*数组动态初始化:初始化的时候, 手动指定数组长度, 系统会为数组容器分配初始值.数组的元素访问格式:数组名[索引]索引: 数组中数据的编号方式, 编号从0开始作用: 访问数组容器中的空间位置注意:数组在创建完毕后, 即使没有赋值, 也可以取出, 但取出的元素都是默认初始化值.*/public static void main(String[] args) {int[] arr = new int[3];         // 0 1 2System.out.println(arr);        // 数组的内存地址  [I@10f87f48// 数组名[索引]  访问数组容器中的空间位置System.out.println(arr[0]);     // 0  系统自动分配的默认初始化值System.out.println(arr[1]);System.out.println(arr[2]);System.out.println("--------------");// 数组名[索引]arr[0] = 11;arr[1] = 22;arr[2] = 33;System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}

1.5 内存分配

1.5.1 内存概述

​ 内存是计算机中的重要原件,临时存储区域,作用是运行程序。

​ 我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。

​ 必须放进内存中才能运行,运行完毕后会清空内存。

​ Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

1.5.2 java中的内存分配

  • 目前我们只需要记住两个内存,分别是:栈内存和堆内存

| 区域名称 | 作用 | | ---------- | ---------------------------------------------------------- | | 寄存器 | 给CPU使用,和我们开发无关。 | | 本地方法栈 | JVM在使用操作系统功能的时候使用,和我们开发无关。 | | 方法区 | 存储可以运行的class文件。 | | 堆内存 | 存储对象或者数组,new来创建的,都存储在堆内存。 | | 方法栈 | 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。 |

1.6 Java内存分配-一个数组内存图

8d42a8b9ba4907019a11a67047af71e2.png

1.7 两个数组内存图

8d42a8b9ba4907019a11a67047af71e2.png

1.8 多个数组指向相同内存图

8d42a8b9ba4907019a11a67047af71e2.png

1.9 数组的静态初始化

1.9.1 什么是静态初始化

​ 在创建数组时,直接将元素确定

1.9.2 静态初始化格式

  • 完整版格式

java 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};

  • 简化版格式

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

1.9.3示例代码

package com.itheima.array2;
public class Demo1Array {/*数组静态初始化 : 初始化时指定每个数组元素的初始值,由系统决定数组长度完整格式:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};简化格式:数据类型[] 数组名 = {数据1,数据2,数据3...};*/public static void main(String[] args) {// 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...};int[] arr = new int[]{11,22,33};System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);// 数据类型[] 数组名 = {数据1,数据2,数据3...};int[] arr2 = {44,55,66};System.out.println(arr2);System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);}
}

1.10 数组操作的两个常见问题

1.10.1 索引越界异常

  • 出现原因

java public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr[3]); } }

数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。

程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

  • 解决方案

将错误的索引修改为正确的索引范围即可!

1.10.2 空指针异常

  • 出现原因

```java public class ArrayDemo { public static void main(String[] args) { int[] arr = new int[3];

//把null赋值给数组arr = null;System.out.println(arr[0]);}

} ```

arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

  • 解决方案

给数组一个真正的堆内存空间引用即可!

1.11 数组遍历

  • 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

java public class ArrayTest01 { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr[3]); System.out.println(arr[4]); } }

以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。

```java public class ArrayTest01 { public static void main(String[] args) { //定义数组 int[] arr = {11, 22, 33, 44, 55};

//使用通用的遍历格式for(int x=0; x<arr.length; x++) {System.out.println(arr[x]);}}

} ```

1.12 数组获取最大值

  • 最大值获取:从数组的所有元素中找出最大值。
  • 实现思路:
  • 定义变量,保存数组0索引上的元素
  • 遍历数组,获取出数组中的每个元素
  • 将遍历到的元素和保存数组0索引上值的变量进行比较
  • 如果数组元素的值大于了变量的值,变量记录住新的值
  • 数组循环遍历结束,变量保存的就是数组中的最大值
  • 代码实现:

```java package com.itheima.test;

import java.util.Scanner;

public class Test2Array { /* 需求: 从数组中查找最大值

int[] arr = {12,45,98,73,60};实现步骤:1. 假设数组中的第一个元素为最大值2. 遍历数组, 获取每一个元素, 准备进行比较3. 如果比较的过程中, 出现了比max更大的, 让max记录更大的值4. 循环结束后, 打印最大值.*/public static void main(String[] args) {int[] arr = {12,45,98,73,60};// 1. 假设数组中的第一个元素为最大值int max = arr[0];// 2. 遍历数组, 获取每一个元素, 准备进行比较for(int i = 1; i < arr.length; i++){// 3. 如果比较的过程中, 出现了比max更大的, 让max记录更大的值if(arr[i] > max){max = arr[i];}}//  4. 循环结束后, 打印最大值.System.out.println("max:" + max);}

}

```

1.13 数组元素求和

  • 需求:键盘录入5个整数,存储到数组中,并对数组求和
  • 思路: 1.创建键盘录入对象,准备键盘录入 2.定义一个求和变量,准备记录累加后的结果 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 4.将键盘录入的数值存储到数组中 5.遍历数组,取出每一个元素,并求和 6.输出总和
  • 代码实现:

```java package com.itheima.test;

import java.util.Scanner;

public class Test3Array { /* 需求:键盘录入5个整数,存储到数组中,并对数组求和

思路:1.创建键盘录入对象,准备键盘录入2.定义一个求和变量,准备记录累加后的结果3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值4.将键盘录入的数值存储到数组中5.遍历数组,取出每一个元素,并求和6.输出总和*/public static void main(String[] args) {// 1.创建键盘录入对象,准备键盘录入Scanner sc = new Scanner(System.in);// 2.定义一个求和变量,准备记录累加后的结果int sum = 0;// 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值int[] arr = new int[5];// 4.将键盘录入的数值存储到数组中for(int i = 0; i < arr.length; i++){System.out.println("请输入第" + (i+1) + "个整数:");//arr[i] = 10;arr[i] = sc.nextInt();}// 5.遍历数组,取出每一个元素,并求和for (int i = 0; i < arr.length; i++) {sum += arr[i];}// 6.输出总和System.out.println("sum:" + sum);}

}

```

1.14 数组基本查找【应用】

  • 需求: 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引,并在控 制台输出找到的索引值。
  • 思路: 1.定义一个数组,用静态初始化完成数组元素的初始化 2.键盘录入要查找的数据,用一个变量接收 3.定义一个索引变量,初始值为-1 4.遍历数组,获取到数组中的每一个元素 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 6.输出索引变量
  • 代码实现:

```java public static void main(String[] args) { // 1.定义一个数组,用静态初始化完成数组元素的初始化 int[] arr = {19, 28, 37, 46, 50}; // 2.键盘录入要查找的数据,用一个变量接收 Scanner sc = new Scanner(http://System.in); System.out.println("请输入您要查找的元素:"); int num = sc.nextInt(); // 3.定义一个索引变量,初始值为-1 // 假设要查找的数据, 在数组中就是不存在的 int index = -1; // 4.遍历数组,获取到数组中的每一个元素 for (int i = 0; i < arr.length; i++) { // 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 if(num == arr[i]){ // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 index = i; break; } } // 6.输出索引变量 System.out.println(index); } }

```

1.15 评委打分【应用】

  • 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。
  • 思路: 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 2.键盘录入评委分数 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 4.求出数组最大值 5.求出数组最小值 6.求出数组总和 7.按照计算规则进行计算得到平均分 8.输出平均分
  • 代码实现:

```java public static void main(String[] args) { // 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 int[] arr = new int[6]; // 2.键盘录入评委分数 Scanner sc = new Scanner(http://System.in); // 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 for (int i = 0; i < arr.length; i++) { System.out.println("请输入第" + (i+1) + "个评委的打分:"); int score = sc.nextInt(); if(score >= 0 && score <= 100){ // 合法的分值 arr[i] = score; }else{ // 非法的分值 System.out.println("您的打分输入有误, 请检查是否是0-100之间的"); i--; } }

// 4.求出数组最大值int max = arr[0];for (int i = 1; i < arr.length; i++) {if(max < arr[i]){max = arr[i];}}// 5.求出数组最小值int min = arr[0];for (int i = 1; i < arr.length; i++) {if(min > arr[i]){min = arr[i];}}// 6.求出数组总和int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}// 7.按照计算规则进行计算得到平均分int avg = (sum - max - min ) / 4;// 8.输出平均分System.out.println(avg);}

} ```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python字典常用方法_Python 字典的常见操作

字典 字典的增删改查 字典的创建方式&#xff1a; #创建字典类型 info {name:李白,age:25,sex:男} msg{user01:Longzeluola,user02:xiaozemaliya,user03:cangjingkong} 字典存储数据的时候&#xff0c;采取的是key:value的形式&#xff0c;是一组无序的存储。在需要的时候通过k…

华为薪资等级结构表_华为21级程序员月薪曝光:月薪27w,什么概念!程序员中的战斗机...

最近,一名 HR 在网上发布了一个内容。该公司表示在招聘简历中找到了华为高管的简历,简历的级别为 21 级,月薪为 27 万,这确实令人惊讶。 华为的等级,估计很多人都不清楚。华为的等级从低到高,数字越高,等级越大,一般的应届生进入的是 13 级,正常的发展速度是 3 年升一…

eclipse maven项目 class类部署不到tomcat下_Springboot2.0学习3 项目部署到tomcat

一、说明本文接上一篇内容&#xff0c;在上一篇基础上完成部署到Tomcat的过程本文学习资源来自SpringBoot官网二、 代码修改1. 准备好上节完成的代码2. 把启动类从SpringBootServerletInitializer派生&#xff0c;用来支持WAR部署Application.java修改后如下&#xff1a;packag…

显卡服务器已停止响应,电脑提示显卡驱动已停止响应并且已成功恢复该怎么解决?...

“显卡驱动已停止响应&#xff0c;并且已成功恢复”这种问题就本人来说是因为显卡配置出现问题&#xff0c;比如我使用的3D图形软件MAYA2015对显卡要求比较高&#xff0c;我使用默认配置没有配置正确。所以说&#xff0c;显卡的等级是硬条件&#xff0c;实在不行建议买个外接独…

android int 首位值_Android应用视图的管理者Window

点击上方蓝色文字关注我哦Window在Android是一个窗口的概念&#xff0c;日常开发中我们和它接触的不多&#xff0c;我们更多接触的是View&#xff0c;但是View都是通过Window来呈现的&#xff0c;Window是View的直接管理者。而WindowManager承担者管理Window的责任。窗口类型Wi…

java正则匹配英文句号_Scala 正则表达式 0411

Scala 正则表达式Scala 通过 scala.util.matching 包中的 Regex 类来支持正则表达式。以下实例演示了使用正则表达式查找单词 Scala :import scala.util.matching.Regexobject Test {def main(args: Array[String]) {val pattern "Scala".rval str "Scala is …

撤销前进快捷键_电脑win7系统的快捷键大全

电脑在日常工作中经常需要使用到系统自带的快捷键&#xff0c;这样能够大大提高工作效率&#xff0c;比使用鼠标去点击查找方便省事多了&#xff0c;比如常用的复制(Ctrlc)粘贴(Ctrlv)&#xff0c;今天就来给大家讲讲Windows系统的快捷键&#xff0c;可以说是快捷键大全啦。一、…

jedis依赖_SpringBoot整合Jedis实现redis缓存

我是一个java开发者&#xff0c;我的文章&#xff0c;没有华丽的言辞&#xff0c;没有666的版式&#xff0c;这些都是我自己工作中用到的解决方案&#xff0c;很多都是直接粘贴的源码&#xff0c;在这里与君分享。如果喜欢这里文章可以关注我&#xff0c;我回继续发的&#xff…

软件文档 服务器上,服务器上需要什么软件

服务器上需要什么软件 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。MindStudio所在的环境为开发环境&#xff0c;开发人员可以进…

服务器补丁 系统,操作系统补丁服务器

操作系统补丁服务器 内容精选换一换北京时间1月3日&#xff0c;Intel处理器芯片被曝出存在严重的Meltdown和Spectre安全漏洞&#xff0c;漏洞详情如下&#xff1a;漏洞名称&#xff1a;Intel处理器存在严重芯片级漏洞漏洞编号&#xff1a;CVE-2017-5753、CVE-2017-5715、CVE-20…

matlab 周立功can_隐藏在CAN协议底层的编码方式——到底是大端还是小端?

当我们想要讨论CAN协议底层发送到数据线上的二进制信号的编码方式时&#xff0c;最值得关注的两点是&#xff1a;字节编码&#xff08;Endianness&#xff09;和比特顺序&#xff08;Bit Numbering&#xff09;。先一句话揭晓答案&#xff1a;CAN协议的字节编码是大端编码&…

samba服务器新建文件权限,Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析...

Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析发布时间&#xff1a;2011-01-04 19:10:00 作者&#xff1a;佚名 我要评论本文是基于ubuntu桌面版进行操作说明的。前面的设置都是管理员进行的&#xff0c;这里说的管理员就是可以使用sudo命令&am…

flashpaper打印机没有被正确安装_没有正确保存与安装,可导致80%的轴承提早失效...

轴承损坏可谓司空见惯&#xff0c;可您是否知道&#xff0c;80%的轴承提早失效是因为没有正确地安装。轴承的正确安装&#xff0c;不仅可以增加轴承的使用寿命&#xff0c;降低成本&#xff0c;还可以大大提高生产效益。轴承安装与常规其他部件安装有很大区别&#xff0c;为了实…

rabbitmq实例_RabbitMQ不得不知道的点

RabbitMQ的优缺点优点这边的流量削峰功能主要应用在秒杀活动中&#xff0c;在秒杀活动中一般因为流量过大&#xff0c;导致应用挂掉&#xff0c;为了解决这个问题&#xff0c;在应用前端、库存系统前端加入消息队列&#xff0c;在订单系统中&#xff0c;服务器收到用户的请求后…

图片优化_网站里的图片应该如何优化

我们一直都在做网站关键词、内页关键词、标签等。但很多朋友都忽略了网站里的图片如何优化。近年来百度图片识别、360图片识别都在不断升级功能上已经很完善了&#xff0c;所以我们应该对网站图片进行优化&#xff0c;应该做seo的朋友们重视起来&#xff0c; 下面笔者跟大家分享…

rabbitmq 取消消息_mall整合RabbitMQ实现延迟消息

本文主要讲解mall整合RabbitMQ实现延迟消息的过程&#xff0c;以发送延迟消息取消超时订单为例。项目使用框架介绍RabbitMQRabbitMQ是一个被广泛使用的开源消息队列。它是轻量级且易于部署的&#xff0c;它能支持多种消息协议。RabbitMQ可以部署在分布式和联合配置中&#xff0…

vue 将行转换成对象_Vue简化版实现

Vue整体结构Vue: 把data中的成员注入到Vue实例&#xff0c;并且把data中的成员转换成getter, setterObserver: 劫持对象的所有属性&#xff0c; 如有变动可拿最新的值&#xff0c; 通知DepCompiler&#xff1a;解析每一个元素中的指令/插值表达式, 替换成相应的数据Dep: 发布者…

python 如何修改字典的key值_如何使用python技术完成数据集缺失值多种应用场景的滤除或填充?...

前言在数据处理的过程中&#xff0c;我们应该都有这样的体会&#xff0c;本质上数据处理与分析是相互协作&#xff0c;彼此成就的过程。比如&#xff0c;我们会用数据分析统计数据集中的缺失值、异常值&#xff0c;更直观的也会进阶到数据可视化的部分(到达该部分一般是成了文章…

python graphics 清空 图_【手把手教你】使用Python玩转金融时间序列模型

01引言上一篇推文【Python量化基础】时间序列的自相关性与平稳性着重介绍了时间序列的一些基础概念&#xff0c;包括自相关性、偏自相关性、白噪声和平稳性&#xff0c;以及Python的简单实现。本文在此基础上&#xff0c;以沪深300指数收益率数据为例&#xff0c;探讨如何使用P…

postman linux_Postman使用

postman简介官网https://learning.getpostman.com/用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的&#xff0c;用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的…