java 学习日记1----类、方法

来源:互联网 发布:淘宝名龙堂靠谱吗 编辑:程序博客网 时间:2024/04/27 22:45

    java学习日记1----类、方法

    java基础学习个人总结,在此记录下学习的点滴,注重细节,把握重点。

    Java程序是由类(class)所组成,类封装了一类对象的状态和方法,它描述了一类事物共有的属性和功能。在Java程序设计中,类被认为是一种抽象数据类型,这种数据类型,不但包括数据,还包括方法。这大大地扩充了数据类型的概念。

    定义类的格式:

class Student{               //类的声明

   类的主体                        

}

注意:类名中单词的首字母大写。


    类的主体由两部分组成:一部分是变量的声明(用来描述对象的属性),一部分是方法的定义(用来描述对象的行为)。

class Student

   int studynum;                   //变量的声明

   String name;

   voidexam(){                     //方法的定义

      方法的主体

   }

}

    上面的(int studynum;、String name;)变量的声明部分声明的变量属于成员变量,在方法体内容部分声明的变量和方法的参数属于局部变量。成员变量在整个类内都有效,局部变量只在它声明的方法内有效。需要注意的是:如果局部变量与成员变量所声明的变量名相同,则成员变量在这个方法内暂时失效。

  如:class BB{

         int a = 9;           //成员变量

         void summ(){

         int a = 1;        //局部变量

         System.out.println(a); //此时输出a的值是1,而不是9.

         }

      }

此时如果在方法中使用关键字this,就可以在该方法中使用成员变量。

  如:public class thiss{
          public static void main(String[] args){
              BB b = new BB();
              b.summ();
          }
      }
      class BB{
          int a = 9;              //成员变量
          void summ(){
             this.a = a;
             System.out.println(a);  //输出结果是9.其中this.a表示成员变量 a 。
          }
      }

    成员变量又分为实例变量类变量。类变量前面会用关键字static来修饰,否则是实例变量。

  如:class Student{

         int y;               //实例变量

         String name;         //实例变量

         static int x;        //类变量

      }


   成员变量与局部变量的区别:

     成员变量定义在类中,整个类都可以访问。

     局部变量定义在函数,只在所属的区域有效。


     成员变量存在于堆内存的对象中。

     局部变量存在于栈内存的方法中。


    成员变量随着对象的创建而存在,随着对象的消失而消失。

     局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。


     成员变量都有默认的初始化值。

     局部变量没有默认的初始化值。

    



===============方法

    

    Java程序是由一个或一个以上的类组合而成,程序起始的主体也是被包含在类之中。这个起始的地方称为main(),main()方法为程序的主方法,在一个Java程序中有且只能有一个main()方法,它是程序运行的开端。

    main()方法之前必须加上public static void 这三个标识符。它们所代表的意义如下:

public代表main()公有的method。

static表示main()在没有创建类对象的情况下,仍然可以被运行。

void则表示main()方法没有返回值。

Main后的括号()中的参数String args[]表示运行该程序时所需要的参数。

    看一下以下的程序:

    

    public class thiss{        public static void main(String[] args){             summ();             System.out.println("hello");        }        public static void summ(){            int a = 1;            System.out.println(a);        }    }

    上面的程序中声明了两个方法,分别为main()方法与summ()方法。因为main()方法是程序进入的起点,所以把调用summ()的程序代码编写在main()里。在main()中调用summ() 方法,此时程序的运行流程便会进到summ()方法里执行。执行完毕后,程序返回main()方法继续运行,输出“hello”。

    在static方法内只能访问到static成员变量(包括数据成员和方法成员)。所以,由于main()方法本身也声明成static,因而,在summ() 方法之前要加上static关键字才能调用summ()。

    因为summ()没有传递任何的参数,所以summ()方法的括号内保留空白。

    在上面的程序中summ()方法并没有任何返回值,所以summ()方法前面加上了一个void关键字。

    如果方法有返回值,则在声明方法之前就必须指定返回值的数据类型。相同的,如果有参数要传递到方法内,则在方法的括号内必须填上该参数及其类型。

   如以下的程序:

    

public class thiss{    public static void main(String[] args){        int n ;        n = summ(6);           // 输入6给summ(),并以n接收返回的数值        System.out.println(n);    }    public static int summ(int a){        return 2*a;    }}


上面的程序中,因summ()传递整数值,所以方法summ()的定义要在summ()方法之前加上int关键字,此外,因为要传入一个整数给summ(),所以summ()的括号内也要注明参数的数据类型与名称。

    如果要传递一个参数,只要在方法的括号内填上所要传入的参数的类型与名称就ok,多个就用“,”隔开。如:

             
public class thiss{    public static void main(String[] args){        double n ;        n = summ(3,4);        // 输入3和4两个参数到summ()里,并以n接收返回的数值        System.out.println("三角形的面积为:"+n);    }    public static int summ(int a,int b){        return a*b/2;            // 返回三角形面积      }}


上面程序中,summ()方法可接收三角形的底和高,计算后返回三角形面积。调用summ(3,4),把整数3和4传入summ()方法中。


    方法重载。方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。在这种情况下,该方法就叫被重载了,这个过程称为方法的重载。方法重载所要注意的问题是:方法的返回类型和参数的名字不参与比较,也就是说,如果两个方法的名字相同,即使类型不同,也必须保证参数不同。(参数的个数或参数的类型不同)

    // 以下程序说明了方法的重载操作
 

public class Overlo {    public static void main(String[] args){        int int_sum ;        double double_sum ;        int_sum = add(3,5) ;       // 调用有两个参数的add方法        System.out.println("int_sum = add(3,5)的值是:"+int_sum);        int_sum = add(3,5,6) ;     // 调用有三个参数的add方法        System.out.println("int_sum = add(3,5,6)的值是:"+int_sum);        double_sum = add(3.2,6.5); // 传入的数值为doule类型        System.out.println("double_sum = add(3.2,6.5)的值是:"+double_sum);    }    public static int add(int x,int y){        return x+y ;    }    public static int add(int x,int y,int z){        return x+y+z ;    }    public static double add(double x,double y){        return x+y ;    } }

输出结果:
int_sum = add(3,5)的值是:8
int_sum = add(3,5,6)的值是:14 

double_sum = add(3.2,6.5)的值是:9.7

    上程序中的add被重载了三次,但每个重载了的方法所能接受参数的个数和类型不同。    


    构造方法。构造方法它的名字必须与他所在的类的名字完全相同,而且没有类型。(当用类创建对象时使用构造方法)


    实例方法和类方法。类方法的类型前面加上关键字static,则为类方法,否则为实例方法。我们需要注意的是:实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作!

如:

    class{       int x;   //实例变量       static int y;    //类变量       void w1(int a; int b){     //实例方法          x = a;    //合法          y = b;    //合法       }       static void w2(int c; int d){   //类方法           x = c;   //x为实例变量,非法!           y = d;   //y为类变量,合法       }    }


    注意:只能在方法中对成员变量进行操作(赋值、等)。也就是说,不可以在变量的声明部分对成员变量赋值,

如:class w{

       int x;

       int y;

       x = 1;   //错误!因为这是赋值语句,是对成员变量的操作,只能把它放在在方法中。

       y = 2;   //错误!

    }

但是,在声明类的成员变量时,可以同时赋予初值。如:    

    class w{

       int x = 1;

       double y = 2.1;

    }

    还需注意:我们在调用方法的时候需要注意,类中的类方法只能调用该类的方法,不可以调用实例方法。

    

谢绝转载

                                                                      

                                                                WL学习总结


0 0