JAVA 基础3-数组

一.数组的概念

  数组可以看成是多个数据类型的集合,是对这些数据进行统一的管理;

  数组的变量是引用类型,数组本身是对象,数组中的每个元素相当于该对象的成员变量;

  数组的元素可以是任何数据类型,包括基础数据类型和引用类型;

二.数组的声明方式

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

  例:int[] arr = new int[6]; 也可写成int arr[] = new int[6]; 一般用第一种写法;

    也可直接定义数组中的内容:int[] arr ={1,2,3,4,5,6};注意:声明数组时必须用new关键字;

注意:1.声明数组时要使用new关键字

   2.必须声明数组的长度;且一旦定义则长度不可改变;

   3.引用类型的数组是指在栈上声明一个数组变量,内容则存在堆上,由该变量指向该内容;

三.数组的遍历和初始化

  1.静态初始化指直接定义该数组内容,例:int[] arr = {1,2,3,4};

  2.动态初始化是指用遍历定义该数组内容;

四.public static void main(String[] args)

意思为公共的 静态的 无返回值 主方法 前面3个都是用来修饰主方法的,括号里Sring是一个类,用于创建字符串对象,这里用来修饰主方法的形参,[ ]表示主方法的形参是一个字符串数组,args是一个标识符,是形参数组名。

五.关于局部变量和成员变量的区别:

1.在类中的位置不同:成员变量在类中方法外。局部变量在方法定义中或在方法定义上。

2.在内存的位置不同:成员变量在堆内存。局部变量在栈内存。

3.生命周期不同:成员变量随着对象的创建而存在,随着对象的消失而消失。 局部变量随着方法的调用而存在,随着方法的调用完毕而消失。

4.初始化值不同:成员变量有默认值初始化。局部变量没有默认值初始化,必须定义,赋值,然后才能使用。

5.局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

main 方法是指该程序的主入口;

用args做运算器:

public class Test3 {public static void main(String[] args) {if (args.length != 3) {System.out.println("请输入正确的格式!");return;}int a = Integer.parseInt(args[0]);int b = Integer.parseInt(args[2]);String s = args[1];switch (s) {case "+":System.out.println(a + b);break;case "-":System.out.println(a - b);break;case "/":System.out.println(a / b);break;case "X":System.out.println(a * b);break;default:break;}}	
}

 在该文件夹下按shift+鼠标右键弹出的菜单中选择命令窗口项运行;注意*在命令框中需改为大写X才行;

例题:500逢3退1

public class Test3 {public static void main(String[] args) {boolean[] person = new boolean[500];for (int i = 0; i < person.length; i++) {person[i] = true;}int index = 0;int count = 0;int yu = person.length;while (yu != 1) {if (person[index]) {count++;if (count == 3) {count = 0;yu--;person[index] = false;}}index++;if (index == person.length) {index = 0;}}for (int i = 0; i < person.length; i++) {if (person[i] == true) {System.out.println(i);}}}	
}

 结果为435;

思路:先让所有人定义为布尔变量true;从这个人是true时开始数,当数到3时让该人变为false;同时从0开始重新数,剩余人数少一个,当数到500时从新开始,知道剩余人数为1时停止;再用遍历输出为true的序号。

数组排序

