java学习--day6(数组)

news2024/11/18 17:42:02

文章目录

      • 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
	布尔: boolean

2.声明变量的语法格式
	数据类型 变量名字 = 初始化的值;
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;

		6

		5

		4

		3

3.写一个方法,控制台输入哪一个年份,判断是否是闰年

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不需要toString
		char[] 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);//6
		for (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.coloradmin.cn/o/1025166.html

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

相关文章

一文轻松实现在VSCode中编写Go代码

1.下载并安装VSCode VSCode&#xff08;Visual Studio Code&#xff09;是一款免费且功能强大的开源代码编辑器。VSCode适用于Windows、macOS和Linux操作系统&#xff0c;提供了丰富的编辑功能&#xff0c;包括语法高亮、智能代码补全、代码导航、重构支持、代码片段、多光标编…

windows常见的命令行操作

1.查看网络 ipconfig 2.根据任务id关闭进程 1.模糊搜索服务 tasklist | findstr QQ 2.根据模糊搜索结果&#xff0c;获取对应的pid taskkill /F /PID 5128 其他常见命令 若不清楚参数&#xff0c;使用&#xff08;命令 /?&#xff09;即可查看help

APP不存在,AK有误请检查再重试。详情查看: http://lbsyun.baidu.com/apiconsole/key

近期网站报百度地图无法使用情况&#xff0c;请参考百度提示的详情操作。 提示1&#xff1a; 提示2&#xff1a; 创建并复制AK教程&#xff1a;获取百度地图AK-易优CMS

看我72变!教你最火的 AI 变身换脸

今天要向大家推荐一个超级实用的AI换脸 APP——好说AI &#xff01;这款工具让你告别繁琐的修图流程&#xff0c;轻松几步就能生成完美照片。更重要的是&#xff0c;无需电脑&#xff0c;只要手机就能搞定&#xff01; 从前&#xff0c;我们看着综艺和电视剧&#xff0c;幻想着…

【好书推荐】《用户画像:平台构建与业务实践》

文章目录 1. 内容简介2. 书籍目录3. 图文介绍4. 送书活动 在大数据时代&#xff0c;如何有效地挖掘数据价值并通过画像数据进行呈现&#xff0c;如何基于画像数据构建平台功能并提高业务产出&#xff0c;是值得各类公司和业务人员思考并付诸实践的事情。通过画像释放大数据价值…

项目运行报错:error:0308010C:digital envelope routines::unsupported

node版本升到18之后&#xff0c;运行老项目报错 运行命令&#xff1a;npm run dev 解决办法&#xff1a; 第一步&#xff1a;在运行命令中补充set NODE_OPTIONS–openssl-legacy-provider & 第二步&#xff1a;如果依然报错&#xff0c;在终端中运行set NODE_OPTIONS–ope…

电视盒子什么品牌好?数码小编盘点网络电视盒子排行榜

电视盒子什么品牌好&#xff1f;每个品牌的优势并不一样&#xff0c;我们要根据自己的需求选择&#xff0c;看视频选无广告的&#xff0c;投屏频繁选投屏功能完善的&#xff0c;不懂的新手们可以参考小编分享的网络电视盒子排行榜&#xff0c;堪称目前最专业权威的电视盒子排名…

逻辑漏洞挖掘之XSS漏洞原理分析及实战演练 | 京东物流技术团队

一、前言 2月份的1.2亿条用户地址信息泄露再次给各大公司敲响了警钟&#xff0c;数据安全的重要性愈加凸显&#xff0c;这也更加坚定了我们推行安全测试常态化的决心。随着测试组安全测试常态化的推进&#xff0c;有更多的同事对逻辑漏洞产生了兴趣&#xff0c;本系列文章旨在…

2023年Gartner新技术与AI成熟度曲线

1. Gartner 将生成式 AI 置于 2023 年新技术成熟度曲线的顶峰&#xff0c;新兴人工智能将对商业和社会产生深远影响 根据 Gartner, Inc. 2023 年新兴技术成熟度曲线&#xff0c;生成式人工智能 (AI) 处于成熟度曲线期望的顶峰&#xff0c;预计将在两到五年内实现转型效益。生成…

Vue.js基础语法下

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《springMvc使用》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 1、事件处理器 1.1. 概述 在Vue中&#xff0c;事件处理器是用来处理DOM事件的方法。它可…

230920_整合微信支付宝支付

整合微信支付宝支付 一. 微信支付1. 支付中心_订单表Orders结构2. 微信支付时序图2.1 参考文档2.2 二维码支付时序图 一. 微信支付 1. 支付中心_订单表Orders结构 2. 微信支付时序图 2.1 参考文档 微信支付开发文档首页微信_native二维码支付文档微信支付文档 2.2 二维码支…

全链路自动化测试

背景 从 SOA 架构到现在大行其道的微服务架构&#xff0c;系统越拆越小&#xff0c;整体架构的复杂度也是直线上升&#xff0c;我们一直老生常谈的微服务架构下的技术难点及解决方案也日渐成熟&#xff08;包括典型的数据一致性&#xff0c;系统调用带来的一致性问题&#xff…

【Linux】【网络】应用层协议:HTTPS

文章目录 HTTPS1. 加密方式2. 数据摘要 \ 数据指纹3. 数字签名 HTTPS 的 工作过程HTTPS 工作过程中的密钥 HTTP HTTPS HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a; 是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议。 HTTPS&#xff0…

创建一个普通的vue项目

1.用HbuilderX工具开发&#xff0c;新建项目时选择vue2.6.10 2.点击新建终端&#xff0c;输入npm run serve命令 3.vue项目配置elementui 可以按照官方方法使用npm i element-ui -S命令进行安装 在main.js配置3行&#xff0c;且要在最前面 1.import ElementUI from ‘elemen…

什么是VLAN?VLAN是如何工作的?

【微|信|公|众|号&#xff1a;厦门微思网络】 VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。 每个VLAN是一个广播域&#xff0c;VLAN内的主机间可以直接通信&#xff0c;而VLAN间则…

解锁搜索新境界!让文本语义匹配助你轻松找到你需要的一切!(快速上手baseline)

解锁搜索新境界&#xff01;让文本语义匹配助你轻松找到你需要的一切&#xff01;(快速上手baseline) 实现了多种相似度计算、匹配搜索算法&#xff0c;支持文本、图像&#xff0c;python3开发&#xff0c;pip安装&#xff0c;开箱即用。 文本相似度计算&#xff08;文本匹配&…

【图像去噪】【TGV 正则器的快速计算方法】通过FFT的总(广义)变化进行图像去噪(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

jedis实现分布式锁案例:

一、redis配置类&#xff1a; import lombok.Data; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration;Configuration Data public class JedisConfig {Value("${spring.redis.host}")priv…

行业报告:视频直播美颜sdk对互联网直播产业的影响与前景

随着互联网直播产业的不断崛起&#xff0c;直播内容的质量和用户体验已成为成功的关键因素之一。本篇报告将深入研究视频直播美颜sdk对互联网直播产业的影响&#xff0c;并探讨其未来的前景。 第一章&#xff1a;视频直播美颜sdk的基本概念 1.1 什么是视频直播美颜 SDK&#x…

【音视频】H264视频压缩格式

H264简介 H.264从1999年开始&#xff0c;到2003年形成草案&#xff0c;最后在2007年定稿有待核实。在ITU的标准里称为H.264, 在MPEG的标准里是MPEG-4的一个组成部分-MPEG-4 Part 10&#xff0c;又叫Advanced Video Codec&#xff0c;因此常常称为MPEG-4AVC或直接叫AVC。 压缩算…