zoukankan      html  css  js  c++  java
  • 2020.7.14

    一、今日学习内容

        JAVA中的方法

             (1)方法的分类:

                类方法:

    1 public class StaticMethod {
    2     static int i=5;
    3     static void m() {
    4         System.out.println("静态方法,只能访问静态变量,i="+i);
    5     }
    6     public static void main(String[] args) {
    7         m();
    8     }
    9 }

           输出结果:

      静态方法,只能访问静态变量,i=5

           实例方法:

     1 public class ClassMethod {
     2     static int i=5;
     3     int j=10;
     4     void m() {
     5         System.out.println("实例方法既可以调用静态变量,也可以调用非静态变量");
     6         System.out.println("i="+i);
     7         System.out.println("j="+j);
     8     }
     9     public static void main(String[] args) {
    10         ClassMethod cm=new  ClassMethod();
    11         cm.m();
    12     }
    13 }

           输出结果:

            实例方法既可以调用静态变量,也可以调用非静态变量
            i=5
            j=10

           (2)构造方法:

           无参:

    1 public class ConstorDemo{
    2      public  ConstorDemo(){}
    3      public static void main(String[] args){}
    4 }    

          有参:

    1 public class ConstorDemo{
    2      public  ConstorDemo(int x){}
    3      public static void main(String[] args){}
    4 } 

         创建一个对象:

    1  public class ConstorDemo{
    2       public  ConstorDemo(int x){
    3       x=20;
    4       System.out.println("x="+x);
    5       }
    6       public static void main(String[] args){
    7           ConstorDemo demo=new ConstorDemo(2);
    8       }
    9  } 

        输出结果:x=20

        (3)自定义方法:访问修饰符  返回类型  方法名(参数列表){}

                  修饰符:

                 

                 方法名:JAVA官方建议方法名首字母小写,其余单词首字母大写,只要符合命题规范即可。

                 带static关键字的方法:通过类名调用,不需要创建类的实例。

                 带final修饰的关键字:表明该方法不能被重载,也不能被覆盖。(static和final可同时修饰方法,且顺序可调换)

         (4)方法重载:在一个类中,方法名相同,方法的参数不相同。方法参数不同体现为两点:方法的参数类型相同,个数不同;方法的参数个数相同,类型不同。                                                                                                                                                                                                                                             (满足其一即可)

         (5)方法的调用:

                  非静态方法:对象名.方法();

                  静态方法:类名.方法();

                  方法与方法之间的调用

                         静态方法内部调用其他方法:如果在本类中,静态方法可以直接调用静态方法;如果在本类中是非静态方法,就必须通过对象来调用。

                                                                        如果不在一个类中,静态方法调用其他类中的静态方法,必须通过 类名.静态方法()来调用。

                                                                        如果在不同类中,静态方法调用其他类中的非静态方法,需要导入该类中的包,以及通过创建对象调用。

                        非静态方法内部调用:如果在本类中,非静态方法可直接调用静态方法;如果在本类中,非静态方法可直接调用非静态方法;

                                                            如果在不同类中,非静态方法调用其他类中的静态方法,需要导入该类中的包,以及通过类名来调用。

                                                            如果在不同类中,非静态方法调用其他类中的非静态方法,需要导入该类中的包,以及通过创建对象调用。

         (6)方法参数及其传递问题: 

                         传入的是基本类型:在方法内修改参数值时不影响原实参。

     1 public class MethodDemo4 {
     2     private static int x=10;
     3     public static void main(String[] args) {
     4         MethodDemo4 demo=new MethodDemo4();
     5         demo.getX(x);
     6         System.out.println("x="+x);
     7     }
     8     public void getX(int x) {
     9         x--;
    10     }
    11 }

                         输出结果:x=10

     1 public class Demo1 {
     2 
     3     public static void main(String[] args) {
     4         P p=new P();
     5         p.name="张无忌";
     6         p.age=30;
     7         
     8         P p2=p;
     9         p2.name="伍正云";
    10         p2.age=20;
    11         
    12         p.t();
    13 
    14     }
    15 
    16 }
    17 class P
    18 {
    19     String name;
    20     int age;
    21     public void t() {
    22         System.out.println("姓名:"+name+",年龄:"+age);
    23     }
    24 }

                输出结果:姓名:伍正云,年龄:20

                从结果中可以看出,p的属性被p2修改了。

               引用类型传递:

     1 public class Demo2 {
     2     public static void main(String[] args) {
     3         Demo2 demo=new Demo2();
     4         P p=new P();
     5         p.age=20;
     6         demo.getX(p);
     7         System.out.println(p.age);
     8 
     9     }
    10     public void getX(P p)
    11     {
    12         p.age=45;
    13     }
    14 }
    15 class P
    16 {
    17     String name;
    18     int age;
    19     public void t() {
    20         System.out.println("姓名:"+name+",年龄"+age);
    21     }
    22 }

                  输出结果:45    age的值被修改了

          (7)方法递归:条件:必须满足一个结束的条件;方法调用自身。

                   例:使用递归实现 n!的阶乘

     1 public class JiChen {
     2     public static void main(String[] args) {
     3         JiChen j=new JiChen();
     4         long i=j.f(5);
     5         System.out.println(i);
     6     }
     7     public long f(int n)
     8     {
     9         if(n==1)  return 1;
    10         return n*f(n-1);
    11     }
    12 }

                 输出结果:120

    二、遇到的问题

           引用传递部分中栈、堆没有弄懂。

    三、明日计划

          继续学习第四章的内容

  • 相关阅读:
    使用 MDT 2010 进行可伸缩部署
    Windows Phone 7 WebBrowser 中文乱码问题
    如何安装Windows Phone SDK 7.1 Release Candidate (RC)
    Windows Phone应用 博客园阅读器
    将WindowsPhoneApp部署到HTC Surround,兄弟们支个招如何进行Debug
    私有代码存放仓库 BitBucket
    入门:添加一个支持获取单一资源以及支持POST,PUT和DELETE方法
    Html5 学习利器 Web Standards Update for Microsoft Visual Studio 2010 SP1
    在启用了IPV6的机器上获取客户端ipv4地址
    EMA算法的C#实现
  • 原文地址:https://www.cnblogs.com/wmdww/p/13301033.html
Copyright © 2011-2022 走看看