java学习之数组(二)
在上一节中我们讲到了数组的概念,定义,以及在内存当中的表现形式。那么这里我们来说一下,数组的另一种定义方式。
在上一篇当中我们规定是这个样子定义数组的,
class ArrDemo { public static void main(String[] args) { int[] arr = new int[8]; } }
这个方式定义数组,有一个缺陷,什么缺陷呢,当你有整组数组元素,这里我们姑且称之为 3,4,598,88。比如说你现在有这个么一组数,如果你按照上面方法定义数组的话,你要做的事情就多了,你得一个个把这些个元素复制到数组当中去,想想这是多么痛苦,尽管你可以用循环来简化这个操作,但是当只有2、3个值的时候你还得写个循环来赋值么???java有这么傻么??当然没有。
数组定义方法之二:
数组元素类型[] 数组变量名 = 数组元素类型 [] {数组元素一,数组元素二,数组元素三,.....}。代码:
class ArrDemo { public static void main(String[] args) { int[] arr = new int[]{1,3,5,6,6,9,999};//需要注意一下,这个地方的第二个方括号,并没有明确数据的个数或者长度。这个也是java避免我们犯错的一个机制 } }
这里需要注意的一点就是跟第一种定义方式不同,这里的第二个方括号呢,并没有定义数组元素的个数或者数组的长度。但是这样定义和第一种定义就差不多了,我们还嫌他太过麻烦,怎么办?Java兄弟这个写法能再简化一下否???Java兄弟这么说,好吧我们再来简化一下,(*^__^*) 嘻嘻:
数组元素类型[] 数组变量名 = {数组元素一,数组元素二,数组元素三,.....},代码:
class ArrDemo { public static void main(String[] args) { int[] arr = {1,3,5,6,6,9,999};//这样子定义是不是显得清爽了很多呢? :) } }
当我们这个样子定义数组的时候,会不会感觉很爽?但是他本身也有个缺点,当数组元素较多的时候你一眼看不出数组中的元素到底是多少,也不知道数组的长度。还好的是java是完全面向对象的语言,这个数组也不例外。他是一个对象,他有一个属性值为length来标注。数组的长度,这后边在讲。
以上两种定义的方法的区别在于:前者能看到数组的长度或者元素的个数,但是看不到具体的直接赋值。后者的优点在于能够直接清晰的赋值,但是不能一眼看出数组的长度,各有优劣。
数组的遍历。
我们之值所以定义实体即对象或者数组的原因是因为他们能够存放封装数据。这些实体的主要的一个作用就在于:存、取。你可以存数据,同时你也可以取数据。
代码:
class ArrDemo { public static void main(String[] args) { int[] arr = {1,3,5,6,6,9,999};//需要注意一下,这个地方的第二个方括号,并没有明确数据的个数或者长度。 /**
*需求:取出数组中的所有元素,并且分别打印
*思路,以为要重复的取数据,这里采用循环的方式,循环有while和for循环两种,我们采用的是for循环,之所以采用
*for循环是因为他能在内部定义一个局部变量,这样子比较干净利索,执行完之后,不会有没用的变量驻留在内存当中
*因为我们使用for循环的话,必须明确这个数组的长度。由于java是完全面向对象的,一切皆为对象。这里数组也是对象
*他自身有一个属性值length.来取出数组的长度。这里数组的长度就是arr.length
*
*/
//方法一:正序遍历
System.out.println("正序遍历:");
for(int i = 0; i<arr.length ; i++ )//这里之所以把i的初始值设置为0,是因为数组的索引都是从0开始的
{ System.out.println(arr[i]); }
//方法二:倒序遍历
System.out.println("倒序遍历");
for(int i = arr.length-1; i>=0 ; i--){ System.out.println(arr[i]); } } }
这里需要注意的一点是:for循环当中i的初始值,和末尾值的设定。
正序的时候是从0开始的,在arr.length-1处结束
倒序的时候是从arr.length-1处取到,在0处结束,这一点一定要明确。
数组的最值:
我们平常对数组经常的一个操作就是求最值,这个数组当中的最小值,或者最大值。
class ArrDemo { public static void main(String[] args)
{ int[] arr = {1,3,888,5,6,6,9,999};
int[] arr2 = {-2,-88,-356,-135,-8445}; int m = getMax(arr);
int _m = _getMax(arr2); System.out.println(m);
System.out.println(arr2[_m]); } /**
*直接循环遍历值求最大值,缺点,当要循环遍历的值是负数的时候,其中max的初始化是个缺陷。
*思路:
* 1、在函数当中定义一个基值,并且初始化为0,
* 2、然后循环遍历数组,把数组当中的每个元素跟这个基值做比较,如果结果比这个基值大,那么就把此时的数组元素赋值给这个基值
* 3、相反如果基值比数组中的元素大,那么就保持不变,当循环遍历之后,返回最大值
*
*
*
*/
static int getMax(int[] arr)
{
int max = 0; for(int i = 0 ; i< arr.length ; i++)
{
max = (max >= arr[i])?max:arr[i];
} return max; } /*
*利用数组的索引求最值,这种方法对正数还有负数都是通用的。
*思路:
* 跟上边的思路是一样的,只不过这时候为了正负数比较通用期间,我们把原来直接值的比较,换为数组中各个索引值的比较
*
*/
static int _getMax(int[] arr)
{ int max = 0;
for(int i = 0 ; i < arr.length ; i++)
{ max = (arr[max]>=arr[i])?max:i; }
return max; } }
java学习之数组(二)的更多相关文章
- Java学习-028-JSON 之二 -- 数据读取
JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- 初涉深度优先搜索--Java学习笔记(二)
版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 上周学习了数组和链表,有点基础了解以后,这 ...
- 2019暑假Java学习笔记(二)
目录 基础语法(下) 流程控制 if语句 switch语句 while语句和do-while语句 for语句 break关键字 continue关键字 数组 一维数组 二维数组 用户输入操作 练习题: ...
- java学习-zxing生成二维码矩阵的简单例子
这个例子需要使用google的开源项目zxing的核心jar包 core-3.2.0.jar 可以百度搜索下载jar文件,也可使用maven添加依赖 <dependency> <gr ...
- 登录模块的进化史,带大家回顾java学习历程(二)
接着前面的登录模块的进化史,带大家回顾java学习历程(一) 继续往下面讲 前面我们去实现登录功能,都是想着要完成这个功能,直接在处理实际业务的类中去开始写具体的代码一步步实现,也就是面向过程的编程. ...
- 从.Net到Java学习第十二篇——SpringBoot+JPA提供跨域接口
从.Net到Java学习系列目录 最近又撸了半个月的前端代码,做app离线存储,然后又花了一周去将过去的wcf项目转webapi,java又被落下了,总感觉我特么像斗地主中的癞子牌,变来变去..... ...
- JAVA学习笔记--数组初始化
JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十二周
java学习第十章:图形程序设计 本章,介绍的是如何编写使用图形用户界面GUI的java程序.主要讲的是如何编写定义屏幕上的窗口大小和位置的程序,如何在窗口中采用多种字体显示文本,如何显示 ...
- Java学习之==>数组【array】
一.定义数组 /** * 一维数组定义 * * 为数组插入元素 */ public void case1() { // 声明 int[] arr1; // 声明+初始化 int[] arr2 = ne ...
随机推荐
- Eclipse 每行 80 字符限制的提示线
有时候希望eclipse和C++编辑器之类有条对齐线 打开 Eclipse, Windows -> Prefereces -> General -> Editors -> Te ...
- NP-难题
所谓NP-难题,在给定的一个信息系统中,假设研究对象书目为m,属性书目为n,则要考察的属性集P的一个子集是否为最小子集,要进行n*m*m次的比较.而n个属性可构成2的n次方个子集,这些子集都有可能是最 ...
- 自己写的自动生成动态边框的jquery小插件
思路就是在元素四周添加<ul>列表,然后周期性地改变它的颜色,实现动态的效果,不支持ie7.ie8 预览链接http://gorey.sinaapp.com/myBorder/border ...
- 转载:修改xshell中文乱码的问题(管用)
执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式.要让Xshell不显示乱码,则要将编码方式改为UTF-8. 在Xshell中[file]-> ...
- angularjs sortbale
参考地址:http://kamilkp.github.io/angular-sortable-view 案例:jsp: <div sv-root sv-part="vm.dataLis ...
- PHP上传原理及应用
概要 1.FORM表现enctype属性 2.$_FILES系统函数 3.move_uploaded_file函数 4.is_uploaded_file函数 1.FORM标签的enctype属性 只有 ...
- 微软企业库Microsoft Enterprise Library的相关文章链接
微软企业库4.1学习笔记 http://blog.csdn.net/anyqu/article/category/1228691/3 黄聪:Enterprise Library 5.0 系列教程 ww ...
- 修改CMD命令窗口编码并保存方法
我们经常出现的情况是命令行窗口乱码,默认的cmd窗口显示的中文是GBK编码,要是输出utf-8的就可能会乱码了,那么怎么修改呢. 打开的命令窗口,如果我们要修改成UTF8编码,输入命令: CHCP 6 ...
- TaskbarCreated 消息
托盘中的图片就通过注册这个消息来实现,系统和进程通过进程间通信发送这个消息,进程接收他
- java.math.BigDecimal类
BigDecimal类用于高精度计算.一般的float型和Double型数据只可以用来做科学计算或者是工程计算,由于在商业计算中,要求的数字精度比较高,所以要用到java.math.BigDecima ...