博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA入门到精通-第6讲-成员属性-成员方法
阅读量:7216 次
发布时间:2019-06-29

本文共 3331 字,大约阅读时间需要 11 分钟。

1167156-20181130145045794-1511310801.png
 b.age=10;
 
1167156-20181130145049301-1199386680.png
 
它是根据age和name所占的数据类型还划分空间的;
b没有赋值,孤零零地放在那;
b=a;
让b也指向a所指向的空间,实际上是一个引用;
1167156-20181130145050815-891956376.png
 
1167156-20181130145053743-327143206.png
 
再次证明, 其实指向的是同一块空间;引用传递的特点;
程序员用new的方法创建一个对象,在内存里面存放;
内存有创建就应该有回收, JAVA有内存回收机制;
JAVA虚拟机发现没有对象指向的时候,会认为它是垃圾;
a=null;      //a不再指向对象,是一个垃圾,会在适当的时候回收内存
C++里面开辟的内存,需要及时回收,delete/free。
成员方法(成员函数):
1167156-20181130145108806-1399798040.png
 
一个class里面的最简单的方法:
1167156-20181130145112703-1653911025.png
 如何使用这个方法?
1167156-20181130145113820-1375789263.png
 
1167156-20181130145114859-1688123911.png
 
JAVA命名规范:
1167156-20181130145116835-91787397.png
 //speak
 
//jisuan
 
1167156-20181130145118742-1971644127.png
 
//参数列表,表示函数接收的参数
输入参数自动计算,比较灵活;
1167156-20181130145119187-549639966.png
 
1167156-20181130145119879-1430568220.png
 result和不同的方法里面的作用域不一样,不会冲突;
1167156-20181130145120787-202021370.png
 函数名重复,但不会冲突;
JAVA编译器比较聪明,如果有参数输入会自动区分开来;
函数名一样,参数不一样,函数的重载;
当传100会调用有参数列表的方法;
不传参数会调用没有参数列表的方法;
1167156-20181130145121709-1123793115.png
1167156-20181130145122021-1650079845.png
函数调用的原理图:
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);

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

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

一个小思考题[Demo106.java]

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

Person1 a=new Person1(); a.age=10; a.name="小明"; Person1 b; b=a; System.out.println(b.name);//输出“小明” b.age=200; System.out.println(a.age);//输出a.age为200
 
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;

    }

}

1167156-20181130145122788-339251233.png

 
 

转载于:https://www.cnblogs.com/xuxaut-558/p/10044134.html

你可能感兴趣的文章
银行家算法
查看>>
Spring 的@Scheduled注解实现定时任务运行和调度
查看>>
Oracle笔记 四、增删改、事务
查看>>
PreTranslateMessage作用和用法
查看>>
微信支付开发教程
查看>>
一款免费好用的正则表达式工具:Regex Match Tracer
查看>>
jquery.min.map 404 (Not Found)出错的原因及解决办法
查看>>
关于浮点数的json解析
查看>>
十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
查看>>
python-切片实例
查看>>
Android8.0运行时权限策略变化和适配方案
查看>>
Latex中设置字体颜色
查看>>
通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能...
查看>>
话说TP框架里的Vendor这目录是干什么用的啊?类库扩展thinkphp3.1版本
查看>>
Android SDK与API版本的对应关系
查看>>
Elasticsearch yellow 意味着主分片可用,副本不可用
查看>>
Android开发实现QQ三方登录 标签: android开发qq三方登录
查看>>
2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】
查看>>
【Linux】使用xshell登陆时密码框为灰色,无法输入密码
查看>>
gradle平级项目引用
查看>>