java基础07(二维数组 方法)

目录

一. 二维数组

1. 声明

2. 初始化

3. 取值 赋值

4. 遍历

5. 一些细节

二. 方法

1. 方法的定义

1.1 无返回值方法

1.2 有返回值方法

 2. 方法的调用

3. 动态参数

4. Overload 方法重载


一. 二维数组

二维数组的本质其实就是一维数组,只不过每个元素又是一个一维数组

 存储:

int[][] arr = {{1,2},{3,4}}; 

1. 声明

●数据类型[][] 数组名;

		int[][] ns1;

●数据类型[] 数组名[];

		int[] ns2[];

●数据类型 数组名[][];

		int ns3[][];

●多个数组声明

//多个数组的声明
		int[] a,b[];//声明一维数组a,  b是int类型的二维数组

2. 初始化

●动态初始化:

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

//动态: 数据类型[][] 数组名 = new 数据类型[长度][];
		int[][] ns =new int[3][];

●静态初始化:

数组类型[][] 数组名=new 数据类型[][]{{},{},{}};

// 静态: 数据类型[][] 数组名=new 数据类型[][]{{},{},{}};
		int[][] ns1 = new int[][] { { 4, 5, 6 }, { 7, 8 } };

●静态省略初始化:

数组类型[][] 数组名={{},{},{}};

// 静态省略: 数据类型[][] 数组名={{},{},{}};
		int[][] ns2 = { { 4, 5, 6 }, { 7, 8 } };

3. 取值 赋值

取值:

数组名[i][j];
int[][] ns =new int[3][];
		//取值
		System.out.println(ns[0]);//null
		System.out.println(ns[1]);//null
		System.out.println(ns[2]);//null
       

赋值:

//赋值
		ns[0] = new int[] {1,2,3};
		
		int[] newArray = {4,5,6};
		ns[1] = newArray;
		
		ns[2] =new int[] {7,8};
		
		//打印内容
		System.out.println(Arrays.toString(ns[0]));
		System.out.println(Arrays.toString(ns[1]));
		System.out.println(Arrays.toString(ns[2]));

4. 遍历

for循环遍历:

