数组:数组是多个相同类型数据类型的集合,实现对这些数据的统一管理。

元素:数组中的元素可以是任何数据类型,包括基本数据类型引用类型。

特点:属于引用类型,数组型数据是对象object,数组中的每个元素相当于对象的成员变量。

数组定义:

  1、静态初始化声明数组:

  ① String[] names = new String[]{"gangge","pijiu","paopao"};

  ② String[] names = {"gangge","pijiu","paopao"};

   注意第②种写法不能写成String[] names; names = {""gangge","pijiu","paopao"};

  2、动态初始化声明数组: 

    String[] names = new String[4];

数组调用:通过数组元素的下角标的方式来调用,从0开始。例如:names[0]  

数组长度:通过length属性,length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。

数组遍历:for循环或者for增强

① for(int i=0;i<names.length;i++)
② for(String n:names)

数组默认值:创建数组以后,不显式的赋值会有自己的默认值

  1、基本数据类型

    ① 对于4个整形byte、short、int、long:默认值是0

    ② 对于2个浮点型float、double:默认值是0.0

    ③ 对于char类型:默认值是空格

    ④ 对于boolean类型:默认值是false

  2、引用类型,默认类型是null

数组的Equals:

  数组的比较可以使用equals吗?

  public static void main(String[] args)
  {
    int[] a = {1, 2, 3};
    int[] b = {1, 2, 3};
    System.out.println(a.equals(b));
  }

  输出结果:false

  为什么呢?因为数组的equals方法没有重写object对象的equals方法,那怎么办呢?一个解决方案是自己写方法,另一种方法是使用数组的工具辅助类java.util.Arrays。

java.util.Arrays常用方法:

  ① boolean equals(array1,array2):比较两个数组是否相等。

  ② void sort(array):对数组进行升序排序(使用快速排序)。

  ③ String toString(array):将数组转换成一个指定格式的字符串。(格式:[元素1,元素2,元素3])

  ④ void fill(array,val):把数组的所有元素赋值成val。

  ⑤ int binarySearch(array,val):查询元素val在数组array中下标。

数组的内存结构:

  

  :存放局部变量,对象的引用。栈的特点先进后出的,所以第一个进去的会被压到最下面。

  :new出来的东西都放在堆空间,堆的特点是先进先出的。

  看第一个数组如何在内存中声明的:

    int[] scores = new int[4];
    scores[0] = 89;
    scores[1] = 90;

    ① 在栈中声明了一个变量scores。

    ② 在堆中开辟一个4个连续int类型的空间并且给所有的空间附上默认值0。

    ③ 把栈中scores变量指向堆中刚刚开辟的4个连续int类型的空间首地址(是一个16位进制数字)。

    ④ scores[0] = 89;按照索引找到第一个元素,将其值修改成89。

    ⑤ scores[3] = 90;按照索引找到第四个元素,将其值修改成90。

看一个题目:
 // 静态初始化数组
String[] names = { "Michael", "Orson", "Andrew" };
// 动态初始化数组
String[] animal = new String[4];
// 让animal 指向 namens 数组所引用的数组
names = animal; System.out.println(names.length);
System.out.println(animal.length);

输出结果:4 4

 

跟着刚哥梳理java知识点——数组(七)的更多相关文章

  1. 跟着刚哥梳理java知识点——面向对象(八)

    面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...

  2. 跟着刚哥梳理java知识点——深入理解String类(九)

    一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...

  3. 跟着刚哥梳理java知识点——HelloWorld和常见问题(一)

    1.按照国际惯例,写一段输出HelloWorld的java语句: public class HelloWorld { //这是main方法,程序的主入口 public static void main ...

  4. 跟着刚哥梳理java知识点——多线程(十六)

    创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...

  5. 跟着刚哥梳理java知识点——IO(十五)

    凡是与输入.输出相关的类.接口都定义在java.io包下 java.io.File类 1.File是一个类,可以有构造器创建其对象.此对象对应着一个文件或者一个目录. 2.File中的类,仅涉及到如何 ...

  6. 跟着刚哥梳理java知识点——枚举和注解(十四)

    enum Season{ SPRING("spring","春暖花开"), SUMMER("summer","夏日炎炎" ...

  7. 跟着刚哥梳理java知识点——集合(十二)

    Java集合分为Collection和Map两种体系 一.Collection接口: Collections接口为我们提供了以下方法: size():返回集合中元素的个数 add(Object obj ...

  8. 跟着刚哥梳理java知识点——变量之间的类型转换(四)

    变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,sh ...

  9. 跟着刚哥梳理java知识点——注释(二)

    1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println(" ...

随机推荐

  1. webpack从0开始---(一)

    换了新环境,同时也有了新目标,从webpack开始. webpack:具体是什么,大家还是自行去看吧,这里就不多做介绍了! 传送门---webpack.github.io 网上的安装方法很多,这里我就 ...

  2. PHP+Jquery+Ajax 实现动态生成GUID、加载GUID

    GUID: 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中 ...

  3. Cocos2d-x shader学习2: 模糊(Blur)

    模糊效果在游戏中经常会用到,有的为了突出前景会把背景给模糊化,有的是因为一些技能需要模糊效果.模糊是shader中较为简单的一种应用.cocos2dx 3.x给的demo中,就有sprite的模糊的效 ...

  4. C++ 11 学习1:类型自动推导 auto和decltype

    Cocos 3.x 用了大量的C++ 11 的东西,所以作为一个C++忠实粉丝,有必要对C++ 11进行一个系统的学习. 使用C++11之前,一定要注意自己使用的编译器对C++11的支持情况,有些编译 ...

  5. Prince2是怎么考试的?想了解P2

    自己在项目管理培训的行业已经有了5年的时间,经历了很多的学员和企业,和他们交流的问题,话题也很多. 在前几年,对于项目经理来讲关注的很多是单项目管理的工具技术模板,谈论最多的是,进度延期,成本超支,范 ...

  6. (八)javaScript对象简介

            脚本对象(JavaScript对象) <script type="text/javascript"> var time=new Date(); time ...

  7. SEO-搜索引擎高级搜索指令

    搜索引擎高级搜索指令 1.双引号 把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配.bd和Google 都支持这个指令.例如搜索: & ...

  8. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt".

    昨天遇到一个比较奇怪的问题,运行VS2010调试程序的时候,总是会报一个错,然后程序就挂掉了:无可用源….,弹出一个窗口提示:System.AccessViolationException: Atte ...

  9. HTML5周记(二)

    大家好,很高兴又跟大家见面了!本周更新博主将给大家带来更精彩的HTML5技术分享,通过本周的学习,可实现大部分的网页制作.以下为本次更新内容. 第四章 css盒模型 <!DOCTYPE html ...

  10. golang RWMutex读写锁分析

    RWMutex:是基于Mutex实现的读写互斥锁,一个goroutine可以持有多个读锁或者一个写锁,同一时刻只能持有读锁或者写锁 数据结构设计: type RWMutex struct { w Mu ...