• Java学习 --- 成员方法


    目录

    一、成员方法

    二、方法调用机制

     三、方法的妙用

    四、方法注意事项

    4.1、访问修饰符(控制方法使用范围)

    4.2、返回数据类型

    4.3、方法名

    4.4、形参列表

    4.5、方法体

    4.6、方法的调用

    五、成员方法传参机制

    5.1、基本数据类型传参

    5.2、引用类型传参

     六、方法练习


    一、成员方法

    访问修饰符  返回数据类型 方法名(形参列表){

              语句;

              return 返回值;

    }

    1、参数列表:表示成员方法输入

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

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

    4、return 语句不是必须的,有的方法不一定有返回值

    参考示例代码:

    1. public class Method1 {
    2. public static void main(String[] args) {
    3. //使用方法
    4. /**
    5. * 1、当类里的方法写好后,不去调用是没有效果的
    6. * 2、调用方法前需要先创建对象,再调用方法
    7. */
    8. Person person = new Person();
    9. person.speak(); //调用方法
    10. person.count();
    11. person.count1(100); //调用方法同时将 n = 100
    12. int i = person.count2(10, 20);
    13. System.out.println(i);
    14. }
    15. }
    16. class Person{
    17. String name;
    18. int age;
    19. //方法(成员方法)
    20. //public:表示方法公开
    21. //void:表示没有返回值
    22. //speak:表示方法名
    23. //():表示形参列表
    24. //{}:方法体,要执行的代码
    25. //System.out.println("这是一个人");:该方法输出的内容
    26. public void speak(){
    27. System.out.println("这是一个人");
    28. }
    29. //计算1到1000的值
    30. public void count(){
    31. int num = 0;
    32. for (int i = 1; i <= 1000 ; i++) {
    33. num += i;
    34. }
    35. System.out.println("num = " + num);
    36. }
    37. //(int n):当前有一个形参
    38. public void count1(int n){
    39. int num = 0;
    40. for (int i = 1; i <= n ; i++) {
    41. num += i;
    42. }
    43. System.out.println("num = " + num);
    44. }
    45. /**
    46. * 1、int:表示方法执行后,返回一个int值
    47. * 2、return res;:表示把res的值返回
    48. */
    49. public int count2(int num1,int num2){
    50. int res = num1 + num2;
    51. return res;
    52. }
    53. }

    二、方法调用机制

     三、方法的妙用

    不使用方法遍历三次数组:

    1. public class Method2 {
    2. public static void main(String[] args) {
    3. //定义一个数组
    4. int[] arr = {1,3,4,6};
    5. for (int i = 0; i
    6. System.out.println("arr[i] = " + arr[i]);
    7. }
    8. System.out.println("--------------");
    9. for (int i = 0; i
    10. System.out.println("arr[i] = " + arr[i]);
    11. }
    12. System.out.println("--------------");
    13. for (int i = 0; i
    14. System.out.println("arr[i] = " + arr[i]);
    15. }
    16. }
    17. }

    代码冗余,可读性差,维护麻烦。

    使用方法来进行遍历:

    1. public class Method2 {
    2. public static void main(String[] args) {
    3. //定义一个数组
    4. int[] arr = {1,3,4,6};
    5. MyTools myTools = new MyTools();
    6. for (int i = 0; i < 3 ; i++) {
    7. System.out.println("-------");
    8. myTools.printArr(arr);//使用方法遍历三次
    9. }
    10. }
    11. }
    12. class MyTools{
    13. public void printArr(int[] arr){
    14. for (int i = 0; i
    15. System.out.println("arr[i] = " + arr[i]);
    16. }
    17. }
    18. }

    1、提高了代码的复用性

    2、将实现的细节封装起来,供其他用户调用就行。

    四、方法注意事项

    4.1、访问修饰符控制方法使用范围)

    当不写访问修饰符时使用默认修饰符,主要有四种(public,protected,默认,private)

    4.2、返回数据类型

    1、一个方法最多有一个返回值,当要返回多个结果,使用数组。

    2、返回类型可以为任意类型,包括基本类型或引用类型(数组,对象)

    示例代码:

    1. public class Method3 {
    2. public static void main(String[] args) {
    3. AA aa = new AA();
    4. int[] arr = aa.getArr(2, 3);
    5. System.out.println("两数之和:" +arr[0]);
    6. System.out.println("两数之差:" +arr[1]);
    7. }
    8. }
    9. class AA{
    10. public int[] getArr(int num1,int num2){
    11. //创建数组
    12. int[] arr = new int[2];
    13. arr[0] = num1 + num2;
    14. arr[1] = num1 - num2;
    15. return arr;
    16. }
    17. }

    3、方法要求有返回数据类型,方法体中最后的执行语句必须为return值,并且要求返回值类型必须和return的值类型一致或兼容。

    示例代码:

    1. public double a(){
    2. int a = 1;
    3. return a; //这里会进行自动类型转换
    4. }

    4、方法是void,方法体中可以没有return语句 或者 只写return。

    示例代码:

    1. public void b(){
    2. return; //这里不能返回数据类型
    3. }

    4.3、方法名

    1、遵循驼峰命名法,最好见名知意。

    4.4、形参列表

    1、一个方法可以有零个参数,也可以有多个参数,中间用逗号隔开。

    2、参数类型可以是任意类型,包含基本类型或引用类型。

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

    4、方法定义时的参数为形式参数又称形参,方法调用时传入的参数又称实际参数又称实参,实参和形参的类型要一致或兼容即个数、顺序必须一致。

    4.5、方法体

    完成功能的具体语句,可以是输入、输出、变量、运算、分支、循环、方法调用,但不允许方法里面再定义方法。

    示例代码:

    1. public void c(){
    2. public void d(){ //编译就报错
    3. }
    4. }

    4.6、方法的调用

    1、同一个类中的方法调用,直接调用就行。

    示例代码:

    1. public class Method4 {
    2. public static void main(String[] args) {
    3. A a = new A();
    4. a.a2();
    5. }
    6. }
    7. class A{
    8. public void a1(){
    9. System.out.println("a1方法被调用");
    10. }
    11. public void a2(){
    12. //在本类中直接调用
    13. a1();
    14. System.out.println("a2方法执行");
    15. }
    16. }

    2、跨类中的方法A类调用B类的方法,需要通过对象名调用。

    示例代码:

    1. public class Method4 {
    2. public static void main(String[] args) {
    3. B b = new B();
    4. b.b1();
    5. }
    6. }
    7. class A{
    8. public void a1(){
    9. System.out.println("a1方法被调用");
    10. }
    11. }
    12. class B{
    13. public void b1(){
    14. //先创建B对象,再调用方法
    15. A a = new A();
    16. a.a1();
    17. System.out.println("b1方法调用");
    18. }
    19. }

    五、成员方法传参机制

    5.1、基本数据类型传参

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

    示例代码:

    1. public class Method7 {
    2. public static void main(String[] args) {
    3. int a = 1;
    4. int b = 2;
    5. EE ee = new EE();
    6. ee.swap(a,b);
    7. System.out.println("main方法中的值a=\t" + a + "b=\t" + b);//a=1,b=2
    8. }
    9. }
    10. class EE{
    11. public void swap(int a,int b){
    12. System.out.println("a和b交换前的值a=\t"+ a +"b=\t" + b);//a=1,b=2
    13. //完成a和b的值交换
    14. int tmp =a;
    15. a = b;
    16. b = tmp;
    17. System.out.println("a和b交换后的值a=\t"+ a +"b=\t" + b);//a=2,b=1
    18. }
    19. }

    5.2、引用类型传参

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

    示例代码:

    1. public class Method8 {
    2. public static void main(String[] args) {
    3. Persons persons = new Persons();
    4. persons.name = "tom";
    5. persons.age = 45;
    6. UpdatePerson updatePerson = new UpdatePerson();
    7. updatePerson.Update(persons);
    8. System.out.println("main方法中的年龄为:" + persons.age);
    9. }
    10. }
    11. class Persons{
    12. String name;
    13. int age;
    14. }
    15. class UpdatePerson{
    16. public void Update(Persons persons){
    17. persons.age = 100;//修改对象属性
    18. }
    19. }

     六、方法练习

    6.1、编写一个类,有一个方法判断一个数是奇数还是偶数,返回Boolean。

    示例代码:

    1. public class Method5 {
    2. public static void main(String[] args) {
    3. CC cc = new CC();
    4. boolean oud = cc.isOud(5);
    5. if (oud == true){
    6. System.out.println("这是一个奇数");
    7. }else {
    8. System.out.println("这是一个偶数");
    9. }
    10. }
    11. }
    12. class CC{
    13. public boolean isOud(int num){
    14. // if (num % 2 != 0){
    15. // return true;
    16. // } else {
    17. // return false;
    18. // }
    19. //使用三元运算符
    20. //return num % 2 != 0 ? true : false;
    21. return num % 2 != 0;
    22. }
    23. }

    6.2、根据行、列、字符打印对应行数和列数的字符。

    示例代码:

    1. public class Method6 {
    2. public static void main(String[] args) {
    3. DD dd = new DD();
    4. dd.printChar(4,4,'#');
    5. }
    6. }
    7. class DD{
    8. public void printChar(int num1,int num2,char c){
    9. for (int i = 1; i <=num1 ; i++) {
    10. for (int j = 1; j <=num2 ; j++) {
    11. System.out.print(c);
    12. }
    13. System.out.println();
    14. }
    15. }
    16. }

  • 相关阅读:
    华为防火墙基本配置ASPF与Server-map表
    太速科技-基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡
    Unirech腾讯云国际版-使用腾讯云服务器手动建立WordPress 个人站点Linux系统教程
    【正点原子STM32连载】第二十章 基本定时器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
    信息系统项目管理师核心考点(二十八)项目进度计划输出(成果)
    线程池的应用
    C++打怪升级(十一)- STL之list
    SpringCloud(15)之SpringCloud Gateway
    文心一言 VS 讯飞星火 VS chatgpt (90)-- 算法导论8.3 3题
    几个年薪百万的码农下属
  • 原文地址:https://blog.csdn.net/qq_46093575/article/details/126289789