java入门基础四(方法和数组)

   日期:2024-12-27    作者:sh_aka 移动:http://ljhr2012.riyuangf.com/mobile/quote/59161.html

概念:特定功能的代码块。

java入门基础四(方法和数组)

优点:减少了代码的冗余。

方法的分类:静态方法、成员方法、构造方法(此节主要在静态方法的基础上使用

注意

  1. 方法编写的位置:类里,与main方法并立。
  2. 方法与方法之间是平级关系(不能在一个方法中声明另一个方法)。
  3. 方法不被调用,永远不会主动执行。

:只能使用类名调用,无法使用类对象调用。

8.1.1 无返回值无参数的方法

语法结构

​ 访问修饰符 static void 方法名(){
​ …代码块…

​ }

示例

 
 

在main方法中可以直接通过方法名调用------ hello();

8.1.2.带有参数的方法

语法结构

访问修饰符 static void 方法名(参数类型 变量名){
…代码块…
}

示例

 
 

main()方法中调用printStar方法时,需要传递实参给printStar方法。

 
 

输出

 
 

注意

  1. 形参:形式参数,方法声明时,规定调用时要传入的数据类型及接收数据的变量
  2. 实参:实际参数,调用方法时传入的具体数据
  3. 实参与形参类型必须兼容
  4. 多个参数用逗号分隔

8.1.3.带有返回值的方法

语法结构

public static 返回值类型 方法名([参数]){
…代码块…
return 返回数据;
}

示例

 
 

注意

  1. return下面不能接执行语句,因为return表示结束当前方法(如果存在分支,不是每个分支都存在return时,主干函数必须需要一个return语句。)。
  2. 声明方法时规定返回值类型,return后面接的是要返回的具体数据,返回的数据类型和定的返回值类型必须兼容。
  3. 方法中的变量为局部变量,作用域在该方法内,不影响其他方法中的变量。

8.1.4.方法的重载

含义:方法与方法之间的关系
好处:系统会根据实参类型自动匹配到对应方法
条件
1.在同一个类里
2.方法名一致
3.参数列表的个数或者类型不一致
4.与访问修饰符,返回值无关
应用场景
在同一个类里,有多个方法功能一致,细节实现不一样,就可以考虑使用重载(例如:多个整数求最大值。)

示例

 

8.1.5 递归的使用

概念:方法调用方法自身。

要点

  1. 找规律(找出联系)。
  2. 找出口(结束的标志)。

示例

Fibonacci 数列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,

找出规律和联系a1=1,a2=1,an=a(n-1)+a(n-2)(n>=3,n∈N*

找出结束的标志a1=1,a2=1

 
 

注意

​ 方法没有出口就会导致死循环,直到栈内存溢出报错(调用方法时,会在栈内存中开辟空间,用于存放该方法的局部变量,死循环的调用方法,栈内存就会满载并溢出)。

含义:表示对象所具有的功能。

作用

​ 调用时与静态方法不同,需要使用类的对象来调用。

​ 对象可以多次调用成员函数

​ 可以有返回值,也可以为void类型。

​ 方法名可以和类名相同,但当此成员函数没有返回类型时为构造函数。

  1. 格式

    构造方法和类名相同,并且没有返回类型和返回值。

    一个类可以有多个构造函数,但要求他们满足方法的重载。

    构造函数与其他方法一样可以有0个、1个、或多个参数。

  2. 作用

    构造方法在创建对象时被调用,一个对象的建立只能调用一个构造函数,可用于初始化对象。

:编译程序如果类中没有构造函数,系统会自动加入构造函数,为此类的默认构造函数。

  1. 格式
 
 
  1. 含义

​ 在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法。

这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数。

  1. main方法中的args参数

    ​ main方法中还有一个输入参数,类型为String[],这个是java的规范,main()方法中必须有一个入参,类型必须String[],命名为args,则是多数人的习惯。

    使用示例

      

拓展

由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不会实例化这个类的对象,而是通过类名直接调用因此main方法需要是限制为public static。(类名.main()) ,且不能有返回值,所以返回类型为void。

概念:一组数据的容器(数组可以存放多个数据

注意

​ 1.数组是引用数据类型
​ 2.数组中的数据又叫做元素
​ 3.每个元素都有编号叫做下标/索引(index
​ 4.下标从0开始
​ 5.数组初始化后,会在内存中开辟一连串连续的空间
​ 6.数组一旦初始化后长度不可以改变(数组没有扩容和删除
​ 7.数组的操作:添加、修改、查询

声明: 数据类型[] 数组名;

9.1.1 静态初始化

数据由程序员指定,长度由系统分配。

静态初始化的三种方式

示例

 

9.1.2 动态初始化

数据由系统指定,长度由程序员分配。

默认指定类型

​ 整数类型:0
​ 浮点类型:0.0
​ 字符类型:’ ’
​ 布尔类型:false
​ 引用类型:null

示例

 

动态初始化和静态初始化

一开始就知道数据,采用静态初始化,反之,只知道数据长度(个数)就采用动态初始化。

9.1.3 数组相关操作

9.1.3.1 获取和修改数组内容
  1. 通过索引能够指定获取数组元素和修改数组元素。

示例(参照动态初始化化的str)

 
 
  1. 通过length获取数组元素个数。

     
  2. for循环遍历

     
  3. 增强for循环遍历(foreach

     

​ 遍历是如果需要使用下标,通过for循环遍历,如果不需要使用下标就采用foreach遍历数组。

9.1.3.2 数组的排序(数值型)

冒泡排序

 
 

使用Arrays工具类方法排序(后续9.1.6详细介绍Arrays工具类

 
9.1.3.3 数组的查找
  1. 顺序查找(遍历查找

     
  2. 二分法查找(使用对象:有序的数组

     
9.1.3.4 数组的扩充
 
9.1.3.5 数组的复制
  1. 直接复制。

     

    注意:当采用这种方式复制字符数组时,修改原数组,新的数组内容也随之改变。(当names赋值给newNames时,只是将字符数组的地址传递给新数组,所以两个数组操作的其实是一片空间。

  2. 只复制内容。

    当复制一个数组只是为了获取其中的数据时,就可以采取动态初始化,对新建的字符数组单个赋值,从而避免了多个数组操作同样的一组数据。

     

    原数组的变化,不会对新数组产生影响。

9.1.3.6 删除数组内容
  1. 数据外部迁移(将需要删除的数据舍弃,获得新数组。

     

    :这种方法会使原本的数组空间减小

  2. 数据内部迁移(在数组内部将需要删除的数据覆盖。

     

    :数组的长度不会经历变化。

9.1.4 数组作为参数和返回值

示例:长传一组数据,返回最大值和最小值。

 

9.1.5 可变参数

示例:设计方法,传入任意个int值,求和。

 
 

由此可见:可变参数的底层就是数组。

注意

  1. 可变参数后不能接其他参数,但之前可以。

     
  2. 一个方法的参数中,不能同时出现两个可变参数(即便类型不同)。

9.1.6 Arrays工具类

Arrays: java 给我们提供的专门操作数组的工具类。(其中的方法定义和使用详见API-----java类使用说明书

常见示例

 
 

:二维数组整体学习和一维数组类似,可参照学习。

含义:包含了多个一维数组

声明:数据类型 [ ] [ ] 数组名;

9.2.1 二维数组的初始化

  1. 静态初始化:数据由程序员指定,长度由系统自动分配

     
  2. 动态初始化:长度由程序员指定,数据由系统自动分配(默认分配方式见9.1.2

     
  3. 二维数组的循环遍历(采用循环嵌套


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号