导航:首页 > 编程语言 > java引用和对象

java引用和对象

发布时间:2022-11-26 16:43:09

java中引用类型的变量和对象的区别

这个问题问的好,很多基础不牢固的JAVA学习者很多简单的东西没掌握

对象:是按照“类”这个模板建立的,建立的位置则是内存
例如A是一个类。A X则是创建一个引用变量,X=NEW A()则是在内存中建立一个对象(开辟了1片空间),对象的模板就是A(可以理解为在空间里复制了A类里的变量到空间里去)。
此时就可以使用引用变量X去引用对象中的变量了

希望可以帮助到你

⑵ java 中对象和引用的区别,下面是自己的理解,不知道对否,请高手指正

从内存管理的角度来理解比较容易,new MyClass() 这个是在 堆 空间中创建了一个实例,即有对象创建了。而 MyClass myClass 中的 myClass 仅仅是个引用,在内存中占用4字节大小,存放在栈中,存放的内容是 指向 实例即对象的内存地址,类似C及C++中的指针。。

基本上就是如此。。

⑶ Java中什么是对象什么是引用还有枚举,求大佬解决最好用表达式。

如果你是初学者,我用最好理解的方式跟你说.

对象:就是一个名词而已,没啥特别的,学过C语言么?学过C语言的话,结构体,就是对象.

如果没学过C,我再找一个方式给你说.不过要说对象,得先说类.

在JAVA中,有一种数据结构,

Classstudent{
Stringname;
voidshowname(){
System.Out.print(this.name)
}
}

这就是这种数据结构,JDK也会提供很多,系统给你写好的,这个是我程序员自己写的学生类,我们定义了一种学生类,我觉得学生应该有名字属性,还应该有一个让别人知道他名字的能力,所以,他有了名字,有了说出名字的能力,都是我写的,你觉得学生还应该有性别,你就加进去,别赋值.因为学生应该有性别,但不该固定死,你说学生就该是男的么?或者就该是女的?不可能,所以你可以说学生有性别这个属性,但是他到底是什么,我不知道,所以你定义类,不能赋值.

那这是我觉得学生类,所有学生都该这样.

而类跟个体有什么区别呢?这就像你和人类的关系,类有大的方向性的东西,只有个体有具体的特色.

那么个体怎么展现他的特性呢?

还拿这个Student类来说,这个类是大方向,代表所有学生都有名字和说出名字的能力,但具体个体,比如你叫张伟,

那么

Studentzhangwei=newStudent("zhangwei");

就是通过new关键字,从学生类,创建出来一个真真实实的叫张伟的个体.

那么这个张伟就是对象,所有由new关键字,从类中创建的个体就叫对象.

现在明白什么叫对象了么?

下面说引用,如果你是一个初学者,我希望你只听我说的第一部分.

int number=123;

这就是一个引用,你这条代码,执行后,会在存储空间开辟一个小单元,里面放着123这个实际数据.

那么你想使用这个数据,怎么办呢?你不知道这个小单元的位置啊,怎么用呢?Java和所有编程语言都如此,会给你提供一种方案,那就是,给这个单元起个名字,这个单元就叫number,以后你代码中再写number,我知道去哪个小单元找数据.

而这个number就是在123这个数据单元的引用.或者number引用123这个单元,说起来,中文有点绕,你怎么说好像都对,反正你明白这个意思就行.就是一个东西等价另一个东西,这就是一个队另一个的引用.

这是第一部分,如果你是初学者,听到这里就可以了,如果你是想钻研深度的,下面的继续,

Java中有四种引用,分别为强引用,软引用,弱引用,虚引用.我再强调一遍啊,如果你是新手,别看这部分.容易让你乱.

强引用::::::说起来也容易理解,强引用,就是我刚才写的int number=123这个代码,这就是强引用,我写了这代码,虚拟机运行时,发现,卧槽,内存不够了啊,这可怎么办?要不,我偷偷的,不给你分配内存存储123?也不告诉你?不行!!!虚拟机如果发现内存不够了,就会停止运行,告诉你报错了,内存不够.因为你写的这个代码叫强引用型,特点就是必须要引用成功.

