14、JAVA入门——方法和构造方法

简介: 14、JAVA入门——方法和构造方法

1、方法重载


(1)方法重载的定义


       方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数。


(2)方法重载的特点:


       -->在同一个类中。


       -->方法名相同。


       -->参数列表不同(参数顺序、参数类型、参数个数不同)。


       -->方法的返回值不能作为判断方法之间是否构成重载的依据(与方法的返回类型和访问修饰符无关)。


       -->代码展示:定义一个Calculate类


public class Calculate {
  // 定义2个int类型数据相加的方法
  public int sum(int a, int b) {
  return a + b;
  }
  // 定义3个int类型数据相加的方法
  public int sum(int a, int b, int c) {
  return a + b + c;
  }
  // 定义2个double类型数据相加的方法
  double sum(double a, double b) {
  return a + b;
  }
  // 定义一个int类型和一个double类型数据相加的方法
  public double sum(int a, double b) {
  return a + b;
  }
  // 定义一个double类型和一个int类型数据相加的方法
  public double sum(double a, int b) {
  return a + b;
  }
}


(3)方法重载的调用


       -->通过对象调用重载的方法时,系统的代码智能提示会给出返回类型和参数的信息,使用“↑”和“↓”键或者单击,都可以选择要使用的方法。


       -->通过对象直接调用并传递参数,系统会根据参数类型自动匹配相应的方法。


       -->代码展示:定义一个CalculateTest类,来使用Calculate类


public class CalculateTest {
  public static void main(String[] args) {
  //创建Calculate对象
  Calculate c = new Calculate();
        //调用的两个int类型相加,返回int数值的方法
  int result1 =c.sum(10, 20);
  System.out.println(result1);
  }
}

(4)方法重载的优点


       方法重载其实是对原有方法的一种升级,可以根据参数的不同,采用不同的实现方法,而且不需要编写多个名称,简化了类调用方法的代码


2、构造方法


       Java中,当类创建一个对象时会自动调用该类的构造方法,构造方法分为默认构造方法和带参数的构造方法。


(1) 构造方法的定义


       1)构造方法的主要作用是进行一些数据的初始化。


       2)当开发人员没有编写自定义构造方法时,Java会自动添加默认构造方法,默认构造方法没有参数。


       3)当开发人员编写了自定义了有参的构造方法时,默认无参构造方法会被覆盖。若要使用无参构造方法,需要在类中手动添加无参构造方法。


       定义构造方法的语法格式如下:


       [访问修饰符] 方法名([参数列表]){


               //方法体代码


       }


       -->构造方法没有返回值,void也不写。


       -->默认构造方法没有参数,因此参数列表可选。


       -->构造方法的方法名与类名相同。


public Student(String name, int age, double height) {
  }


(2) 构造方法重载


       构造方法重载即在同一个类中可以定义多个重载的构造方法。


public class Student {
  String name;
  int age;
  double height;
  public Student() {
  System.out.println("我是无参构造方法");
  }
  public Student(String name, int age, double height) {
  System.out.println("我是有参构造方法");
  }
}


3、this关键字

(1)this关键字是对一个对象的默认引用。每个实例方法内部都有一个this引用变量指向调用这个方法的对象。


(2)this关键字的使用


       1)使用this调用成员变量,解决成员变量和局部变量的同名冲突。


       2)使用this调用成员方法。


       3)使用this调用重载的构造方法,只能在构造方法中使用,且必须是构造方法的第一条语句。


       4)因为this是在对象内部指代自身的引用,所以this只能调用实例变量、实例方法和构造方法,不能调用类变量和类方法,也不能调用局部变量。


public class Student {
  String name;
  int age;
  double height;
  public Student() {
  System.out.println("我是无参构造方法");
  }
  public Student(String name, int age, double height) {
  //调用其它构造方法,必须写在构造方法的第一行
  this();
  System.out.println("我是有参构造方法");
  //this调用属性
  this.name = name;
  this.age = age;
  this.height = height;
  }
  public void printName(){
  System.out.println("学生姓名:"+this.name);
  }
  public void printInfo(){
  //this调用其它普通方法
  this.printName();
  System.out.println("学生年龄:"+this.age);
  }
}

4、成员变量和局部变量



(1)成员变量作用域


       1)类的属性,也就是直接在类中定义的变量称为成员变量,它定义在方法的外部。


       2)成员变量可以在声明时赋初始值。


(2) 局部变量作用域


       1)局部变量就是定义在方法中的变量。


       2)局部变量在使用前需要赋值,否则会编译出错。


(3) 成员变量和局部变量的区别


       1)作用域不同:局部变量的作用域仅限于定义于它的方法,在该方法外无法访问它。


       成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它,如果访问权限允许,还可以在类外部使用成员变量。


       2)初始值不同:对于成员变量,如果在类定义中没有给它赋予初始值,Java会给它一个默认值。


       基本数据类型整数型值为0,浮点型的值是0.0,char类型的值是'\u0000',boolean类型的值是false,引用类型的值为null。


       但是Java不会给局部变量赋予初始值,因此局部变量必须要定义并赋值后再使用。


       3)在同一个类中,不允许有同名成员变量。在同一个方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量。


       4)局部变量可以和成员变量同名,并且在使用时,局部变量具有更高的优先级。



public class Demo01 {
  /*
  * 局部变量:定义在方法或者某些结构中的变量,只能作用在方法中或者定义它的结构中
  * 成员变量(全局变量):定义在类中方法外(某些结构外)的变量,能够作用在整个类中
  * 
  * 系统会给成员变量赋予一个默认值,局部变量必须先初始化(赋值)才能使用,系统不会给局部变量赋予默认值
  * 同一个类中不能有同名的成员变量(全局变量),在同一个方法或者结构中,不能有同名的局部变量,不同的方法中可以有同名的局部变量
  * 同一个类中可以有同名的成员变量和局部变量,但是局部变量具有更高的优先级
*/
  // 定义在类中,方法外
  int num = 10;
//  int num = 200;
  public void print() {
  // a定义在print()方法中,只在当前这个方法中可以使用
  int a = 100;
  // int a = 200;
  System.out.println(a);
  int num = 20;
  System.out.println(num);
  }
  public void printInfo() {
  int a = 300;
  // System.out.println(a);
  }
  public static void main(String[] args) {
  for (int i = 0; i <= 100; i++) {
    System.out.println(i);
  }
  // System.out.println(i);
  }
}



相关文章
|
21天前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
205 0
|
2月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
349 0
|
3月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
482 3
|
27天前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
191 18
|
1月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
168 4
|
2月前
|
算法 安全 Java
除了类,Java中的接口和方法也可以使用泛型吗?
除了类,Java中的接口和方法也可以使用泛型吗?
119 11
|
1月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
211 5
|
2月前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
2月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
440 3
|
3月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
350 1