Java基础——方法

本文详细介绍了Java中的方法,包括方法的概念、作用及定义方式。接着讲解了构造方法,阐述了其特点、作用及示例。还讨论了默认构造方法以及构造方法的重载,通过示例展示了如何使用不同参数的构造方法创建对象。最后,强调了算法在程序员职业发展中的重要性,并推荐了一个刷题平台。
摘要由CSDN通过智能技术生成

🏡个人主页 :@ 守夜人st
🚀系列专栏:Java
…持续更新中敬请关注…
🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点

✈️推荐一款模拟面试,刷题,从基础走向大场面试👉 开启你的刷题之路吧

Java——方法

活动地址:CSDN21天学习挑战赛

方法

学习方法之前,我们需要思考几个问题:

  1. 什么是方法,它有什么用?

方法(英语单词:method)是可以完成某个特定功能的并且可以被重复利用的代码片段。在c语言中被成为”函数“。

  1. 对与一个Java程序来说,如果没有方法,会存在什么问题?

在完成一些相同功能只是参数不同的需求时,我们需要去重复编写代码,这是十分繁琐的一项工作,代码的复用率十分低,也就导致我们的工作效率大 打折扣。

  1. 怎样去定义一个方法
[修饰符列表] 返回值类型 方法名 (形式参数列表){
		方法体;
	}

注意

  • 中括号[]的内容不是必须的,是可以选的
  • 方法体由Java语句构成
  • 返回值类型可以是Java中所有合法的数据类型

构造方法

什么是构造方法

构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例化变量的初始化。

Java构造方法的特点

  1. 构造方法名必须与类名相同

  2. 构造方法没有任何返回值,包括void。

  3. 构造方法只能与new运算符结合使用。

构造方法有什么作用?

构造方法的作用是创建对象以及对对象的属性初始化。

构造方法示例代码如下:

//Rectangle.java文件
package com.shouyerenst;
// 矩形类
public class Rectangle {
    // 矩形宽度
    int width;
    // 矩形高度
    int height;
	// 矩形面积
    int area;
    // 构造方法
    public Rectangle(int w, int h) {
    	width = w; height = h;
        area = getArea(w, h);
    }
 }

默认构造方法

当一个类没有提供任何构造方法,系统会默认提供一个无参构造方法,这个构造方法被成为缺省构造器

//User.java文件
package com.a51work6;
	public class User {
        // 用户名
        private String username;
        // 用户密码
        private String password;
}

从上述User类代码,只有两个成员变量,看不到任何的构造方法,但是还是可以调用无参数的构造方法创建User对象,见如下代码。

//HelloWorld.java文件
...
    User user = new User();

Java虚拟机为没有构造方法的类,提供一个无参数的默认构造方法,默认构造方法其方法体内无任何语句,默认构造方法相当于如下代码:

//默认构造方法
public User() {
}

默认构造方法的方法体内无任何语句,也就不能够初始化成员变量了,那么这些成员变量就会使用默认值,成员变量默认值是与数据类型有关。

注意,一但程序员自己定义了构造方法,默认的无参构造将丢失,所以我们创建有参构造方法的时候,也需要手动创建无参构造器,防止缺省构造器丢失

构造方法重载

在一个类中可以有多个构造方法,它们具体有相同的名字(与类名相同),参数列表不同,所以它们之间一定是重载关系。

下面将用两个程序说明他们之间的关系以及区别

Student.Java

package com.shouyerenst.OOP;

public class Student {
    //属性(描述状态),在Java程序中以”成员变量“的方式存在
    
    //学号
    int no; //这些成员变量又称为实例变量
    
    //姓名
    String name;
    
    //年龄
    int age;
    
    //性别
    boolean sex;
    
    //住址
    String addr;
    //无参构造方法
    public Student() {
    }
    //对学号属性初始化,其他属性系统赋默认值
    public Student(int no) {
        this.no = no;
    }
    //对学号和姓名属性初始化,其他属性系统赋默认值
    public Student(int no, String name) {
        this.no = no;
        this.name = name;
    }
    //对学号、姓名和年龄属性初始化,其他属性系统赋默认值
    public Student(int no, String name, int age) {
        this.no = no;
        this.name = name;
        this.age = age;
    }
    //对学号、姓名、性别和年龄属性初始化,其他属性系统赋默认值
    public Student(int no, String name, int age, boolean sex) {
        this.no = no;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    //对所有属性初始化
    public Student(int no, String name, int age, boolean sex, String addr) {
        this.no = no;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.addr = addr;
    }
}

StudentTest.java

package com.shouyerenst.OOP;

public class StudentTest {
    public static void main(String[] args) {
        //s1是局部变量,也叫做引用
        Student s1 = new Student();
        System.out.println(s1.no);
        System.out.println(s1.name);
        System.out.println(s1.age);
        System.out.println(s1.sex);
        System.out.println(s1.addr);
        System.out.println("----------------------");
    
        Student s2 = new Student(10001);
        System.out.println(s2.no);
        System.out.println(s2.name);
        System.out.println(s2.age);
        System.out.println(s2.sex);
        System.out.println(s2.addr);
        System.out.println("----------------------");
        
        Student s3 = new Student(10002,"李华");
        System.out.println(s3.no);
        System.out.println(s3.name);
        System.out.println(s3.age);
        System.out.println(s3.sex);
        System.out.println(s3.addr);
        System.out.println("----------------------");
    
        Student s4 = new Student(10003,"王雪",19);
        System.out.println(s4.no);
        System.out.println(s4.name);
        System.out.println(s4.age);
        System.out.println(s4.sex);
        System.out.println(s4.addr);
        System.out.println("----------------------");
    
        Student s5 = new Student(100004,"叶凡",21,true);
        System.out.println(s5.no);
        System.out.println(s5.name);
        System.out.println(s5.age);
        System.out.println(s5.sex);
        System.out.println(s5.addr);
        System.out.println("----------------------");
        
    }
}

运行结果

0
null
0
false
null
----------------------
10001
null
0
false
null
----------------------
10002
李华
0
false
null
----------------------
10003
王雪
19
false
null
----------------------
100004
叶凡
21
true
null
----------------------

算法对程序员来说及其重要,语言和开发平台不断变化,但是万变不离其宗的是那些算法和理论,刷算法最最最直白的原因就是找一个好的工作,那刷题一定是必不可少的
现在算法刷题平台还是蛮多的,给大家介绍一个我认为与大厂关联最深的平台——牛客网 跳转链接

在这里插入图片描述

感觉不错的话,动手点个赞吧!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

守夜人st

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值