打赏

JAVA入门到精通-第6讲-成员属性-成员方法

 b.age=10;
 
 
它是根据age和name所占的数据类型还划分空间的;
b没有赋值,孤零零地放在那;
b=a;
让b也指向a所指向的空间,实际上是一个引用;
 
 
再次证明,其实指向的是同一块空间;引用传递的特点;

程序员用new的方法创建一个对象,在内存里面存放;
内存有创建就应该有回收,JAVA有内存回收机制
JAVA虚拟机发现没有对象指向的时候,会认为它是垃圾;
a=null;      //a不再指向对象,是一个垃圾,会在适当的时候回收内存
C++里面开辟的内存,需要及时回收,delete/free。

成员方法(成员函数):
 
一个class里面的最简单的方法:
 如何使用这个方法?
 
 
JAVA命名规范:
 //speak
 
//jisuan

 
 
//参数列表,表示函数接收的参数
输入参数自动计算,比较灵活;
 
 result和不同的方法里面的作用域不一样,不会冲突;

 函数名重复,但不会冲突;
JAVA编译器比较聪明,如果有参数输入会自动区分开来;
函数名一样,参数不一样,函数的重载;

当传100会调用有参数列表的方法;
不传参数会调用没有参数列表的方法;

函数调用的原理图:
1.执行main过程中如果看到调用函数,会开辟新栈;
2.和main函数的栈是完全独立的;
3.代码跳转开始执行;
4.控制台输出结果,执行完又回到原来的main那里去了;
5.main又开始执行;



要透彻的掌握类,必须要了解类的构成

class 类名{      ---->   待定...

  成员变量;

}

 

--类的成员变量

成员变量是类的一个组成部分,一般是基本数据类型,也可是引用类型。比如我们前面定义猫类的int age 就是成员变量。

 

对象--如何创建对象

创建一个对象有两种方法

1、先声明再创建

 1、对象声明:类名 对象名

 2、对象创建:对象名=new 类名()

 

2、一步到位法

  类名 对象名=new 类名()

 

对象--如何访问(使用)对象的成员变量

  对象名.变量名; //简单先这样理解,以后加下控制符此表达就不准确了。


***对象总是存在内存中的

 

一个小思考题[Demo.105.java]

为了让大家加深印象,我们定义一个人类(Person)(包括名字、年龄)。用一步到位法去创建一个对象

   

我们看看下面一段代码:System.out.printlin(b.age);

 
1
Person a=new Person();                    请问:b.age究竟是多少?
2
a.age=10;
3
a.name="小明";
4
Person b;
5
b=a;

***对象总是存在内存中的

一个小思考题[Demo106.java]

在明白对象是如何在内存中存在后,请大家再看看下面的思考题,请问会输出什么信息?

 
1
Person1 a=new Person1();
2
a.age=10;
3
a.name="小明";
4
Person1 b;
5
b=a;
6
System.out.println(b.name);//输出“小明”
7
b.age=200;
8
System.out.println(a.age);//输出a.age为200

 

*****重点也是难点

--成员方法的初步介绍

在某些情况下,我们要需要定义成员方法。比如人类:除了有一些属性外(成员变量表示的年龄、姓名...),我们人类还有一些行为比如:可以说话、跑步..,通过学习,我们人类还可以做算术题。这时就要用成员方法才能完成。现在要求对Person类完善:

1、添加speak成员方法,输入出:我是一个好人

2、添加jisuan成员方法,可以计算从1+..+1000的结果

3、修改jisuan成员方法,该方法可以接收一个数n,计算从1+..+n的结果

4、添加add成员方法,可以计算两个数的和

 


--类的成员方法(成员函数)定义

成员方法也叫成员函数,这里希望大家不要被两个名词搞晕了。

    public 返回数据类型 方法名(参数列表)

    {

       语句;//方法(函数)主体

    }

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

2、数据类型(返回类型):表示成员函数输出

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

 

//类的调用及方法调用[Demo108.java]

public class Demo108{

    public static void main(String []args){

    Person p1=new Person();

    p1.speak();//调用speak方法

    p1.jiSuan();//调用计算方法

    p1.jiSuan(200);//调用可以传入参数的计算方法

    p1.add(12,10);//调用两个数的和

   

    int res=p1.add2(23,34);//调用两个数的和并返回值到res

    System.out.println("res返回值是:"+res);

    System.out.println("num1+num2+num3="+p1.add3(2,2.3f,4.5f));//返回类型一定要一致否则报错。

}

}

//定义名字的几个方法:

//1、驼峰法 如myCry2、下划线法my_cry

//方法名在有不同参数的情况下可以使用同一个方法名,即有参数和没参数的方法可以同名

class Person{ //请注意类名首写字母应为大写如Person为类名

    int age;

    String name;

    //1、可以输出我是好人方法

    public void speak(){  //请注意方法名的首写字母应为小写如speak为方法名

        System.out.println("我是一个好人");

    }

    //2、可以计算1+..+1000的方法

    public void jiSuan(){

        int result=0;

        for(int i=1;i<=1000;i++){

            result=result+i;

        }

    System.out.println("1+..+1000结果是"+result);

    }

    //3、带参数的成员方法,可以输入n值并计算1+..+n

    public void jiSuan(int n){

        int result=0;

        for(int i=1;i<=n;i++){

            result+=i;

        }

        System.out.println("1+..+n结果是"+result);

    }

 

 

    //4、计算两个数的和

    public void add(int num1,int num2){

        int result=0;   //与下面一句等同于return num1+num2;

        result=num1+num2;

        System.out.println("num1+num2="+result);

    }

 

    //5、计算两个数的和,并将结果返回给主调(调用它的)函数

    //注意:返回类型和返回结果的类型要一致

    //注意:在调用某个成员方法的时候,给出的具体数值的个数

    //和类型要相匹配。

    public int add2(int num1,int num2){

        return num1+num2;

    }

    //6、计算两个float数的和,并将结果返给主调函数

    public float add3(int num1,float num2,float num3){

        return num1+num2+num3;

    }

}

 
 






posted on 2018-11-30 14:51  XuCodeX  阅读(738)  评论(0编辑  收藏  举报

导航