java学习--day6(数组)

文章目录

      • day5作业
      • 今天的内容
      • 1.数组
        • 1.1开发中为啥要有数组
        • 1.2在Java中如何定义数组
        • 1.3对第二种声明方式进行赋值
        • 1.4对数组进行取值
        • 1.5二维数组【了解】
        • 1.6数组可以当成一个方法的参数【重点】
        • 1.7数组可以当成一个方法的返回值
        • 1.8数组在内存中如何分配的【了解】
      • 2.数组方法循环分支的练习题

day5作业

1.八大基本数据类型整型:  byte short  int long 浮点:  double  float字符: char布尔: boolean2.声明变量的语法格式数据类型 变量名字 = 初始化的值;
3.使用for循环打印等腰三角形for (int i = 1; i <= 4; i++) {for (int j = 1; j <= 4 - i; j++) {System.out.print(" ");}for (int k = 1; k <= (2 * i - 1); k++) {System.out.print("*");}System.out.println();}
4.break和continue关键字的简单介绍 break: swicth-case  和循环里面 终止 打断continue: 循环  结束本次循环 执行下一次循环
5.四种方法的语法格式分别列出来无参无返回值的方法: public static void 方法的名字 () {}  public static void 方法名字(数据类型  形参,....) {}public static 数据类型 方法名字 () {return 返回值}public static 数据类型 方法名字 (数据类型 形参) {return 返回值}
1.写一个方法,判断一个字符是否是英文字符(大写和小写)2.写一个方法将一个整数逆序换行打印int a = 3456;65433.写一个方法,控制台输入哪一个年份,判断是否是闰年4.写一个方法判断一个数字是否是正数
5.写一个方法输出1-100之间不能被5整除的数,每5个一行
6.写一个方法求出1-1/2+1/3-1/4……1/100
7.写一个方法 求1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+……+100)
package com.qfedu.b_homework;import java.util.Scanner;public class Demo1 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("输入一个字符:");char c = scanner.next().charAt(0);isEnglish(c);}//判断是否是英文字符public static void isEnglish (char c) {if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {System.out.println("是英文字符");} else {System.out.println("不是英文字符");}}
}
package com.qfedu.b_homework;public class Demo2 {public static void main(String[] args) {int i1 = 3456;reverse(i1);}//对一个int类型的数据进行倒序的打印public static void reverse (int a) {/*** i=3456   3456 != 0 true sout(3456%10) 6  i=i/10 345* i=345    345 != 0 true sout(345%10)  5 i=i/10  34* i=34    34!=0  true sout(34 %10) 4  i=i/10 3* i=3  3!= 0 true  sout(3%10) 3  i=i/10 0* i=0 0!= 0 false 循环结束*/int i = a;while (i != 0) {System.out.println(i % 10);i = i / 10;}}}

今天的内容

数组

1.数组

1.1开发中为啥要有数组

如果开发中出现了大量的同一类型的数据的时候,如果按照现在所学,声明变量的话,进行数据的存储。

这样的话,变量很多。相当麻烦

使用数组:只需要声明一个变量,然后存储多个数据

把他们当成一个容器即可

1.2在Java中如何定义数组

变量:

​ 数据类型 变量名字 = 初始化的值;

数组定义的语法格式:

第一种定义方式:

数据类型[] 数组变量名字 = {值1, 值2, 值3,......};
或者
数据类型 数组变量名字 []= {值1, 值2, 值3,......};

第二种声明方式:

数据类型[]  数组变量名字 = new 数据类型[容量];

第三种声明方式:

数据类型[] 数组变量名字 = new 数据类型[]{值1, 值2, 值3,.....};
是第一种的简写情况
package com.qfedu.c_array;public class Demo1 {public static void main(String[] args) {//使用第一种方式声明数组//声明数组并赋值,这个数组里面存了三个值int[] arr = {12, 56, 89};float f1[] = {34.2f, 89.78f, 76.345f};char[] ch1 = {'中', 'a', '2'};boolean[] b1 = {false, true, false};String[] strs = {"学虎", "腾飞", "狗蛋"};//使用第二种声明方式//声明的这个数组的容量是3,就意味着可以存放3个数据//仅仅是声明了一个容器而已。里面还没有放值,但是会存放默认的值//如果是int  默认值就是0 [0, 0, 0]int[] arr1 = new int[3];boolean[] b2 = new boolean[2];//[false,false]String[] strs1 = new String[3];//[null, null, null]//第三种写法int[] arr2 = new int[] {34, 56, 7,8};}}

脑海里面想到一个问题 第二种声明方式没有对数组进行赋值

1.3对第二种声明方式进行赋值

package com.qfedu.c_array;import java.util.Arrays;public class Demo2 {public static void main(String[] args) {int[] arr = new int[3];//只能存3个元素//[0, 0, 0]//对空的容器进行赋值arr[0] = 12;//[12, 0,0]  将12赋值给下标为0的位置arr[1] = 13;//[12, 13, 0]//arr[2] = 14;//[12, 13, 14]//数组下标越界的//arr[3] = 78;//打印一下看看结果System.out.println(arr);//打印的是一个内存地址//内存地址对程序友好不?不优化,看不出来你的数据是个啥//咋办?有一个超纲的东西可以将内存地址转为字符串System.out.println(Arrays.toString(arr));//对一个String类型的数组进行赋值String[] strs1 =  new String[4];strs1[0] = "老邢";strs1[1] = "骚磊";strs1[3] = "老万";System.out.println(strs1);System.out.println(Arrays.toString(strs1));//对一个char 类型数组进行赋值//但是唯独char不需要toStringchar[] ch1 = new char[4];ch1[0] = 97;ch1[1] = 'z';ch1[3] = 'x';System.out.println(ch1);}
}

1.4对数组进行取值

package com.qfedu.c_array;public class Demo3 {public static void main(String[] args) {int[] arr = {12, 78, 13, 89, 100,200};System.out.println(arr[0]);//下标为0的位置上的值System.out.println(arr[1]);System.out.println(arr[2]);System.out.println(arr[3]);System.out.println("=========");//发现一个特点,下标是有规律的,循环是专门出来重复或者有规律的for (int i = 0; i < 4; i++) {System.out.println(arr[i]);}System.out.println("-----------");//arr.length   arr的长度 【重点】System.out.println(arr.length);//6for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}}

练习: 字符数组 和字符串数组,遍历他们的打印出来

package com.qfedu.c_array;public class Demo4 {public static void main(String[] args) {String[] strs1 = {"唐三藏","孙悟空","猪八戒"};for (int i = 0; i < strs1.length; i++) {//遍历System.out.println(strs1[i]);}System.out.println("=======");char[] ch1 = {'中', '过', '系', '是'};for (int i = 0; i < ch1.length; i++) {System.out.println(ch1[i]);}}}

回顾

1.声明数组三种int[] arr = {1,2,3,4};int[] arr1 = new int[3];int[] arr2 = new int[]{1,2,3,4};
2.对数组赋值对第二种进行赋值arr1[下标] = 32; 下标从0开始的
3.数组的取值遍历可以使用for循环进行遍历arr[下标]

1.5二维数组【了解】

package com.qfedu.c_array;import java.util.Arrays;public class Demo5 {public static void main(String[] args) {//[1,2,3,4]//二维数组  行 列//[[1 , 2, 3],// [2, 4 , 5]]//int[] arr = new int[3];int[][] arr = new int[2][3];//总共6个arr[0][0] = 1;arr[0][1] = 2;arr[0][2] = 3;arr[1][0] = 2;arr[1][1] = 4;arr[1][2] = 5;System.out.println(arr);System.out.println(Arrays.toString(arr));//取值 使用循环for (int i = 0; i < 2; i++) {//行for (int j = 0; j < 3; j++) {System.out.println(arr[i][j]);}}}}

1.6数组可以当成一个方法的参数【重点】

方法的参数可以是八大基本数据类型和String,数据也可以作为方法的参数

语法格式

public static void 方法名字(数据类型[] 形参) {}
package com.qfedu.c_array;import java.util.Arrays;
import java.util.Scanner;public class Demo6 {public static void main(String[] args) {
//		int[] arr = {1,2,3,4};
//		printArr(arr);//声明空的数组,然后向里面存值int[] arr = new int[5];//1.声明了一个空的数组add(arr);//2.对这个空的数组赋值//代码走到这一步,arr这个数组有值了没?System.out.println(Arrays.toString(arr));//3.打印这数组有哪些数据}//遍历一个数组  打印数据public static void printArr (int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}//使用方法对一个空的数组进行赋值/*** * @param arr  是一个空的数组, 对空的数组进行赋值*/public static void add (int[] arr) {Scanner scanner = new Scanner(System.in);for (int i = 0; i < arr.length; i++) {System.out.println("请输入第" + (i + 1) + "数");int i1 = scanner.nextInt();arr[i] = i1;}}}

1.7数组可以当成一个方法的返回值

public  static 数据类型 方法名字 () {}

八大基本数据类型和String都可以当成一个方法的返回值

那么数组也是可以的

案例:

​ [1,2,3,4]=>[4,3,2,1]

package com.qfedu.c_array;import java.util.Arrays;public class Demo7 {public static void main(String[] args) {int[] arr = reverse();System.out.println(Arrays.toString(arr));}//需求:将一个数组[1,2,3,4]转为[4,3,2,1]/*** * * @return*/public static int[] reverse () {int[] arr = {1,2,3,4};//原数组//定义一个空的数组 用来接收反转以后的数据int[] arr1 = new int[arr.length];//表达式1 :int i = 0, j = 3//初始话条件 有两个//表达式2: i < arr1.length//表达式3:i++, j--  循环条件for (int i = 0, j = arr.length - 1; i < arr1.length; i++, j--) {arr1[j] = arr[i];//arr=[1,2,3,4]//arr1=[0,0,0,0]
//			arr1[3] = arr[0];//arr1[0,0,0,1]
//			arr1[2] = arr[1];//arr1[0,0,2,1]
//			arr1[1] = arr[2];//arr1[0,3,2,1]
//			arr1[0] = arr[3];//arr1[4,3,2,1]}return arr1;}}

1.8数组在内存中如何分配的【了解】

以后还会再讲

目前学到的知识点你只需要关注:栈内存 和堆内存

内存区域的名字作用
寄存器给CPU使用的,和开发没有关系
本地方法栈JVM虚拟机操作咱们的电脑的系统的时候,才会使用
方法区存储和运行的class文件
堆区存储的是对象或者数组, 凡是new出来的都存在堆区
方法栈方法运行的时候使用的内存,比如main方法会进入到方法栈区

栈:存储的是八大基本数据类型的数据

​ int a = 20; 这个存在了栈区

​ 存储的是对象的引用 scanner 就是一个对象的等号的左边的

​ Scanner scanner = new Scanner(System.in);

堆区:

​ 凡是new的 都存在堆区

​ int[] arr = new int[5];

​ arr存在了栈区 new int[5];存在了堆区

​ Scanner scanner = new Scanner(System.in);

​ scanner 存在了栈区, new Scanner(System.in); 在堆区

在这里插入图片描述

2.数组方法循环分支的练习题

需求:定义一个方法,找出一个int数组中的最大值的索引下标

[3,1,2,7,6]=> 最大值的索引下标是3

package com.qfedu.c_array;public class Demo8 {public static void main(String[] args) {int[] arr = {3, 2, 6, 1, 7};//找出一个int数组中最大值的索引下标int maxIndex = 0;//用来接收最大值的下标的/*** i=0 0<4 true arr[0] <arr[0] false i++* i=1 1<4 true arr[0] <arr[1] false i++ maxIndex=0* i=2 2<4 true arr[0]<arr[2] true maxIndex=2 i+=* i=3 3<4 true arr[2]<arr[3] false maxIndex=2 i++* i=4 4<4 false 循环结束* */for (int i = 0; i < arr.length; i++) {if (arr[maxIndex] < arr[i]) {maxIndex = i;}}System.out.println(maxIndex);}}
package com.qfedu.c_array;public class Demo9 {public static void main(String[] args) {int[] arr = {3,4,2,6,8,7};int max = maxIndexOfArray(arr);System.out.println(max);}//求一个数组中的最大值的索引下标public static int maxIndexOfArray (int[] arr) {int maxIndex = 0;for (int i = 0; i < arr.length; i++) {if (arr[maxIndex] < arr[i]) {maxIndex = i;}}return maxIndex;}}

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

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

相关文章

PFEA111–20 PFEA111–20 人工智能如何颠覆石油和天然气行业

PFEA111–20 PFEA111–20 人工智能如何颠覆石油和天然气行业 人工智能(AI)和机器学习(ML)等新技术的到来正在改变几十年来行业的运营方式。这些技术正在带来革命性的变革&#xff0c;影响着整个行业。石油和天然气行业在其运营过程中面临着许多挑战&#xff0c;如未连接的环境…

在SpringBoot项目中整合SpringSession,基于Redis实现对Session的管理和事件监听

1、SpringSession简介 SpringSession是基于Spring框架的Session管理解决方案。它基于标准的Servlet容器API&#xff0c;提供了Session的分布式管理解决方案&#xff0c;支持把Session存储在多种场景下&#xff0c;比如内存、MongoDB、Redis等&#xff0c;并且能够快速集成到Spr…

Java21 LTS版本

一、前言 除了众所周知的 JEP 之外&#xff0c;Java 21 还有更多内容。首先请确认 java 版本&#xff1a; $ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment (build 2135-2513) OpenJDK 64-Bit Server VM (build 2135-2513, mixed mo…

activiti7的数据表和字段的解释

activiti7的数据表和字段的解释 activiti7版本有25张表&#xff0c;而activiti6有28张表&#xff0c;activiti5有27张表&#xff0c;绝大部分的表和字段的含义都是一样的&#xff0c;所以本次整理的activiti7数据表和字段的解释&#xff0c;也同样适用于activiti6和5。 1、总览…

pcl--第五节 点云表面法线估算

估算点云表面法线 * 表面法线是几何表面的重要属性&#xff0c;在许多领域&#xff08;例如计算机图形应用程序&#xff09;中大量使用&#xff0c;以应用正确的光源以产生阴影和其他视觉效果。 给定一个几何表面&#xff0c;通常很难将表面某个点的法线方向推断为垂直于该点…

CockroachDB集群部署

CockroachDB集群部署 1、CockroachDB简介 CockroachDB(有时简称为CRDB)是一个免费的、开源的分布式 SQL 数据库&#xff0c;它建立在一个事务性和强一致性的键 值存储之上。它由 PebbleDB(一个受 RocksDB/leveldb 启发的 K/B 存储库)支持&#xff0c;并使用 Raft 分布式共识…

TypeScript入门

目录 一&#xff1a;语言特性 二&#xff1a;TypeScript安装 NPM 安装 TypeScript 三&#xff1a;TypeScript基础语法 第一个 TypeScript 程序 四&#xff1a;TypeScript 保留关键字 空白和换行 TypeScript 区分大小写 TypeScript 注释 TypeScript 支持两种类型的注释 …

初识C语言——详细入门一(系统性学习day4)

目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍&#xff1a; 特点&#xff1a; 基本构成&#xff1a; 二、认识C语言程序 标准格式&#xff1a; 简单C程序&#xff1a; 三、基本构成分类详细介绍 &#xff08;1&#xff09;关键字 &#xff08;2&#xf…

fork函数

二.fork函数 2.1函数原型 fork()函数在 C 语言中的原型如下&#xff1a; #include <unistd.h>pid_t fork(void);其中pid_t是一个整型数据类型&#xff0c;用于表示进程ID。fork()函数返回值是一个pid_t类型的值&#xff0c;具体含义如下&#xff1a; 如果调用fork()的…

MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办

方法1&#xff1a; 在mybatis核心配置文件中指定&#xff0c;springboot加载mybatis核心配置文件 springboot项目的一个特点就是0配置&#xff0c;本来就省掉了mybatis的核心配置文件&#xff0c;现在又加回去算什么事&#xff0c;总之这种方式可行但没人这样用 具体操作&…

Python灰帽编程——错误异常处理与面向对象

文章目录 错误异常处理与面向对象1. 错误和异常1.1 基本概念1.1.1 Python 异常 1.2 检测&#xff08;捕获&#xff09;异常1.2.1 try except 语句1.2.2 捕获多种异常1.2.3 捕获所有异常 1.3 处理异常1.4 特殊场景1.4.1 with 语句 1.5 脚本完善 2. 内网主机存活检测程序2.1 scap…

【Java 基础篇】Java字符打印流详解:文本数据的输出利器

在Java编程中&#xff0c;我们经常需要将数据输出到文件或其他输出源中。Java提供了多种输出流来帮助我们完成这项任务&#xff0c;其中字符打印流是一个非常有用的工具。本文将详细介绍Java字符打印流的用法&#xff0c;以及如何在实际编程中充分利用它。 什么是字符打印流&a…

DNG格式详解,DNG是什么?为何DNG可以取代RAW统一单反相机、苹果安卓移动端相机拍摄输出原始图像数据标准

返回图像处理总目录&#xff1a;《JavaCV图像处理合集总目录》 前言 在DNG格式发布之前&#xff0c;我们先了解一下之前单反相机、苹果和安卓移动端相机拍照输出未经处理的原始图像格式是什么&#xff1f; RAW 什么是RAW&#xff1f; RAW是未经处理、也未经压缩的格式。可以…

Rust通用编程概念(3)

Rust通用编程概念 1.变量和可变性1.执行cargo run2.变量3.变量的可变性4.常量5.遮蔽5.1遮蔽与mut区别1.遮蔽2.mut 2.数据类型1.标量类型1.1整数类型1.2浮点数类型1.3数字运算1.4布尔类型1.5字符类型 2.复合类型2.1元组类型2.2数组类型1.访问数组2.无效的数组元素访问 3.函数3.1…

如何解决 503 Service Temporarily Unavailable?

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

想要精通算法和SQL的成长之路 - 填充书架

想要精通算法和SQL的成长之路 - 填充书架 前言一. 填充书架1.1 优化 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 填充书架 原题链接 题目中有一个值得注意的点就是&#xff1a; 需要按照书本顺序摆放。每一层当中&#xff0c;只要厚度不够了&#xff0c;当前层最高…

【考研数学】高等数学第六模块 —— 空间解析几何(1,向量基本概念与运算)

文章目录 引言一、空间解析几何的理论1.1 基本概念1.2 向量的运算 写在最后 引言 我自认空间想象能力较差&#xff0c;所以当初学这个很吃力。希望现在再接触&#xff0c;能好点。 一、空间解析几何的理论 1.1 基本概念 1.向量 —— 既有大小&#xff0c;又有方向的量称为向…

C语言指针,深度长文全面讲解

指针对于C来说太重要。然而&#xff0c;想要全面理解指针&#xff0c;除了要对C语言有熟练的掌握外&#xff0c;还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。 为什么需要指针&#xff1f; 指针解决了一些编程中基本的问题。…

spring aop源码解析

spring知识回顾 spring的两个重要功能&#xff1a;IOC、AOP&#xff0c;在ioc容器的初始化过程中&#xff0c;会触发2种处理器的调用&#xff0c; 前置处理器(BeanFactoryPostProcessor)后置处理器(BeanPostProcessor)。 前置处理器的调用时机是在容器基本创建完成时&#xff…

Axure原型设计累加器计时器设计效果(职业院校技能大赛物联网技术应用项目原型设计题目)

目录 前言 一、本题实现效果 二、操作步骤 1.新建文件 2.界面设计 2.1文本框 2.2 按钮 2.3设计界面完成 3.交互 3.1启动交互设置 3.2 分别设置三个属性 3.2.1 设置值为“0” 3.2.2 文字于文本框 3.2.3 获取焦点时 3.3 停止按钮的交互动作 3.3.1 设置变量值 3.4 重…