面向对象2

对象与引用

Java语言中除基本类型之外的变量类型都称之为引用类型.

Java中的对象是通过引用对其操作的.

例:我们有一个自定义类为Fruit(水果类)

class Fruit{

String name;

String color;

Int size;

}

Fruit fruit=new Fruit();

通常把这条语句的动作称之为创建一个对象,其实,它包含了三个动作.

(1)右边的"new Fruit()",是以Fruit类为模板,调用Fruit类 的构造函数,在堆空间里创建一个Fruit对象.

(2)左边的"Fruit fruit"创建了一个Fruit类型引用变量,所谓Fruit类的引用,就是以后可以用来指向Fruit对象的对象引用.

(3)"="操作符使对象引用指向刚创建的那个Fruit对象.

Java中创建对象的语句我们可以拆分成两部分:

Fruit fruit;

fruit=new Fruit();

有两个实体:一是对象引用变量,一是对象本身.

new Fruit();这个语句在堆空间里创建了实体,尽管他们也是确确实实存在的实体,但是我们看不见也摸不着.

对象没有名字,也就没法直接访问它.我们需要通过对象引用来间接访问对象.

对象好比一个很大的气球,但是我们抓不住它.引用变量是一根绳,可以用来系气球.

Fruit fruit1;(1)创建了一根绳子,一根还没有系上任何气球的绳;

Fruit fruit2;(2)创建的第二根绳子,也没有系上气球;

fruit1=new Fruit();(3)给fruit1系上气球

fruit2=fruit1;(4)这里,发生了复制行为.要说明的是,对象本身没有被复制,被复制的只是对象引用

结果是,fruit2也指向了fruit1所指向的对象.两根绳系的是同一只气球.

基本类型与引用类型的区别:

基本类型:

byte,short,int,long,float,double,char,boolean

他们的值就是一个数字,一个字符,或一个布尔值(true或false)

引用数据类型:

类,接口,数组

他们的值是对象字内存空间中的地址,具体的对象存在堆中.

值传递与引用传递:

Java中进行方法调用中传递参数是,参数传递有两种:

值传递:(形参数类型时基本数据类型):方法调用是,实际参数把他的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值得改变不影响实际参数的值.

引用传递:(形参数类型时引用数据类型参数):也称为传地址.方法调用时,实际参数是对象,这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留下来,所以方法执行中形式参数的改变会影响实际参数.

基本类型传递的该数据本身.引用类型传递的是对对象的引用,而不是对象本身.

static关键字

statiic被称为静态,可以用来修饰类的属性,方法,代码块,内部类.

特点:

随着类的加载而加载

优先于对象存在

修饰的成员,被所有对象所共享

可不创建对象,直接被类调用

static属性:

静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个.在一个对象中修改被static修饰的属性,所有对象中被static修改的属性一起变化.

public class Chinese{

String name;//姓名 非静态属性

static String country;//国家 静态属性

}

所有中国人共享一个国家中国

static 方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用

在static方法内部只能访问类的static属性,不能访问类的非static属性,static属性优先加载

代码块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值