public class Test4 {public static void main(String[] args) {int[] arr = { 1, 3, 6, 2, 0, 11, 17, 14, 4 };bubbleSort(arr);    //冒泡排序selectSort(arr);   //选择排序reverseSort(arr);  //反转排序p(arr);}public static void reverseSort(int[] arr) {int t = arr.length / 2;for (int i = 0; i < t; i++) {int temp = arr[i];arr[i] = arr[arr.length - 1 - i];arr[arr.length - 1 - i] = temp;}}public static void selectSort(int[] arr) {                   //从大到小排序for (int i = 0; i < arr.length - 1; i++) {int index = i;                          //定义变量为第一个数的索引值for (int j = i + 1; j < arr.length; j++) {         //如果后面的值比这个变量大,将这个值的索引赋值给变量if (arr[index] < arr[j]) {index = j;}                             //循环结束后得到所有数中最大的数}int temp = arr[index];                     //将最大的数与原数位置互换,依次排序(int temp = arr[i]也可以)arr[index] = arr[i];arr[i] = temp;}	}
//选择排序的运行思路:外循环先取第一个数,内循环让该数依次与后面的每个数比较,内循环结束后得到最大的那个数的索引值,
外循环让最大的数与第一个数位置互换,这样最大的数排在第一位,然后取第二数重复循环。public static void bubbleSort(int[] arr) {                  //从小到大排序for (int i = 0; i < arr.length -1; i++) {for (int j = 0; j < arr.length - i - 1; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}
//冒泡排序的运行思路:外循环是指需要比较的轮数,就是让每个数都要与其他数比一次,内循环是让该数与其他数比较后,通过位置互换将最大的数排到最后面,下轮循环则不需要让其他数与该数比较,所以次数减1.public static void p(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}} }

 六.数组常用方法

例 :int[] arr1 = {6, 5 4, 3, 2, 1, 0}; int[] arr2 = {6, 5, 4, 3, 2, 1, 0};

1. 数组排序:Arrays.sort(arr); 从小到大排序,没有降序方法,可以使用循环倒序输出;
2. 填充数组: Arrays.fill(arr, 5);  填充数组,一般用于数组的初始化,返回值都是5.
3. 数组的复制 :Arrays.copyOf(arr, 5);如果新数组的长度不如被复制的数组长度长则有多少取多少;如果新数组的长度比较长, 不足的部分用0填充
4. 数组的范围复制 Arrays.copyOfRange(数组名,开始索引,结束索引);索引的范围, 包括开始, 不包括结束
5. 比较两个数组是不是一样 Arrays.equals(arr,arr2);返回值是布尔值

转载于:https://www.cnblogs.com/wyc1991/p/8965277.html

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

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

相关文章

net Core做一个webApi的简单实例

用NetCore 和Dapper 和mySql做一个简单的实例&#xff0c; 一准备工作 1&#xff1a;VS2017windos系统&#xff0c;也可以用其他的操作系统和工具 2&#xff1a;一台Cenetos的虚拟机或者虚拟机 二&#xff1a;开始 1&#xff1a;用微软官方的netCore的ToDo项目改造&#xff0c;…

mysql binlog sql统计_mysql的binlog详解

binlog是mysql记录操作的二进制日志文件,有三种格式可选,但是老旧的SBR已经不适合现在大多数业务需求,所以大多数都建议用MBR和RBR,即mixed或row,而解析他的原因,几乎都只有一个,就是恢复数据库,或者是反编译来恢复数据库,目的都是一样.以下是基于mysql5.6的mysqlbinlog来描述的…

Android项目实战(二十二):启动另一个APP or 重启本APP

Android项目实战&#xff08;二十二&#xff09;&#xff1a;启动另一个APP or 重启本APP 原文:Android项目实战&#xff08;二十二&#xff09;&#xff1a;启动另一个APP or 重启本APP一、启动另一个APP 目前公司项目需求&#xff0c;一个主APP,需要打开某些小APP&#xff0c…

mysql 查询两张表结构相同的数据库_利用反射处理多个表结构相同的数据的查询和数据库表的关联...

最近做一个项目&#xff0c;需要对人口数据进行查询&#xff0c;但是人口数据分布在不同的街道表中&#xff0c;首先进行了数据表结构的统一&#xff0c;每个数据表以街道名开头&#xff0c;然后其他的名字都一样前期将各个表中的字段也进行了统一抽象出一张字典表将街道编号和…

oracle批量update

我个人觉得写的很好 http://blog.csdn.net/wanglilin/article/details/7200201 需求&#xff1a; 将t2(t_statbuf)表中id和t1(T_Mt)表相同的记录更新进t1表。 1.错误的写法&#xff1a; 1 update table_name t1 set (a,b,c)( select a,b,c from table_name_2 t2 where t1.at2.a…

java 文件输出流_Java 文件输出流

Java IO教程 - Java文件输出流创建输出流要写入文件&#xff0c;我们需要创建一个FileOutputStream类的对象&#xff0c;它将表示输出流。// Create a file output streamString destFile "test.txt";FileOutputStream fos new FileOutputStream(destFile);当写入文…

Docker自动补全容器名

Zsh Place the completion script in your /path/to/zsh/completion (typically ~/.zsh/completion/): 下载自动完成文件mkdir -p ~/.zsh/completion curl -L https://raw.githubusercontent.com/docker/compose/1.21.0/contrib/completion/zsh/_docker-compose > ~/.zsh/co…

java 打印 模板_Java输入输出模板

常规输入输出绝壁有毒&#xff5e;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigDecimal;import java.math.BigInteger;import java.util.StringTokenizer;public class Main {public static void main(St…

MySQL5.7参数log_timestamps

最近测试MySQL 5.7.21 Community Server这个版本的MySQL数据库时&#xff0c;发现其错误日志的时间跟系统当前时间不一致&#xff0c;后面检查发现日期时间格式都是UTC时间&#xff0c;查了一下相关资料&#xff0c;原来在MySQL 5.7.2 之后日志文件里面的时间戳从默认的本地系…

java非堆内存_java – 监视JVM的非堆内存使用情况

我们通常处理OutOfMemoryError问题&#xff0c;因为堆或permgen大小配置问题。但是所有的JVM内存不是permgen或者heap。据我所知&#xff0c;它也可以与Threads / Stacks&#xff0c;本地JVM代码相关…但是使用pmap我可以看到进程分配了9.3G这是3.3G堆外内存使用。我不知道什么…

.net core HttpContext(Http上下文)

在.NET Core中&#xff0c;只有Controller才能直接使用 HttpContext &#xff0c;其他地方需要通过HttpContextAccessor来访问 转载于:https://www.cnblogs.com/87Super/p/8975311.html

Tidb集群加mysql_TiDB - 快速入门,集群搭建

TiDB 是开源分布式关系型数据库&#xff0c;是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品&#xff0c;具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 …

一个ssm综合小案例-商品订单管理-第二天

准确来说是第二三天&#xff0c;一时兴起&#xff0c;把这个小项目一鼓作气写完了&#xff08;较大的bug 均已被我手动捉出并 fix &#xff09;才来写一篇博客。 接上文 第一天配置继续讲解&#xff1a; 转载于:https://www.cnblogs.com/Frank99/p/8975378.html

java运行时读取注解_Java自定义注解和运行时靠反射获取注解

转&#xff1a;1、Annotation的工作原理&#xff1a;JDK5.0中提供了注解的功能&#xff0c;允许开发者定义和使用自己的注解类型。该功能由一个定义注解类型的语法和描述一个注解声明的语法&#xff0c;读取注解的API&#xff0c;一个使用注解修饰的class文件和一个注解处理工具…

python递归函数

递归函数简单来说就是函数的自我调用。使用递归函数很多时候可以使得代码简洁&#xff0c;优雅。可以把复杂的问题分解成简单的子问题。递归有无与伦比的魅力&#xff0c;从著名的计算机名言就可以看出递归的奇妙&#xff1a; To iterate is human,to recurse divine. 迭代者为…

java的jsp要下载吗_jsp、java下载附件

1 传入此jsp中的参数均已URLDencoder过。23 4 5 6 7 boolean isError false;8 String errorMsg "";9 response.reset();//可以加也可以不加10 request.setCharacterEncoding("UTF-8");11 String folder "news";12 if(request.getParameter(&q…

浅谈高斯消元的实现和简单应用

一、高斯消元的原理 对于n元的m个线性方程组成的方程组&#xff0c;我们将其以矩阵的形式记录下来&#xff1a; a11 a12 a13 ...... a1n b1 a21 a22 a23 ...... a2n b2 ... ... ... an1 an2 an3 ...... ann bn 然后进行初等行列变换&#xff0c;尝试构造出一个上三角矩阵&#…

java知识体系 servlet_03-Servlet 体系结构知识梳理

一、Servlet体系结构Java Web应用是基于Servlet规范运行&#xff0c;Servlet顶层类的关联如下图&#xff1a;从图可看出&#xff0c;Servlet规范基本围绕这几个类运行&#xff0c;其中&#xff0c;与Servlet主动关联的有3个类&#xff0c;分别是ServletRequest、ServletRespons…

SQL批量提交修改业务

把你需要批量提交修改的东西在内存中修改完毕 然后执行以下代码 SqlConnection conn new SqlConnection(ConnectionString);SqlDataAdapter sda new SqlDataAdapter("select Id,RankSummary,RankOfCn,Classify from u_College;", conn); //这里的SQL语句可以是查询…

testlink自带java api_java如何连接testlink

1.下载相关的jar包2.获取到testlink的url和key&#xff0c;注意&#xff1a;url不是testlink的连接地址&#xff0c;是连接地址/lib/api/xmlrpc.php3.测试是否连接成功public static void main(String args[]) {String url "http://test.tl.gmsd.lan/lib/api/xmlrpc.php&…