6.Java中的方法

目录结构

⭕1. 方法概述
⭕2. 方法分类(实例方法和类方法)
⭕3. 值传递方法
⭕4. 实参与形参
⭕5. 传递方法
⭕6. 返回值方法
⭕7. 实例变量和类变量传递方法
⭕8. 构造方法

======================================

⭕#1.方法概述

  • 一定条件下,同一类中,不同的方法之间可以相互调用
  • 方法是类的\color{green}{动态属性}
  • 对象的行为是由其方法来实现
  • 在方法声明时,通过修饰符可以对方法访问实施控制。在方法中,可以对类的成员变量进行访问,但\color{green}{不同类别的方法对不同类型的成员变量的访问是有限制的}
    \color{red}{【访问控制修饰符】【其他修饰符】返回值类型 方法名称(形式参数列表)【抛出值类型】}

⭕2.方法分类(实例方法和类方法)

  • 实例方法能对类变量和实例变量操作,而类方法\color{green}{只能对类变量}进行操作;
  • 对方法不仅可以有对象调用而且还可以直接由类名调用,\color{green}{静态方法,不能调用实例方法}

⭕3.值传递方法

  • 将调用方法的实参的值计算出来赋予被调用方法对应形参的一种数据传递方法。
  • 在这种数据传递方法下,被调用方法对形参的计算,加工与对应的实参已完全脱离关系。

⭕4. 实参与形参

实参 :全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都\color{red}{必须具有确定的值}, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

形参 : 全称为"形式参数" 由于它不是实际存在变量,所以又称\color{green}{虚拟变量}。是在定义函数名和函数体的时候使用的参数,\color{green}{目的是用来接收调用该函数时传入的参数.在调用函数时,实参将赋值给形参}。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有确定的值。

区别

  • 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。
  • 实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
  • 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
  • 形参变量只有在\color{green}{被调用时才分配内存单元},在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在\color{green}{函数内部有效}。 函数调用结束返回主调函数后则不能再使用该形参变量。
  • 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都\color{green}{必须具有确定的值}, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
  • 实参形参\color{green}{数量上,类型上,顺序上应严格一致}, 否则会发生“类型不匹配”的错误。
  • 函数调用中发生的数据传送是\color{green}{单向的}\color{green}{实参—>形参}
  • 形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。而如果函数的参数是\color{green}{指针类型}变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部\color{green}{可以改变实参的值}

⭕5.传递方法

使用引用传递方法时,方法的参数类型一般是复合类型(引用类型)。复合类型变量中存储的是对象的引用,所以在参数传送中是传送引用,方法接收参数的引用,因此任何对形参的改变都会影响到对应的实参。“引用的单向传送,数据的双向传送”。

实例:

class Point{
  int x,y;
    void setXY(int x1,int y1){              
      x=x1;
      y=y1;
     }
    void squarePoint(Point p){
      p.x=p.x*p.x
      p.y=p.y*p.y
      }
      }

public class j14{
public static void main (String args[]){
  Point p0=new Point();
  p0.setXY(10,20);       
  System.out.println("x="+p0.x+"...y="+p0.y);
  p0.squarePoint(p0);  
  System.out.println("x="+p0.x+"...y="+p0.y);
  }
}

结果:

x=10...y=20
x=100...y=400

⭕6.返回值方法

返回值方法不是在形参和实参之间传递数据,而是被调方法通过方法调用后直接将返回值送到调用方法中。使用返回值方法时,方法的返回值类型不能为void,且方法体中必须有带表达式的trun语句,其中表达式的值就是方法的返回值。

public class j15{
public static void main(String args[]){
    int v1,v2;
    v1=10; v2=12;
System.out.println("max(+v1+","+v2+)"=+max(v1,v2));
                                                           }
static int max(int x,int y)
{
    if(x>y)
        return x;
    else
        return y;
 }
}

输出结果:

max(10,12)=12

⭕7.实例变量和类变量传递方法

实例变量 :是用来定义一个确定的对象(大象),目的是方便给与对象的一些属性(年龄,性别...),没有它就没有对象,属性也就无法表示。
②没有使用static修饰的成员变量是实例变量,属于该类的实例

类变量 :使用static修饰的成员变量是类变量,属于该类本身**,可以被其他对象调用,值可以改变。

class Person {
    static int eyeNum;
    String name;
    int age;