软引用::::那么这是什么,这也是一种引用类型,目的就是,告诉虚拟机,啊,你运行吧,我要创建int number=123,但是,我允许你在出现内存不足时,释放123这个空间,不用担心我不让,我同意了,你可以在内存不足时删掉我.

这就是软引用,那具体怎么实现呢?

intnumber=123;
SoftReferenceruanyinyong=newSoftReference(number);
number=null;
ruanyinyong=get();

这段代码就是在创建一个软引用,首先第一行肯定是一个硬引用,就是,无论你内存够不够,你必须给我创建数据.

第二行通过系统提供的创建软引用的类,来为你创建一个软引用,就是将number等价的存到ruanyinyong这个变量中.

第三行,释放number这个硬引用为弱引用(后面说),就是告诉系统,number现在不是硬引用了,你可以删除我了.但是,不幸的是,number在第二行已经重新扔给了ruanyinyong.

现在ruanyingyong就出现了.懂么?

弱引用:::::下面是弱引用,弱引用在刚才说了一嘴,什么是弱引用呢?弱引用就是比软引用还低级的引用方式,软引用是内存不足,才会删除,弱引用是内存不管你足不足,我虚拟机垃圾回收器只要在周期性扫描垃圾的时候发现你小子了,你就给我玩蛋去.

怎么达成弱引用呢?那就是使用number=null这种方式,来释放内存,其实这就是弱引用了,你必须通过=null的方式来告诉虚拟机,这个数据没用了.但是注意,虚拟机的垃圾回收期是周期性扫描的,也就是说,你虽然写了=null,但是他不一定立刻删除,需要扫描到你的时候,才会删除.但是,你还要注意一点,那就是,虽然还没删除,但是引用已经断开了,人家没删除指的是具体数据单元的数据123没删除,而不是说你这个引用number没删除,其实即使你的123没删除,但是number的引用的那根线已经切断了,你也无法通过number去引用了.

虚引用::::唉呀妈呀,你这也没个悬赏,我可是一个字一个字给你手写的,就看你爱学,喜欢认真研究的人,才给你写的,你要不好好看,多对不起啊.

虚引用我不是很清楚,这个你自己网络下吧,我也查过了,不是很看的懂,所以没法用自己的语言给你解释了.

最后最后最后,你的枚举是吧.

枚举,我还真把JAVA源代码给反编译成汇编看过,枚举其实就是一个Class类,特殊的类.

你反编译,看代码,发现它也是类,可是为啥特殊呢?

这个没法有通俗易懂的语言,我也没法按你是新手或者老手不同解释,这就一个解释,不懂,你就去看明白啥是类就行了.

我给你描述一个类:

构造器是私有化的,类中的属性只有get方法,没有set 方法,而且所有属性都是静态的最终的,这样子的类,就是枚举类型.

为啥呢?因为枚举嘛,本意就是不想让你再创建新的对象,只让你使用他枚举列表里提供的常量,那么私有化构造器,你就无法使用new调用构造器去创建新对象了.而保证成员属性不可变,那就是不提供set方法,只有get方法.而属性是最终的finall类型的,也进一步禁止你修改属性.

所以你只能用他提供的,不能自己去构造,修改任何数据.这就是枚举.

这个类其实就是枚举了.但是这个我们写出来的模仿出来的枚举,跟真正的枚举类是差不多的,只差一点,我们写的这个,可以通过反射的形式,创建对象,而我们当初设计枚举时,可一定一定一定不允许用户创建新的或者修改数据啊,你只能用,不能创建啊!那怎么办?没事,你自己模仿的枚举不行,我系统提供一个,枚举类,连反射都无法创建对象,看你怎么办?所以我们写的,跟系统提供的区别仅在于,我们的通过常规手段创建不了,但是反射能创建,而系统提供的,反射都无法创建对象.

