对象引用

1 public class Test {

2     public static void main(String[] args) {

3         Human aPerson = new Human(122);    

4     }

5     

6 }

7 class Human{

8     /*constructor*/

9     public Human(int h){

10         this.height = h;

11     }

12     /*accessor */

13     public int GetHeight(){

14         return this.height;

15     }

16     /*mutator */

17     public void GrowHeight(int h){

18         this.height+= h;

19     }

20     private int height;

21 }

aPerson 为对象引用reference存在内存的栈中。

But!!!

在 Java中,所有的(普通)对象都储存在堆上。因此,new关键字的完整含义是,在堆上创建对象。

基本类型(primitive type)的对象,比如int, double,保存在栈上。当我们声明基本类型时,不需要new。一旦声明,Java将在栈上直接存储基本类型的数据。所以,基本类型的变量名表示的是数据本身,不是引用。

引用赋值:

当我们将一个引用赋值给另一个引用时,我们实际上复制的是对象的地址。两个引用将指向同一对象。比如dummyPerson=aPerson;,将导致:

时间: 2024-12-16 19:20:02

对象引用的相关文章

EF数据迁移,未将对象引用设置到对象实例

现象: 执行Enable-Migrations -force时就报"未将对象引用设置到对象实例"的异常: DbProviderServicesExtensions.GetProviderManifestTokenChecked 原因: 1.项目启动项的App.config或web.config里面没有配置 entityFramework节点或connectionStrings节点,EF在数据迁移时找不到数据库连接串信息 2.项目启动项配置错误,应该选择有entityFramework节

HttpContext.Current.Session[strName]未将对象引用设置到对象的实例

项目开发是在4.5.1上,不知道为啥客户提供的服务器上安装的是4.5,差别不大也没去升级,然后部署MVC的时候web.config报错 <system.web> <compilation debug="true" targetFramework="4.5.1"/> <httpRuntime targetFramework="4.5.1"/> </system.web> 然后也没在意就把这段给删掉了,

实习第二天-对象-对象引用-引用变量-精-精-精-下雨天

class Person{ } Person是一个数据类型-引用类型 数据类型-变量名   Person a;  声明一个引用类型的变量a,然后在栈中给引用变量a分配了内存空间 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没法很好地理解下面的面向对象技术.把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路. 为便于说明,我们先定义一个简单的类: class Vehicl

对象和对象引用

1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: “按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词.” 2.何谓对象引用? 我们先看一段话: “每种编程语言都有自己的数据处理方式.有些时候,程序员必须注意将要处理的数据是什么类型.你是直接操纵元素,还是用某种基于特殊语法的间接表示(例

未将对象引用到实例

对象为null时调用给对象的属性或方法 "未将对象引用到实例"是很多像我一样的初学者经常遇到的一个问题,常常令人烦恼不已,那么这个问题是怎么发生的呢?先给大家看一张图,我们从这张图入手来分析这个错误造成的原因. 可能很多人看到这样的代码会觉得可笑:"能写出这样的代码,看来此人的智商已"超越"人类的范畴了!" 但是就是有某些内裤外穿的超人叔叔经常不间歇性的写出这样的代码.遇到这样的问题. 从这张图上我们很容易看出Too.f1.array[i]是为n

未将对象引用设置到对象的实例--可能出现的问题总结

一.网络上的一般说法 1.ViewState 对象为Null.2.DateSet 空.3.sql语句或Datebase的原因导致DataReader空.4.声明字符串变量时未赋空值就应用变量.5.未用new初始化对象.6.Session对象为空.7.对控件赋文本值时,值不存在.8.使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值.9.使用FindControl时,控件不存在却没有做预处理.10.反复定义造成未将对象引用设置到对象的实例错误. 二. (1

C语言结构体,C语言结构体指针,java对象引用,传值,传地址,传引用

C语言结构体,C语言结构体指针,java对象引用,传值,传地址,传引用 传值 把实参的值赋值给行参 那么对行参的修改,不会影响实参的值 传地址 传值的一种特殊方式,只是他传递的是地址,不是普通的如int 那么传地址以后,实参和行参都指向同一个对象 传引用 真正的以地址的方式传递参数 传递以后,行参和实参都是同一个对象,只是他们名字不同而已 对行参的修改将影响实参的值 所谓变量是内存地址的一个抽象名字,在静态编译的程序中,所有变量名都会在编译时转换成内存地址,机器不知道变量名,只知道地址. C 语

对象引用分析

对象的三种状态: 可达的 从根节点可以触及到这个对象 可复活的 一旦所有引用被释放,就是可复活状态 因为在finalize()中可能复活该对象 不可达的 在finalize()后,可能会进入不可触及状态 不可达的对象不可能复活 可以回收 引用标记 Java虚拟机提供自动内存管理机制.在GC中,没用的对象,内存是要回收的.如何高效判断对象存活是个重要的问题. 引用计数法 此算法计算对象被引用的次数.引用失效就减一.当对象引用个数为0时表示不被引用.引用计数法,失效简单,效率高是个不错的算法.但Ja

第六条:消除过期的对象引用

Java的垃圾回收机制并不代表我们不需要考虑内存管理的问题. 考虑: public class Stack { pprivate Object[] elements; private int size = 0; private static final int DEFAULT_INITAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITAL_CAPACITY]; } public void push(Objec

Linus:为何对象引用计数必须是原子的

Linus大神又在rant了!这次的吐槽对象是时下很火热的并行技术(parellism),并直截了当地表示并行计算是浪费所有人时间(“The whole “let’s parallelize” thing is a huge waste of everybody’s time.”).大致意思是说乱序性能快.提高缓存容量.降功耗.当然笔者不打算正面讨论并行的是是非非(过于宏伟的主题),因为Linus在另一则帖子中举了对象引用计数(reference counting)的例子来说明并行的复杂性. 在