    public void info() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

public class FieldTest {
    public static void main(String[] args) {
        // 类变量属于该类本身,只要改类初始化完成,程序即可使用类变量
        Person.eyeNum = 2; // ①

        // 通过Person类访问 eyeNum类变量
        System.out.println("Person的eyeNum属性:" + Person.eyeNum);

        // 创建第一个Person对象
        Person p1 = new Person();
        p1.name = "zhangsan";
        p1.age = 22;

        System.out.println("通过p1变量访问eyeNum类变量:" + p1.eyeNum); // ②
        p1.info();

        // 创建第二个Person对象
        Person p2 = new Person();
        p2.name = "lisi";
        p2.age = 30;
        p2.info();

        // 通过p2修改Person类的eyeNum类变量
        p2.eyeNum = 4; // ③

        System.out.println("通过p1变量访问eyeNum类变量:" + p1.eyeNum);
        System.out.println("通过p2变量访问eyeNum类变量:" + p2.eyeNum);
        System.out.println("通过Person类访问eyeNum类变量:" + Person.eyeNum);
    }
}

结果:

Person的eyeNum属性:2
通过p1变量访问eyeNum类变量:2
Name: zhangsan, Age: 22
Name: lisi, Age: 30
通过p1变量访问eyeNum类变量:4
通过p2变量访问eyeNum类变量:4
通过Person类访问eyeNum类变量:4

⭕8.构造方法

  • Java通过构造方法来保证对每个对象进行初始化,构造方法是一种特殊的方法。
  • Java中的每个类都可以用构造方法,用来初始化该类的一个新的对象。构造方法具有和类名相同的名称,而且不返回任何数据类型(void可以省略)。在构造方法的实现中,也可以进行方法重载。在类中没有构造方法时,使用默认的构造方法。
  • 当我们没有写构造方法的时候,系统会默认给我们添加一个无参构造方法但是只要我们给出了一个构造方法,系统就不会给出默认的无参构造方法,所以在写类的时候,一般建议自己手动加上无参构造方法。
  • 一个类中可能没有构造方法,此时使用默认的构造方法。使用默认的构造方法时,按照默认的方式对变量进行初始化,即数值型初始化为0,引用型初始化为null,逻辑型初始化为false。

①类 构造方法数量>=1 ,如果没写使用默认。
②默认构造方法的值为 0 false null
③多个构造方法 名字相同 不同的参数。

public class Constructor {

    // 给Constructor类定义了一个成员变量name
    private String name;

    // 无参构造方法,方法名必须跟类名一致,即首字母需要大写
    public Constructor() {
        System.out.println("调用无参数的构造方法。。");
    }

    // 带一个参数的构造方法
    public Constructor(String name) {
        // 通过this()调用无参构造方法
        this();
        this.name = name;
        // 构造方法里可以调用普通方法
        commonMethod();
    }

    public void commonMethod() {
        System.out.println("调用普通方法");
    }

    // 写个主函数测试一下
    public static void main(String[] args) {
        // 通过无参构造创建一个Constructor对象
        Constructor cons1 = new Constructor();
        cons1.name = "我是通过无参构造器创建的对象";
        System.out.println(cons1);

        System.out.println("=====================我是分隔线=====================");

        // 通过有参构造方法创建另一个对象
        Constructor cons2 = new Constructor("我是通过有参构造方法创建的对象");
        System.out.println(cons2);
    }

    @Override
    public String toString() {
        return this.getClass().getSimpleName() + "[我的名字是:" + name + "]";
    }

}   

输出结果

调用无参数的构造方法。。
Constructor[我的名字是:我是通过无参构造器创建的对象]
=====================我是分隔线=====================
调用无参数的构造方法。。
调用普通方法
Constructor[我的名字是:我是通过有参构造方法创建的对象]

参考文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容

  • 方法概述 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块作用:封装重复逻辑,逻辑更清晰语法格式: ...
    若兮缘阅读 361评论 0 9
  • 1. 方法概述 1.1 方法的概念 ​ 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有...
    黑夜中的黑眼睛阅读 219评论 0 1
  • 方法出现的必要性 使用“方法”必然有其好处,1.能够实现代码模块化;2.能够实现代码的复用 方法的定义 方法定义的...
    一直想上树的猪阅读 168评论 0 0
  • 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。语法 1.访问修饰符:方法允许被访问的权限范围,可...
    Ming_0612阅读 325评论 0 0
  • 如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。 一般情况下,定义一...
    SuperJFL阅读 209评论 0 0