那么你会发现,卧槽,这个特性很符合我们26中设计模式中的"单例模式"的需求啊,设计单利模式不也是需要私有化构造器,然后提供一个不可变的,静态的对象么?这个算是扩展,你了解单例模式,再说,其实现实中就有很多人用枚举来完成单例模式,代码更优雅,更安全,更美观,我就这么干....

⑷ 在JAVA中:对象、实例、引用,分别是什么意思

对象这个词很难将清楚的。编程思想里的面向对象最重要的就是对象了,面向对象对于每一个学编程的人来说,都需要一个适应的阶段,是慢慢的在编程中来理解的。实例,值的就是一个对象的实体,很多相似的东西就是一个对象,而这些相似的东西中拿出一个,就是这个对象的一个实例。引用 就是对象或者实例之间的调用了,其实这些东西都是在面向对象的基础上来理解的,需要在编程中体会。

⑸ 引用变量是不是对象java中一切都是对象

Java中的引用可以理解是指向Java对象的指针(与C++的引用含义不同),引用本身不是对象,只是一种语法定义而已。String
a="abc"中产生了一个对象:“abc”(前提是在JVM的字符串池中当前没有"abc"。如果有,上述语句不产生任何对象)。a是指向这个对象的引用,a在后面的程序中可以被修改指向其他String类型对象。
另外Java中的java.lang.ref.Reference<T>是表示引用的一个Class泛型,可以用它产生Reference对象来配合GC的一些动作,具体可以参见SoftReference,WeakReference等的应用。

⑹ Java中 引用变量,对象,实例变量 三者的区别。

A a = new A();
new A() 对象,A a 引用变量,a = new A()将对象地址给了引用变量。
实例变量也可以叫他全局变量,就是将变量放在类的方法之外的变量。
所以引用对象是用于存储对象地址的,实例变量描述的是变量位置。

⑺ java 中 什么是引用对象

Java中基础类型(如int、long、short、double、byte、char、float)是传值,其他类型或自定义类型都是传引用。

举个例:
public class A {
private int a;
public void setA(int a) {

this.a = a;

}

public static void main(String[] args) {
A obj = new A();
modifyA(obj);//这里obj就是引用对象,方法modifyA对obj的修改不会影响obj对象所在内存地址。
}

public void modifyA(A a) {
a.setA(10);
}
}

⑻ java的引用,变量,对象分别什么意思

Java中数据类型分为两大类,是基本类型和对象类型。相应的,变量也就有两种类型:基本类型和引用类型。基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。引用类型,可是引用类型呢?它是一个对象类型的啊,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。很好理解吧,因为一个对象,比如说一个人,不可能是个数字也不可能是个字符啊,所以要想找它的话只能找它的地址了。

⑼ java中引用数据类型与对象的区别

在内存范畴中,引用就是一个地址,它存在于栈中,指向null或通过new操作符创建在堆中的实例,也就是你说的对象。在Java中是不可以直接操作实例的,必须通过引用的方式间接进行,从这个意义上来说,可以把实例比喻成电视机,而引用就是操作这个电视机的遥控器。

阅读全文

与java引用和对象相关的资料

热点内容
李采镡所有电影 浏览:348
前度2未删减 浏览:866
日本一部关于平行时空的电影 浏览:346
伤寒论原文pdf 浏览:29
剧情肉的电影 浏览:803
下行 电影在线观看 浏览:786
欧美大尺度男同电影 浏览:985
张学友最后大佬电影 浏览:777
心理罪中廖亚凡怀了孩子 浏览:844
服务器如何开权限设置密码 浏览:271
申请资料填写小程序源码 浏览:177
服务器怎么私信别人 浏览:994
phpxdebug关闭 浏览:690
能看的网址大家都懂的 浏览:287
安卓程序员开发经验 浏览:660
服务器返回超时是怎么回事 浏览:653
网关后dns服务器有什么用 浏览:607
line连接不上服务器怎么办 浏览:862
付费电影免费下载 浏览:607
反编译flv 浏览:939