javaSE06基础-对象与引用-基本类型和引用类型的区别

面向对象2

对象与引用

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

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

例如:我们有一个自定义类为Car(汽车类)

class Car{
	String color;       
	String name;
	String model;
}

Car car= new Car();
e通常把这条语句的动作称之为创建一个对象,其实,它包含了三个动作。

解释

  • 右边的" new Car()" 是以car类为模板,调用car类的构造函数,在对空间里创建一个car类对象
  • 左边"car car" 创建一个car类引用变量,所谓Car类的引用,就是以后可以用来指向car对象的对象引用
  • = 操作使对象引用指向刚创建的那个car对象

Car car;一是对象引用变量,
car= new Car();一是对象本身。

在这里插入图片描述

基本类型和引用类型的区别

基本数据类型引用数据类型
概念变量(单纯的值)对象(引用)
储存位置在栈中存值在栈中存引用,在堆中存具体对象的属性值

值传递与引用传递

值传递:(形式参数类型是基本数据类型)实参传递给形参的是值 形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参

public class Demo1 {
        public static void main(String[] args) {
                int b =20;
                change(b);// 实参  实际上的参数
                System.out.println(b);
        }
        public static void change(int a){//形参  形式上的参数
                a=100;
        }
}

结果:20

可以理解为:小明去餐厅吃饭,看见别人点的红烧肉挺好吃,九把服务员叫过来,说我要一份红烧肉,服务员从后厨拿来一份红烧肉,小明吃完了,但是他吃的红烧肉跟旁边那个人吃的是一份吗?当然不是。

在这里插入图片描述

引用传递:实参传递给形参的是参数, 对于堆内存上的引用地址, 实参和形参在内存上指向了同一块区域 对形参的修改会影响实参

public class Demo1 {
        public static void main(String[] args) {
                int [] a={1,2,3};
                System.out.println(a[0]);
                change(a);
                System.out.println(a[0]);
        }
        public static void change(int[] a ){
                a[0]=100;
        }
}

结果:1 100在这里插入图片描述

由于引用传递,传递的是地址,方法改变的都是同一个地址中的值,

原来a[0]指向0x13地址,值是1,

后来在a[0] 指向的也是0x13地址,将值变成了100

所以,再查询a[0]的值的时候,值自然变成了100

通俗点的讲法就是:

小明回到家,他妻子说:冰箱二层有一只鸡,你去做了;

小明做好了,叫妻子过来吃饭。

这个时候,他妻子现在看见的鸡和她买回来的一样吗?

当然不一样,都做熟了;

什么意思呢?

鸡就是数据

冰箱二层就是存储数据的地址

把鸡做熟了就是相当于把值改变了

地方还是那个地方,就是鸡变了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值