//1.for循环遍历
        for (int i = 0; i < ns.length; i++) {
			for (int j = 0; j < ns[i].length; j++) {
				System.out.print(ns[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println("=============");

foreach进行元素遍历:

//2.foreach进行元素遍历
		for (int[] is : ns) {
			for (int is2 : is) {
				System.out.print(is2+" ");
			}
			System.out.println();
		}
		System.out.println("================");

Arrays工具类快速打印内容:

需要导包

import java.util.Arrays;
//3.Arrays工具类快速打印内容
		System.out.println(Arrays.deepToString(ns));

运行结果:

5. 一些细节

        int[][] ns1 = new int[3][];
		int[][] ns2 = new int[3][4];

	
//		System.out.println(Arrays.deepToString(ns1));
//		System.out.println(Arrays.deepToString(ns2));

		int[] ns = new int[] { 2, 3 };
		ns1[0] = ns;
		ns2[0] = ns;
		System.out.println(Arrays.deepToString(ns1));
		System.out.println(Arrays.deepToString(ns2));

		ns1[0][1] = 666;
		System.out.println(Arrays.toString(ns));

二. 方法

方法是具有一定功能的代码段,我们通过这个来解决问题,是一段代码的集合。

1. 方法的定义

方法定义的位置:

类内,其他方法的外面

方法定义语法规则:

修饰符 返回值类型 方法名(参数类型 参数名){
        方法体
        return值;
}

●修饰符:public static
●返回值类型:任意的数据类型均可以,无返回值-void
●方法名:标识符:变量命名规范
●参数类型:数据类型 参数名:所有数据类型均可,有多个参数,之间用逗号来分隔

●方法体:如果有返回值,呢一定要返回数据

分类:

             有无返回值                   参数
                无                                无
                无                                有
                有                                无
                有                                无

1.1 无返回值方法

定义:

无返回值 无参数:

//无返回值 无参数
	public static void sum() {
		int a = 5;
		int b = 10;
		int c = a + b;
		System.out.println(c);
	}

无返回值 有参数:   

//无返回值 有参数的方法1
	public static void add(int a, int b) {
		int c = a + b;
		System.out.println(c);
	}
	
	//无返回值 有参数的方法2
	public static void user(String name, int age) {
		System.out.println(name + "的年龄为" + age);
	}

调用:

无参返回值方法的调用: 方法名();

//无参无返回值的方法调用 方法名();
		sum();

有参无返回值的方法调用: 方法名(值)

//有参无返回值的方法调用 方法名(值)
		//方法进行调用的时候参数值的个数,顺序,类型要和方法定义的保持一致
		add(5, 100);
		user("zkt", 21);

1.2 有返回值方法

定义:

有返回值 无参数:

// 有返回值无参
	public static int add() {
		int a = 5;
		int b = 6;
		int c = a + b;
		return c;
	}

有返回值 有参数:   

// 有返回值有参
	public static double sum(double a, int b) {
		return a + b;
	}

调用:

有返回值无参: 数组类型 变量名 = 方法名()

// 有返回值无参
		// 数组类型 变量名 = 方法名()
		int result = add();
		System.out.println(result);//11

有返回值有参: 数组类型 变量名 = 方法名(值)

	// 有返回值有参
		// 数组类型 变量名 = 方法名(值)
		double d = sum(10.0, 10);
		System.out.println(d);//20.0

 [注]

●方法定义好后不会自动执行,只有方法进行调用的时候才会执行---调用次数和执行的次数

●方法调用完会回到原位置

●方法进行调用的时候参数值的个数,顺序,类型要和方法定义的保持一致

 2. 方法的调用

●直接调用(不推荐)

方法名(参数);

●赋值调用(推荐使用)

方法返回值的数据类型变量名=方法名(参数);

●打印调用(测试可用) 

system. out.println(方法名(参数));

调用方法         有返回值的方法             无返回值的方法
直接                    可以(不推荐)                    可以
打印                    可以(测试)                          x
赋值调用                强烈推荐                         x


1请编写方法signOf,如果接收的int型参数的值n为负,则返回-1;如果为0,则返回0;如果值n为正,则返回1。
public static void main(String[] args) {
		test1();
		System.out.println("======");
		System.out.println(signOf(-7));
	}

	public static void test1() {
		test();
	}

	public static void test() {
		System.out.println("还想继续考研");
		return;
	}

	public static int signOf(int n) {
		if (n < 0) {
			return -1;
		} else if (n > 0) {
			return 1;
		} else {
			return 0;
		}
	}


[注]
●方法调用和方法的定义的顺序无关
●方法不能嵌套定义
●不调用不执行
●如果方法有返回值,return必须要有
●如果方法没有放回值,可以写return ; ,也可以省略

3. 动态参数

从JDK 1.5 开始,Java支持传递同类型的一组值,做为参数,传递给方法中的一个参数,该参数为成为动态参数。

●一个方法中只能有一个参数的动态参数

●动态参数必须是方法的最后一个参数

●动态参数在方法中,可做为一个数组使用

 语法格式:

修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数2,参数类型...参数3){
        方法体
        return值;
}

代码演示:

       /*
        *动态参数写在参数的最后,最多只能有1个动态参数
		*动态参数在进行使用的时候可以作为数组使用
		*含动态参数的方法在进行调用的时候,可以不用动态参数
		*/
		int a = 10;
		int b = 20;
		int[] c = { 1, 2, 3, 4, 5 };
		int sum = add(a, b, c);
		System.out.println(sum);//45
		int sum1 = add(a, b);
		System.out.println(sum1);//30
		int sum3 = add(a, b, 1, 2, 3, 4, 5, 6);
		System.out.println(sum3);//51
	}

	/**
	 * 定义了一个含动态参数的方法,add--求参数的和
	 * 
	 * @param a 整型变量
	 * @param b 整型变量
	 * @param c 动态参数,数据类型int
	 * @return 求所有的参数和
	 */
	public static int add(int a, int b, int... c) {
		int sum = a + b;
		for (int i = 0; i < c.length; i++) {
			sum += c[i];
		}
		return sum;

	}

4. Overload 方法重载

在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,JavaOOP的语法允许把这一组方法名定义为同名方法。

●方法的重载:在同一个类中,方法名相同,参数项不同(类型,个数,顺序)

●和返回值无关,发生在编译期

//方法的重载:在同一个类中,方法相同,参数项不同(类型,个数,顺序)
		//和返回值无关,发生在编译器
		double a = add(10.0, 20);
		System.out.println(a);//30.0

	}

	public static int add(int a, int b) {
		return a + b;
	}

	public static double add(int a, double b) {
		return a + b;
	}

	public static double add(double a, int b) {
		return a + b;
	}

	public static double add(double a, double b) {
		return a + b;
	}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PCB光控打孔机第二版程序(一)

/*PCB机程序 XY同时启动 L9751 CODE61068 2018 6 19 08:00 固定位置释放吸盘*/ /*修正寻点第十二条结束调用计算坐标L5091&#xff0c;自动运行Y计算L6280 6281***/ /*** 开外部中断2关闭定时器2XY轴输出信号&#xff0c;自动运行循环检测外部中断高电平重启XY轴输出信号 增加寻…

node安装

1. node.js是用来干什么的&#xff1f; 简单来说&#xff0c;Node.js 是一个多功能的 JavaScript 运行环境&#xff0c;就像jdk是java的运行环境一样&#xff0c;不过node还提供了类似于tomcat一样的服务器功能&#xff0c;可以像后端一样运行起来拥有单独的地址和端口。 1.1…

Skywalking的重要功能详解

学习本篇文章之前首先要了解一下Sky walking的基础知识 分布式链路追踪工具Sky walking详解 一&#xff0c;Sky walking监控数据库 在admin服务中&#xff0c;连接数据库查询user表中所有数据 引入依赖 <dependency><groupId>mysql</groupId><artifactI…

Redis高级(Redis持久化,Redis主从模式,Redis哨兵模式,Redis分片集群)

目录 一、单机Redis 1. 问题说明 2. 安装Redis 1 解压安装Redis【备用】 2 配置Redis 3 启动Redis 3. 小结 二、Redis持久化 1. 持久化机制介绍 2. RDB模式 3. AOF模式 4. RDB和AOF对比 5. 小结 三、Redis主从模式 1. 介绍 2. 搭建Redis主从架构【备用】 3. 主…

软件测试与管理:黑盒测试-判定表驱动法

知识思维导图&#xff1a; 例题1&#xff1a;运用判定表驱动法设计测试用例。 某学生成绩管理系统&#xff0c;要求对“平均成绩在90分以上&#xff0c;且没有不及格科目的学生&#xff0c;或班级成绩排名在前5的学生&#xff0c;在程序中将学生的姓名用红色标识”&#xff0c;…

【前端】HTML实现个人简历信息展示页面

文章目录 前言一、 综合案例&#xff1a;个人简历信息展示页面 前言 这篇博客仅仅是对HTML的基本结构进行了一些说明&#xff0c;关于HTML的更多讲解以及CSS、Javascript部分的讲解可以关注一下下面的专栏&#xff0c;会持续更新的。 链接&#xff1a; Web前端学习专栏 下面我…

Python | Leetcode Python题解之第73题矩阵置零

题目&#xff1a; 题解&#xff1a; class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:m, n len(matrix), len(matrix[0])flag_col0 Falsefor i in range(m):if matrix[i][0] 0:flag_col0 Truefor j in range(1, n):if matrix[i][j] 0:matrix[i]…

实时音视频通信的主要矛盾及解决方法

实时音视频通信的主要矛盾及解决方法 实时音视频通信的主要矛盾及解决方法实时音视频通信的主要矛盾矛盾的解决方法增加带宽减少数据量适当增加延时提高网络质量快速准确地评估带宽 总结参考 实时音视频通信的主要矛盾及解决方法 实时音视频通信的主要矛盾 实时音视频通信的主…

工厂模式+策略模式完成多种登录模式的实现

前提 &#xff08;简单工厂不属于设计模式&#xff0c;而是一种编程思想【抽象一层出来】&#xff09;工厂方法模式、抽象工厂模式 以上都是为了解耦&#xff0c;如果考虑多个纬度&#xff08;如需要同时考虑多种电器&#xff0c;多种品牌&#xff09;则优先考虑抽象工厂。 …

公网tcp转流

之前做过几次公网推流的尝试, 今天试了UDP推到公网, 再用TCP从公网拉下来, 发现不行, 就直接改用TCP转TCP了. 中间中转使用的python脚本, 感谢GPT提供技术支持: import socket import threadingdef tcp_receiver(port, forward_queue):"""接收TCP数据并将其放入…

Liunx磁盘管理(下)

中篇&#xff1a;https://blog.csdn.net/Lzcsfg/article/details/138355036 一.逻辑卷 逻辑卷&#xff08;Logical Volume&#xff09;是逻辑卷管理 (LVM) 中的一个概念&#xff0c;它为 Linux 系统中的存储管理提供了更大的灵活性和可扩展性。LVM 允许你将物理存储设备&…

用js代码实现贪吃蛇小游戏

js已经学了大部分了&#xff0c;现在就利用我所学的js知识试试做贪吃蛇小游戏吧 以下部分相关图片以及思路笔记均出自渡一陈老师的视频 首先制作简单的静态页面&#xff0c;添加贪吃蛇移动的背景和相关图片&#xff0c;比如开始游戏等等 将各个功能均封装在函数中&#xff0…

multipass launch失败:Could not generate a new UUID vboxmanage添加环境变量path

C:\WINDOWS\system32>multipass launch [2024-05-06T15:48:54.320] [error] [relished-jerboa] Could not unregister VM: Process failed to start: 系统找不到指定的文件。 launch failed: Could not generate a new UUID: Process failed to start: 系统找不到指定的文件…

服务攻防-数据库安全RedisCouchDBH2database未授权访问CVE漏洞

#知识点&#xff1a; 1、数据库-Redis-未授权RCE&CVE 2、数据库-Couchdb-未授权RCE&CVE 3、数据库-H2database-未授权RCE&CVE#章节点&#xff1a; 1、目标判断-端口扫描&组合判断&信息来源 2、安全问题-配置不当&CVE漏洞&弱口令爆破 3、复现对象-数…

Chat2DB Pro 重磅发布 !!!

在过去的几个月中&#xff0c;我们的团队一直默默耕耘&#xff0c;全心投入到Chat2DB Pro版本的开发之中。这段时间里&#xff0c;我们暂停了新动态的发布&#xff0c;以至于有趣的误解在社群中出现&#xff0c;有人调侃我们是否“倒闭”了。然而&#xff0c;我们今天携带着全新…

C++ | Leetcode C++题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; class Solution { public:string simplifyPath(string path) {auto split [](const string& s, char delim) -> vector<string> {vector<string> ans;string cur;for (char ch: s) {if (ch delim) {ans.push_back(mov…

Docker——consul的容器服务更新与发现

一、什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff0c;起初的解决手段…

密码学《图解密码技术》 记录学习 第十五章

目录 十五章 15.1本章学习的内容 15.2 密码技术小结 15.2.1 密码学家的工具箱 15.2.2 密码与认证 15.2.3 密码技术的框架化 15.2.4 密码技术与压缩技术 15.3 虚拟货币——比特币 15.3.1 什么是比特币 15.3.2 P2P 网络 15.3.3地址 15.3.4 钱包 15.3.5 区块链 15.3.…

力扣每日一题114:二叉树展开为链表

题目 中等 提示 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同…

JavaScript基础(五)

三目运算符 用于判断并赋值 语法: 判断条件?条件成立执行语句:条件不成立执行语句; (条件&#xff1f;"true":"false";) 例: <script> var age prompt(请输入年龄) var name (age>18)?"已成年":"未成年禁止登录" a…