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 ...
随机推荐
- Qt 学习之路:绘制设备
绘图设备是继承QPainterDevice的类.QPaintDevice就是能够进行绘制的类,也就是说,QPainter可以在任何QPaintDevice的子类上进行绘制.现在,Qt 提供了若干这样的 ...
- Qt 学习之路:QML 组件
前面我们简单介绍了几种 QML 的基本元素.QML 可以由这些基本元素组合成一个复杂的元素,方便以后我们的重用.这种组合元素就被称为组件.组件就是一种可重用的元素.QML 提供了很多方法来创建组件.不 ...
- 观察者模式-Observer
观察者模式很好理解,简单来说就是:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系. 1. 自己手工创建Observer模式 首先,创建观察者接口: pub ...
- frame模型
#import "CZWeiboFrame.h" #import "CZWeibo.h" @implementation CZWeiboFrame #defin ...
- iOS UIKit:viewController之动画(5)
当弹出一个view controller时,UIKit提供了一些标准转换动画,并且也支持用户自定义的动画效果. 1 UIView动画 UIView是自带动画实现功能,其中有两种方式实现: ...
- AppStore上架规则
1. 条款和条件1.1 为App Store开发程序,开发者必须遵守 Program License Agreement (PLA).人机交互指南(HIG)以及开发者和苹果签订的任何协议和合同.以下规 ...
- 文字排版--字体(font-family)
我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性.下面我们来看一个例子,下面代码实现:为网页中的文字设置字体为宋体. body{font-family:"宋体"; ...
- 如何获取App当前版本号
NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; NSString *currentVersion = [infoDic ...
- ITEXTSHARP学习整理
学习的版本iTextSharp.5.5.5. 关于获取PDF中的图片资源 /// <summary> /// 将PDF中的图片资源转换成二进制 /// </summary> / ...
- JavaScript Array(数组) 对象
更多实例 合并两个数组 - concat() 合并三个数组 - concat() 用数组的元素组成字符串 - join() 删除数组的最后一个元素 - pop() 数组的末尾添加新的元素 - push ...