1.前言
上回说到类与对象的问题,这一章我们继续来讨论这一章节,首先在开始前,我们来补充一个重要的函数equals()和 “==”的知识。
2.equals()和 “==”
2.1、equals
我们在第一章就已经学过了String字符串,不少小伙伴肯定在想,如果我想要比较两个字符串是否相同的话,是不是只能去遍历比较呢?这个想法虽好,但java的设计者已经给我们准备好了一个比较函数equals()。我们来一起看看它的用法吧。
equals的用法很简单,基本语法为:字符串.equals(比较的字符串),返回值为一个布尔类型,即相同返回true,不同为false。
2.2、==
在C语言中,我们判断两个数字是不是相同用的也是==这个符号,但在java中,它有了更多的用法。如图所示:
3.类与对象
3.1、this
上一节中,我们在使用构造器的时候,有一个叫this的关键字出现了,这个关键字的作用是什么呢?我们从它的字面含义出发,this,这个,是这个什么呢?答案是 “这个对象中的”,所以this,name的含义就是这个对象中的名字,this.sex和this.age也是一样的
所以,现在我们对这张图就应该了解了,我们从外界传参,传给了我们构建的对象中的名字。至于this的更多用法,这里我们暂时不去涉及,等到我们讲解super的时候,我们进行对比学习。
3.2、属性/成员变量
什么是属性,我们在类中定义的变量就称之为属性或是成员变量,如果定义在方法或内部类中的变量就称之为局部变量。属性可以添加修饰符,局部变量不能添加修饰符。
3.3、方法/成员方法
什么是方法,类中定义的函数就称为方法/成员方法:
我们在M类中创建的movie方法,在现有知识中,我们的public 不要做修改,void的地方可以改为int 、double等基本数据类型,这代表了这个方法会返回的数据类型,在加上一个方法名、小括号和{}方法体就可以构成一个方法了。
()内可以添写任意的形参,形参个数可以有多个,并且一个方法只能有一个返回值。
值得注意的是,每一个方法被调用时,就会在栈中单独开辟一个空间,这个空间中对对象的修改除非是对对象的属性所指的地址的值的修改,不然是不会影响到原对象的。如:
可以看到,我们虽然用了一个方法去修改a的值,但是我们原来的对象的值是不会受影响的,受影响的是,在方法开辟的栈的值。至于什么情况下,属性会受到方法的影响呢?这个需要我们讲解到String包装类时才会做说明。
3.4、方法重载
很简单的概念,这里就不过多的讲解了。
3.5、作用域
一个变量的作用的范围,称为作用域。
对于属性来说,它的作用域为:整个类。
对于局部变量来说,它的作用域:在方法体内
同时,属性可以不赋初始化值就可以使用,因为属性的值默认为0或null。
但是对于局部变量,我们必须要给局部变量赋初始值才能使用。
3.6、包
什么是java包?java包作用是什么? http://t.csdn.cn/NbKZi,给大家分享一篇文章。
4.结语
在明天我们将正式进入,面向对象的三大特性的讲解,封装、继承与多态。