Java基础语法学习(五、方法和main详解)

一、方法

1. 什么是方法?

  • 类似于其它语言的函数,面向对象中,整个程序的基本单位是类
  • 方法是语句的集合,它们在一起执行一个功能,用来完成特定功能的代码片段
  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

2. 设计方法原则

方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样有利于我们后期的扩展。

3. 方法的结构

修饰符 返回值类型 方法名(参数类型 参数名){
    ……
    方法体
    ……
    return 返回值;
}

返回值类型:方法可能会有返回值,没有返回值为void。
方法名:是方法的实际名称,方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

  • 形式参数:在方法被调用时用于接收外界输入的数据
  • 实参:调用方法时实际传给方法的数据

方法体:方法体包含具体的语句,定义该方法的功能。
修饰符:是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型,可分为访问修饰符与非访问修饰符。

  • 访问修饰符
    Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
    default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
    private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
    public : 对所有类可见。使用对象:类、接口、变量、方法
    protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
    在这里插入图片描述
  • 非访问修饰符
    static 修饰符:用来修饰类方法和类变量。
    (1)静态变量
    static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
    (2)静态方法
    static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据。
    note:
    对类变量和类方法的访问可以直接使用 classname.variablename 和 classname.methodname 的方式访问。
    final 修饰符:用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
    abstract 修饰符:用来创建抽象类和抽象方法。
    synchronized 和 volatile 修饰符:主要用于线程的编程。

4. 方法的调用

调用方法:对象名. 方法名(实参列表)
Java两种调用方式(根据方法是否返回值来选择)

  • 当方法返回一个值的时候,方法调用通常被当做一个值。

  • 方法返回值是void,方法调用一定是一条语句。

5.方法的重载

重载就是在一个类中,有不同的函数名称,但形参不同的函数。
方法的重载规则

  • 方法名称必须相同

  • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同)

  • 方法返回值类型可以相同也可以不相同

  • 仅仅返回类型不同不足以成为方法的重载

  • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

二、main方法详解

1. 简单又特殊的main方法

main方法是我们学习Java的第一个方法,也是每个Java使用者使用最多的一个方法,我们从main方法开始,解开方法神秘的面纱。
在idea中,可以通过输入main后,双击tab键,快捷生成一个main方法。

public static void main(String[] args) {
}

可以说main方法是简单的方法,因为main方法的格式几乎固定不变,除了String[] args可以写成String args[],以及args的名称可以改变外,其他均不可改变。
同时,main方法也是最特殊的方法,因为它的类型必须是public static void, 甚至标识符也必须是main。
很多初学者包括我在内,都不知道main方法每部分的详细作用,正是因为main方法这种简单而又特殊的性质,人们常常对它忽视。

2. 一个重大bug

根据Java语言规范,main方法必须声明为public类型,但是在JavaSE1.4之前,有一个重大bug:main方法不是public类型,一些编译器也可以执行。在这之后,main方法必须是public类型。

3. main方法各组成部分详解

3.1 public类型

我们先来了解下public类型:
public是一种访问权限修饰符,public中文翻译为“公有”,正如它的实际意思一样,在Java里面所有被public修饰的方法,类等都可以在任意其他地方调用。
main方法之所以是public,是因为一个Java程序在运行时首先创建一个JVM实例,程序要运行需要调用main方法,JVM从外部调用main方法这就需要访问权限,因此修饰符必须给出外部访问的权限,所以只能用public。

3.2 static修饰符

static的定义是为了JVM在调用main方法时不用实例化对象,只需要在初始时加载main方法所在类,然后直接通过类名.main来调用main方法。

3.3 void返回类型

void表示main方法没有返回值,没有返回值的原因是因为Java不需要main方法向操作系统返回退出信息。如果main方法正常退出,那么Java应用层序的退出代码为0,表示成功的运行了程序。

3.4 main方法名

main的名称不能变是为了JVM能够识别程序运行的起点,main方法可以被重载,重载的main方法不会被执行。main方法作为程序初始线程的起点,任何其他线程均由该线程启动。
JVM内部有两种线程,非守护线程和守护线程,main方法属于非守护线程。守护线程通常由JVM自己使用,Java程序也可以表明自己的线程是守护线程。当程序中所有的非守护线程终止时,JVM退出。也可以用Runtime类或者System.exit()来退出。

3.5 参数String[] args

String[] args是main方法中唯一可以改变的地方!args是arguments的缩写,只是一个变量默认名,习惯性写作它,但是也可以改变的,只要符合命名规则随便改。在使用集成开发工具的今天,String[] args更像是一种摆设了,很多初学者都不知道它的作用,其实它是程序运行传入的一个命令行参数组
我们可以尝试输出这个参数组的内容:

public class Printlnargs {
public static void main(String[] args) {


System.out.println("args length"+args.length);
for(int i=0;i<args.length;i++)
{

System.out.println(args[i]);
}
}
}

在cmd中编译并执行,执行的时候输入参数数组,可以看到参数传入args数组中。
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值