首页 > 编程语言 >Java中方法的学习

Java中方法的学习

时间:2024-08-10 13:54:11浏览次数:8  
标签:Java int 学习 实例 参数 静态方法 方法 public

方法

方法的概念

在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法。
如:小明同学在路边准备坐车来学校学习。这就面临着一件事情(坐车到学校这件事情)需要解决,解决办法呢?可采用坐公交车或坐出租车的方式来学校,那么,这种解决某件事情的办法,我们就称为方法。

所以:

Java方法是语句的集合,它们在一起执行一个功能。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

方法的优点:

  • 使程序变得更简短而清晰。
  • 有利于程序维护。
  • 可以提高程序开发的效率。
  • 提高了代码的重用性。

方法的定义

一般情况下,定义一个方法包含以下语法:

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

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

  • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
  • 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void
  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

静态方法(类的方法)

静态方法(Static Method)是属于类而不是类的实例的方法。它可以在不创建类的实例的情况下被调用。静态方法通常用于执行与类相关的操作,而不需要访问或修改特定实例的状态。

以下是关于静态方法的声明、调用以及与实例方法的区别:

声明静态方法:

在Java中,声明静态方法需要使用static关键字。静态方法可以直接属于类,而不是类的实例。

public class MyClass {
    public static void myStaticMethod() {
        // 静态方法的代码
    }
}

调用静态方法

你可以通过类名来调用静态方法,而不需要创建类的实例。

MyClass.myStaticMethod();

静态方法与实例方法的区别:

  • 关联性:静态方法与类本身相关,而实例方法与类的实例相关。

  • 调用方式:静态方法通过类名调用,而实例方法需要通过对象实例来调用。

  • 访问权限:静态方法可以访问类的静态成员,但不能访问非静态成员(实例成员)。实例方法可以访问类的静态和非静态成员。

  • 内部引用:静态方法中不能使用this关键字,因为它没有当前对象的引用。实例方法可以使用this来引用当前对象。

  • 生命周期:静态方法在类加载时初始化,而实例方法在对象创建时初始化。

总之,静态方法是与类本身相关的方法,通常用于执行通用操作或访问静态成员。实例方法则是与类的实例相关的方法,可以访问和修改实例的状态。选择使用静态方法还是实例方法取决于你的需求和代码设计。

成员方法(对象的方法)

成员方法的定义

访问修饰符 返回参数类型 方法名(形参列表){ //方法主体
语句;
return 返回值;
}

  • 形参列表:表示成员方法的输入,比如课件说的cal01(int n), getSum(int num1,int num2)

  • 返回数据类型:表示成员方法输出,void表示没有返回值

  • 方法主体:表示为了实现某一功能的代码块

  • return语句不是必须的

成员方法的好处

  • 提高代码的复用性

  • 可以将实现的细节封装起来,然后供其他用户来调用

注意事项和使用细节

访问修饰符

​ 访问修饰符作用是控制方法使用的范围;如果不写访问修饰符,就是默认访问修饰符,

​ 访问修饰符分为四种【public , protected, 默认, private】

返回数据类型

​ ①一个方法最多有一个返回值

​ ②返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)

​ ③如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;而且要 求返回值类型必须和return的值类型一致或兼容

​ ④如果方法是void,则方法体中可以没有return语句或者只写return

方法名

​ 遵循驼峰命名法,最好见名知意,表达出该功能的意思即可,开发中按照规范

形参列表

​ ①一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开

​ ②参数类型可以为任意类型,包含基本类型或引用类型

​ ③调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数

​ ④方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,

​ 简称实参。形参和实参的类型要一致或兼容、个数、顺序必须一致!

方法体

​ 里面写完成功能的具体的语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法,即:方法不能嵌套定义

成员方法传参机制

  • 基本数据类型的传参机制

    结论:基本数据类型传递的是值(值拷贝),形参的任何改变不影响实参!

  • 引用数据类型的传参机制

    结论:引用数据类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参!

形参

形参:用来接收调用方法时传递的参数,只有在被调用时才分配内存,一旦调用结束,就释放内存空间。因此仅在方法内有效。

public void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}
// 这里a,b就是形参,方法结束时,在栈空间就会被销毁。

实参

调用方法swap(6, 8); 其中6 8就是实参。

值传递和引用传递

值传递(pass by value):在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数;

public class SimplePassByValueExample {  
    public static void main(String[] args) {  
        int num = 5;  
        System.out.println("Before: " + num);  
        increment(num);  
        System.out.println("After: " + num);  
    }  
  
    public static void increment(int x) {  
        x = x + 1; // 这里的x是num的一个拷贝,所以num本身不会变  
    }  
}  
  
// 输出:  
// Before: 5  
// After: 5

