java成员方法存储在哪里 java的成员方法是什么_System

 b.age=10;

 

java成员方法存储在哪里 java的成员方法是什么_java_02

 

它是根据age和name所占的数据类型还划分空间的;

b没有赋值,孤零零地放在那;

b=a;

让b也指向a所指向的空间,实际上是一个引用;

java成员方法存储在哪里 java的成员方法是什么_java成员方法存储在哪里_03

 

java成员方法存储在哪里 java的成员方法是什么_java_04

 

再次证明, 其实指向的是同一块空间;引用传递的特点;

java成员方法存储在哪里 java的成员方法是什么_成员方法_05

java成员方法存储在哪里 java的成员方法是什么_java成员方法存储在哪里_06

程序员用new的方法创建一个对象,在内存里面存放;

内存有创建就应该有回收, JAVA有内存回收机制;

JAVA虚拟机发现没有对象指向的时候,会认为它是垃圾;

a=null;      //a不再指向对象,是一个垃圾,会在适当的时候回收内存

C++里面开辟的内存,需要及时回收,delete/free。

成员方法(成员函数):

java成员方法存储在哪里 java的成员方法是什么_成员方法_07

 

一个class里面的最简单的方法:

java成员方法存储在哪里 java的成员方法是什么_c/c++_08

 如何使用这个方法?

java成员方法存储在哪里 java的成员方法是什么_成员方法_09

 

java成员方法存储在哪里 java的成员方法是什么_System_10

 

JAVA命名规范:

java成员方法存储在哪里 java的成员方法是什么_c/c++_11

 //speak

java成员方法存储在哪里 java的成员方法是什么_System_12

 

//jisuan

java成员方法存储在哪里 java的成员方法是什么_c/c++_13

 

java成员方法存储在哪里 java的成员方法是什么_c/c++_14

 

//参数列表,表示函数接收的参数

输入参数自动计算,比较灵活;

java成员方法存储在哪里 java的成员方法是什么_java_15

 

java成员方法存储在哪里 java的成员方法是什么_System_16

 result和不同的方法里面的作用域不一样,不会冲突;

java成员方法存储在哪里 java的成员方法是什么_java_17

 函数名重复,但不会冲突;

JAVA编译器比较聪明,如果有参数输入会自动区分开来;

函数名一样,参数不一样,函数的重载;

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

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

java成员方法存储在哪里 java的成员方法是什么_成员方法_18

java成员方法存储在哪里 java的成员方法是什么_c/c++_19

函数调用的原理图:

会开辟新栈;

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、驼峰法 如myCry;2、下划线法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;
    }
}

java成员方法存储在哪里 java的成员方法是什么_java_20