新闻  |   论坛  |   博客  |   在线研讨会
芯灵思SinlinxA33开发板安卓开发-java语言基础(四)
系兄弟来砍我 | 2018-12-21 14:45:12    阅读:530   发布文章

从抽象到类

参数传值:方法中最重要的部分之一就是方法的参数,参数属于局部变量,当对象调用方法时,参数被分配内存空间,并要求调用者向参数专递值,即方法被调用时,参数变量必须有具体的值

传值机制:在Java中,方法的所有参数都是“传值”的,也就是说,方法中参数变量的值是调用者指定的值的拷贝。例如,如果向方法的int型参数x传递一个int值,那么参数x得到的值是传递的值的拷贝。

基本数据类型的传值:对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别 。

 引用类型参数的传值:当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。

可变参数:可变参数是指在声明方法时不给出参数列表中从某项直至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用“…”表示若干个参数,这些参数的类型必须相同,最后一个参数必须是参数列表中的最后一个参数。例如: public void f(int x) 那么,方法f的参数列表中,从第1个至最后一个参数都是int型,但连续出现的int型参数的个数不确定。称x是方法f的参数列表中的可变参数的参数代表 

   参数代表可以通过下标运算来表示参数列表中的具体参数,即x[0],x[1]x[m]分别表示x代表的第1个至第m个参数

 

实例成员与类成员:

实例变量和类变量的声明:在之前的学习类的时候我们知道类体中包括成员变量的声明和方法的定义,而成员变量又可以细分为实例变量和类变量。在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。

class Dog {

   float x;      //实例变量

   static int y;   //类变量

  } 

实例变量和类变量的区别:1.不同对象的实例变量互不相同 

我们已经知道,一个类通过使用new运算符可以创建多个不同的对象,这些对象将被分配不同的成员变量。再准确的说,就是分配给不同对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量。

2.所有对象共享类变量

如果类中有类变量,当使用new运算符创建多个不同的对象时,分配给这些对象的类变量占有相同的一处内存,改变其中一个对象的类变量就会影响其他对象的类变量。

3.通过类名直接访问类变量 

当Java程序执行时,类的字节码文件被加载到内存中,如果该类还没有创建对象,那么类中的实例变量就不会被分配内存。但是,类中的类变量,在该类被加载到内存中时,就分配了相应的内存空间。如果该类创建对象,那么不同对象的实例变量互不相同,即分配不同的内存空间,但是类变量就不再重新分配内存,所有的对象共享类变量,即所有的对象的类变量是相同的一处内存空间,类变量的内存空间直到程序退出运行,才会释放所占有的内存。

实例方法和类方法的定义:类中的方法也可分为实例方法和类方法。方法声明时,方法类型前面不加关键字static修饰的是实例方法、加static关键字修饰的是类方法(静态方法)。

class A {

   int a;

   float max(float x,float y) {  //实例方法

     …

   }

   static float jerry() {       //类方法

     … 

   }

   static void speak(String s) { //类方法

     … 

   }

实例方法和类方法的区别:1.对象调用实例方法

        当对象调用实例方法时,该方法中出现的实例变量就是分配给该对象的实例变量;该方法中出现的类变量也是分配给该对象的变量,只不过这个变量和所有的其他对象共享而已。

2.类名调用类方法

        类方法不仅可以被类创建的任何对象调用执行,也可以直接通过类名调用。和实例方法不同的是,类方法不可以操作实例变量,这是因为在类创建对象之前,实例成员变量还没有分配内存。

 


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客