java基础语法(二)

方法重载的基本使用

  • 对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,这样太麻烦。例如:

           java基础语法(二)

        上面代码中这几个方法实现的功能都是求和,但是它们的参数列表不一样,如果对于参数列表的每一种不同情况都重新定义一个方法,那么当情况比较多的时候就会很麻烦,所以这里可以进行“方法重载”。

 

  • 方法的重载(Overload):多个方法的名称一样,但是参数列表不一样。

            java基础语法(二)

       方法重载的好处:只需要记住唯一一个方法名称,就可以实现类似的多个功能。

       方法重载与下列因素相关:

                                                1. 参数个数不同

                                                2. 参数类型不同

                                                3. 参数的多类型顺序不同

       方法重载与下列因素无关:

                                                1. 与参数的名称无关

                                                2. 与方法的返回值类型无关

     【  在调用输出语句System.out.println()的时候,println方法其实就是进行了多种数据类型的重载形式。】

 

数组

  • 数组是一种容器,可以同时存放多个数据

 

  • 数组的特点:

                          1. 数组是一种引用数据类型

                          2. 数组当中的多个数据的类型必须统一

                          3. 数组的长度在程序运行期间不可以改变

 

  • 数组的初始化:在内存当中创建一个数组,并且向其中赋予一些默认值

       有两种常见的初始化方式:

              1. 动态初始化(指定长度)

                 格式:     数据类型[ ] 数组名称 = new 数据类型[数组长度] ; 

                 含义:     左侧数据类型 -- 数组中保存的数据全都是统一的类型

                                 左侧的中括号 -- 代表是一个数组

                                 右侧new -- 代表创建数组的动作

                                 右侧数据类型 -- 必须和左侧数据类型保持一致

                                 右侧中括号的长度 -- 指定数组当中到底可以保存多少个数据,是一个int数字

              2. 静态初始化(指定内容)

                 标准格式:     数据类型[ ]  数组名称 = new 数据类型[ ] {元素1,元素2,...} ;

                 省略格式:     数据类型[ ]  数组名称 = {元素1,元素2,...} ;

      注意:

              1. 虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容也可以自动

                  推算出来长度

              2. 静态初始化标准格式可以拆成两个步骤

                         数据类型[ ]  数组名称 ;

                         数组名称 = new 数据类型[ ]{ 元素1,元素2,...} ; 

              3. 动态初始化也可以拆成两个步骤

              4. 静态初始化一旦使用省略格式就不能拆分成为两个步骤

【  使用建议:如果不确定数组当中的具体内容,用动态初始化,已经确定了具体的内容用静态初始化。】

 

  • 直接打印数组名称得到的是数组对应的内存地址的哈希值。

 

  • 访问数组元素的格式:          数组名称[ 索引值 ] ;

       索引值:就是一个int数字,代表数组当中元素的编号(其中索引值从0开始,一直到数组的长度减1为止)

      使用动态初始化数组的时候其中的元素会自动拥有一个默认值:

             1. 如果是整数类型,则默认为0

             2. 如果是浮点类型,则默认为0.0

             3. 如果是字符类型,则默认为'\u0000'

             4. 如果是布尔类型,则默认为false

             5. 如果是引用类型,则默认为null

【注意:静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值】

 

  • 数组下标越界

       在使用下标访问数组时,下标不能越界,数组的下标索引从0开始,到数组的长度减1。

 

  • 所有的引用类型变量都可以赋值为一个null值,但是代表其中什么都没有。

       数组必须进行new初始化才能使用其中的元素,如果只是赋值一个null,没有进行new创建,那么将会发生“空指针异常 ”

       空指针异常的原因:忘了new

       空指针异常的解决方法:补上new

 

  • 如何获取数组的长度?

        数组名称.length

 

  • 数组一旦创建,程序运行期间其长度不可以改变

 

  • 遍历数组:即将数组中的每一个元素进行逐一处理,默认的处理方式就是打印输出

      数组元素反转其实就是对称位置的元素交换

      通常遍历数组用的是一个索引,但是如果要表示对称位置则需要两个索引

 

  • 数组可以作为方法的参数,当调用方法的时候,向方法的小括号进行传参,传递进行的其实是数组的地址值

       任何数据类型都能作为方法的参数类型或者返回值类型,数组作为方法的参数,传递进去的其实是数组的地址值,数组作为方法的返回值,返回的其实也是数组的地址值。

       一个方法可以有0、1甚至多个参数,但是只能有0或者1个返回值,不能有多个返回值。如果希望一个方法中产生的多个结果数据都被返回,则可以通过使用一个数组作为返回值类型实现。

 

Java的内存

  • java的内存需要划分为5个部分:

1. 栈(Stack) :存放的都是方法中的局部变量,方法的运行一定要在栈当中。

                            局部变量:方法的参数,或者是方法{}内部的变量

                            作用域:一旦超出作用域,立刻从栈内存中消失

2. 堆(Heap):凡是new出来的东西都在堆中。

                           堆内存里面的东西都有一个地址值:16进制

                           堆内存里面的数据都有默认值(在上面动态初始化数组中提到过)

3. 方法区(Method Area):存储.class相关的信息,包含方法的信息。

4. 本地方法栈(Native Method Stack):与操作系统相关。

5. 寄存器(pc Register):与CPU相关。