引用传递(pass by reference):在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会影响到实际参数;

class SimpleObject {  
    int value;  
  
    SimpleObject(int value) {  
        this.value = value;  
    }  
  
    void setValue(int newValue) {  
        this.value = newValue;  
    }  
  
    int getValue() {  
        return value;  
    }  
}  
  
public class SimplePassObjectReference {  
    public static void main(String[] args) {  
        SimpleObject obj = new SimpleObject(5);  
        System.out.println("Before: " + obj.getValue());  
        changeValue(obj);  
        System.out.println("After: " + obj.getValue());  
    }  
  
    public static void changeValue(SimpleObject obj) {  
        obj.setValue(10); // 修改了obj引用的对象的内部状态  
    }  
}  
  
// 输出:  
// Before: 5  
// After: 10
值传递 引用传递
根本区别 会创建副本 不创建副本
所以 函数中无法改变原始对象 函数中可以改变原始对象

重载规则

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。
public class Overloading {
    public int test(){
        System.out.println("test1");
        return 1;
    }
 
    public void test(int a){
        System.out.println("test2");
    }   
 
    //以下两个参数类型顺序不同
    public String test(int a,String s){
        System.out.println("test3");
        return "returntest3";
    }   
 
    public String test(String s,int a){
        System.out.println("test4");
        return "returntest4";
    }   
 
    public static void main(String[] args){
        Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"test3"));
        System.out.println(o.test("test4",1));
    }
}

重写与重载之间的区别

区别点 重载方法 重写方法
参数列表 必须修改 一定不能修改
返回类型 可以修改 一定不能修改
异常 可以修改 可以减少或删除,一定不能抛出新的或者更广的异常
访问 可以修改 一定不能做更严格的限制(可以降低限制)

标签:Java,int,学习,实例,参数,静态方法,方法,public
From: https://www.cnblogs.com/BingBing-8888/p/18352226

相关文章

  • 面向对象编程(OOP: Object Oriented Programming ):类、对象、构造方法、封装
    目录一、类1、定义(1)属性(2)方法2、类的定义方法二、对象1、定义2、对象的定义方法三、类和对象的关系1、现实世界都是由很多对象组成的,基于对象的共同特征抽象出类。2、对象:真实存在的对象3、类是对象的模板,对象是类的具体实例。4、一个类可以创建多个对象,同一个......
  • 二叉树的学习
    目录树形结构树中的概念树的表示方法二叉树二叉树的重要性质二叉树的存储遍历中序遍历后续遍历层序遍历创建二叉树二叉树的遍历获取树中节点个数获取叶子节点的个数获取第k层节点个数获取二叉树的高度检测val元素是否存在二叉树相关题目检查两棵树是否相......
  • Java计算机毕业设计基于Android的校园网上拍卖平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,特别是移动互联网的普及,校园生活也日益数字化、便捷化。在传统校园市场中,二手物品的交换与拍卖往往受限于时间、空间和信息......
  • Java计算机毕业设计教师工作量统计系统(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:在当今教育体系中,教师作为知识传授与人才培养的核心力量,其工作量的合理评估与管理直接关系到教学质量、教师工作积极性及教育资源的优化配置。然而,传......
  • Java计算机毕业设计共享茶室预约微信小程序(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在快节奏的现代生活中,人们对于休闲放松的需求日益增长,茶文化作为中国传统文化的重要组成部分,正逐渐成为一种流行的生活方式。然而,传统茶室在预约、管......
  • Java计算机毕业设计基于物联网技术的水质实时监测系统设计与实现(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着工业化进程的加速和人口的不断增长,水资源污染问题日益严峻,对生态环境和人类健康构成了严重威胁。传统水质监测方法往往依赖于人工采样与实验室分......
  • JavaScript中的匿名函数和箭头函数
            在JavaScript学习过程中总会遇到匿名函数,箭头函数,每次似乎都是稀里糊涂地就过去了,今天整理一下相关的知识点。匿名函数匿名函数与具名函数相对,分为两种表达形式,函数表达式和立即执行函数1.函数表达式letfn=function(){console.l......
  • opencv图像增强一:传统图像去噪方法整理
    一、简介:在数字图像处理领域,噪声一直是影响图像质量的重要因素。无论是拍摄过程中的环境干扰,还是传输过程中的信号失真,噪声都可能导致图像模糊、细节丢失,甚至影响后续的图像分析和应用。为了提高图像的视觉效果和使用价值,图像去噪技术应运而生,成为图像预处理环节中不可或缺......
  • 【Java毕设选题推荐】基于SpringBoot的springbootJAVA的邮件过滤系统设计与实现
    前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务......
  • 【Java毕设选题推荐】基于SpringBoot的O2O生鲜食品订购小程序
    前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务......