java学习之基础语法(二)

简介: java学习之基础语法(二)


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

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

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

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

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

                                                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) :存放的都是方法中的局部变量,方法的运行一定要在栈当中。

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

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

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

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

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

  1. 方法区(Method Area):存储.class相关的信息,包含方法的信息。
  2. 本地方法栈(Native Method Stack):与操作系统相关。
  3. 寄存器(pc Register):与CPU相关。

相关文章
|
2月前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
43 10
|
2月前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
171 4
|
2月前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
42 4
|
2月前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
58 1
|
3月前
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
90 3
|
4月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
4月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
5月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
102 1
|
5月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
52 1
|
5月前
|
Java 开发工具 Android开发
Kotlin语法笔记(26) -Kotlin 与 Java 共存(1)
本系列教程笔记详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,建议查看“简洁”系列教程。本期重点介绍了Kotlin与Java的共存方式,包括属性、单例对象、默认参数方法、包方法、扩展方法以及内部类和成员的互操作性。通过这些内容,帮助你在项目中更好地结合使用这两种语言。
75 1