精华内容
下载资源
问答
  • 对象和对象的引用

    千次阅读 多人点赞 2018-06-02 01:41:28
    最近初学java对于对象和对象的引用以及实例化有诸多迷惑,查了很多博客和API,现整理自己的理解如下:Java是一种面向对象的语言,采用类和对象的概念。Java中每个对象都有一种类型,即对象所属的类。类有两个主要...

    最近初学java对于对象和对象的引用以及实例化有诸多迷惑,查了很多博客和API,现整理自己的理解如下:

    Java是一种面向对象的语言,采用类和对象的概念。Java中每个对象都有一种类型,即对象所属的类。类有两个主要成员:域(field)和方法(method)。

    1. 域是与一个类或该类的对象相关联的数据的变量。域中存储初值或执行类的方法得到的计算结果。
    2. 方法包含该类的可执行代码。方法由语句构成。方法被调用的方式,以及这些方法所包含的语句最终指导程序的执行。

    对象以及对象的引用

    关键字new用来创建对象。从一个类中创建用一个对象被称为实例化,所以,对象也常被称为实例。

    Java中新创建的对象被放在被称为“堆”的系统存储区中。Java中的对象都通过“对象引用”(object reference)来访问。一个类的变量持有一个对象,实际上是对该对象的引用。当变量不再引用任何对象时,该对象引用就为null。而我们说的把对象传给一个方法实际上是把对象的引用传给一个方法(参考C++中指针的概念)。但是多数情况下,对象和对象引用的区别都被大家忽略。而这又恰恰是理解对象的关键。

    现在这里有一个类:

    class Point{
        public static void main(String[] args){
        System.out.println("hello");
    }

    对于Point类我们创建对象的通常语句为:

    Point point=new Point();

    通常大家以为point即为所创建的类,其实并不是这样,实际上point是我们创建的对象的引用。这个语句可以分解为两部分来看:

    Point point;//①
    point=new Point();//②

    Point是这里自定义的一个类型,即类类型。

    在语句①中经由Point声明了一个类类型的变量point,是Point类引用变量,它存放在栈空间中。也就是用来指向Point的对象的对象引用。但是此时point不是任何对象的引用,其指向为null,因为对象要在语句②中才创建。

    在语句②中由关键字new创建了一个Point的对象,并将之存放在堆中,然后利用操作符“="使得point引用变量指向刚刚创建的在堆中的对象。

    对象本身看不见摸不着,它是堆中的一块内存实体,甚至说对象本身没有名字。Point不是对象,因为一个类可以创建n个对象不可能每一个都叫做Point,point也不是对象它是Point定义的一个变量,经由语句②它成为了对象的引用。有了对象的引用,就可以方便的调用方法等操作。

    对象和对象引用的关系

    ”但是此时point不是任何对象的引用,其指向为null“上一部分我们讲到对象的引用可以指向null。它真正的含义是:

    一个对象的引用可以:指向一个具体的已经创建的对象或者指向null。即对象的引用只有唯一的指向,不能同时指向多个对象,这一点也很好理解,借用指针的概念,一个指针某一时刻只能指向唯一的内存块代表唯一的内存地址。既然point这个引用变量可以被”赋值“操作,那么自然的如果Point类此时通过”point2=new Point();"又创建了一个新的对象2,我们可以有:

    point=point2;

    这样point就成了对象2的引用,对象1和对象2为堆中的不同的内存块。但是point2此时仍旧是对象2的引用,即对象2有两个引用变量指向它。如果把气球比作对象的话,系气球的绳子比作对象的引用,那么对象2这个气球上面系了两个绳子。显然最初创建的对象1上面没有任何绳子系在上面,也就是说它没有“对象引用”,对于这样的对象就要面临被废区收集器(garbage collection)自动回收,从而在堆中消除。但是并不是立即消除,系统会判断在一个合适的时候回收。

    总结起来:对象的引用某一时刻只可以有唯一指向(或null),对象本身可以同时被多个引用变量引用(或0个)。

    得不到



    展开全文
  • java中对象和对象的引用的区别

    千次阅读 2017-09-25 00:01:32
     这段话来自于《Java编程思想》,很显然,从这段话可以看出对象和对象引用不是一回事,是两个完全不同的概念。举个例子,我们通常会用下面这一行代码来创建一个对象:  Person person = new Pe

    在 Java 里都得到了简化,一切都被视为对象。因此,我们可采用一种统一的语法。尽管将一切都“看作”对象,但操纵的标识符实际是指向一个对象的“引用”(reference)。”

      这段话来自于《Java编程思想》,很显然,从这段话可以看出对象和对象引用不是一回事,是两个完全不同的概念。举个例子,我们通常会用下面这一行代码来创建一个对象:

      Person person = new Person("张三");

      有人会说,这里的person是一个对象,是Person类的一个实例。

      也有人会说,这里的person并不是真正的对象,而是指向所创建的对象的引用。

      到底哪种说法是对的?我们先不急着纠结哪种说法是对的,再看两行代码:

      Person person;

      person = new Person("张三");

      这两行代码实现的功能和上面的一行代码是完全一样的。大家都知道,在Java中new是用来在堆上创建对象用的,如果person是一个对象的话,那么第二行为何还要通过new来创建对象呢?由此可见,person并不是所创建的对象,是什么?上面的一段话说的很清楚,“操纵的标识符实际是指向一个对象的引用”,也就是说person是一个引用,是指向一个可以指向Person类的对象的引用。真正创建对象的语句是右边的new Person("张三");

      再看一个例子:

      Person person;

      person = new Person("张三");

      person = new Person("李四");

      这里让person先指向了“张三”这个对象,然后又指向了“李四”这个对象。也就是说,Person person,这句话只是声明了一个Person类的引用,它可以指向任何Person类的实例。这个道理就和下面这段代码一样:

      int a;

      a=2;

      a=3;

      这里先声明了一个int类型的变量a,先对a赋值为2,后面又赋值为3.也就是说int类型的变量a,可以让它的值为2,也可以为3,只要是合法的int类型的数值即可。

      也就是说,一个引用可以指向多个对象,而一个对象可不可以被多个引用所指呢?答案当然是可以的。

      比如:

      Person person1 = new Person("张三");

      Person person2 = person1;

      person1和person2都指向了“张三”这个对象。

    展开全文
  • vue循环 数组对象 对象

    万次阅读 2017-12-14 15:47:51
    在标签中v-for循环 1.循环数组对象列表(一般后台返回的形式) 2.循环对象(3个参数【有序】:value,key,index)

    一、在标签中v-for循环

    1.循环数组对象列表(一般后台返回的形式)

     


    2.循环对象(3个参数【有序】:value,key,index)




    二、在js中循环

    遍历数组对象(其实这是es6语法)

    for (leti ofthis.optWithdrawList){
        console.log(i.entrustNo) }


    展开全文
  • Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象。 要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递。 Intent中...

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象。

    要求被传递的对象必须实现上述2种接口中的一种才能通过Intent直接传递。

    Intent中传递这2种对象的方法:

    Bundle.putSerializable(Key,Object);  //实现Serializable接口的对象
    
    Bundle.putParcelable(Key, Object); //实现Parcelable接口的对象

     一、传递对象

    假设由登录界面(Login)跳转到主界面(MainActivity)传递的对象为登录的用户信息 User类

    1.首先创建一个序列化类:User

    package org.yayun.demo;
    
    import java.io.Serializable;
    
    import android.R.integer;
    
    public class User implements Serializable {
    	private String name;
    	private int level;
    
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getLevel() {
    		return level;
    	}
    	public void setLevel(int level) {
    		this.level = level;
    	}
    	public User(String name,int level) {
    		this.name=name;
    		this.level=level;
    	}
    	
    }
    


    注意点,类实现Serializable接口

    2.布局文件很简单,main.xml中一个Button,login.xml中一个TextView:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/btn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="登录" />
    
    </LinearLayout>
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="" />
    
    </LinearLayout>


    3.MainActivity.java

    package org.yayun.demo;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity {
    	private Button button;
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState); // 生命周期方法
    		super.setContentView(R.layout.main); // 设置要使用的布局管理器
    	button=(Button)findViewById(R.id.btn);
    	button.setOnClickListener(new OnClickListener() {
    		
    		public void onClick(View v) {
    			User user=new User("yayun", 7);//实例化对象
    			Intent intent=new Intent();
    			intent.setClass(MainActivity.this, LoginActivity.class);
    			Bundle bundle=new Bundle();
    			bundle.putSerializable("user", user);//序列化
    			intent.putExtras(bundle);//发送数据
    			startActivity(intent);//启动intent
    			
    		}
    	});
    
    	}
    }


    4.接收Activity--LoginActivity.java:

    package org.yayun.demo;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class LoginActivity extends Activity {
    	private TextView textView;
    
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState); // 生命周期方法
    		super.setContentView(R.layout.login); // 设置要使用的布局管理器
    		textView = (TextView) findViewById(R.id.text);
    		Intent intent = this.getIntent();
    		User user = (User) intent.getSerializableExtra("user");
    		textView.setText("用户名:" + user.getName() + "用户等级"
    				+ String.valueOf(user.getLevel()));
    
    	}
    }


    5.运行实例如下:

    可以看出,对象已经成功传过来了!

    二、传递对象集合

    1.布局文件没有改变,我们看一下MainActivity.java:

    package org.yayun.demo;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity {
    	private Button button;
    	List<User> list=new ArrayList<User>();
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState); // 生命周期方法
    		super.setContentView(R.layout.main); // 设置要使用的布局管理器
    	button=(Button)findViewById(R.id.btn);
    	button.setOnClickListener(new OnClickListener() {
    		
    		public void onClick(View v) {
    			User user1=new User("yayun", 7);//实例化对象
    			User user2=new User("feifei", 9);
    			list.add(user1);
    			list.add(user2);
    			Intent intent=new Intent();
    			intent.setClass(MainActivity.this, LoginActivity.class);
    			Bundle bundle=new Bundle();
    			bundle.putSerializable("list",(Serializable)list);//序列化,要注意转化(Serializable)
    			intent.putExtras(bundle);//发送数据
    			startActivity(intent);//启动intent
    			
    		}
    	});
    
    	}
    }


    2.看一下接收Activity--LoginActivity.java

    package org.yayun.demo;
    
    import java.util.List;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class LoginActivity extends Activity {
    	private TextView textView;
    	List<User> list;
    
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState); // 生命周期方法
    		super.setContentView(R.layout.login); // 设置要使用的布局管理器
    		textView = (TextView) findViewById(R.id.text);
    		Intent intent = this.getIntent();
    		list = (List<User>) intent.getSerializableExtra("list");//获取list方式
    		User user1=list.get(0);
    		User user2=list.get(1);
    		textView.setText("用户名:" + user2.getName() + "用户等级"
    				+ String.valueOf(user2.getLevel()));
    
    	}
    }


    3.运行实例:

    我们看出,已经从对象集合中取出对象了!

    总结

    1.Bundle.putSerializable(Key,Object); //实现Serializable接口的对象;

    2.获取对象User user = (User) intent.getSerializableExtra("user");

    3.bundle.putSerializable("list",(Serializable)list);//对象集合存入方式;

    4.list = (List<User>) intent.getSerializableExtra("list");//获取对象集合list方式

     

    喜欢的朋友点个赞,关注一下!谢谢微笑

    展开全文
  • JSON数组对象和对象数组

    千次阅读 2017-11-22 09:59:07
    4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。 二、事例 1. var china= {beijing:{name:"北京",area:"16000",haidian:{...
  • ElasticSearch中存入JSON对象和对象数组

    万次阅读 2019-01-16 16:29:09
    存入JSON对象 在现实中我们常常会遇到各种复杂对象,比如: { "region": "ZH-CN", "manager": { "age": 30, "name": { "first": "John&...
  • 添加核心代码如下: this.data.push...i 全部代码如下: ============================32、在Vue项目中实现动态添加或者删除对象和对象数组============================ 效果图如下: 更多技术请关注QQ群:636212586
  • 深入理解C++中的对象和对象引用

    万次阅读 2014-11-07 00:04:51
    有言在先: 返回局部对象和引用, 就像返回局部变量的地址一样, 非常非常危险, 要避免使用。 下面程序中有的地方返回了局部对象的指针, 实际上也是危险的, 但本文先不讨论这个。 先来看一个入门级的程序: #...
  • 在学习Java反射的过程中,遇到了一点疑惑的地方 //1.获取Class对象 Class clazz = Class.forName("...); //2....Object obj = clazz.newInstance();...平常理解的对象和实例都是一个东西,将一个对象实...
  • 刚才的帖子一起发,也是为了把安装环境语言特性分开。 问题:下面哪个定义的是对象? (1)Date date; (2)Date date1=new Date(); 答案:(2)定义的才是一个对象,而(1)定义的是一个对象变量,一...
  • json数组对象和对象数组

    万次阅读 2013-03-04 21:35:12
    4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。  二、事例  1.  var china= {beijing:{name:"北京",area:...
  • Gson是Google的一个开源...Gson里最重要的对象有2个Gson GsonBuilder   Gson有2个最基本的方法 1) toJson() – 转换java 对象到JSON 2) fromJson() – 转换JSON到java对象   下面是几个小例子 1
  • Python对象和类序列化到MySQL

    万次阅读 2020-01-07 23:21:49
    pickle序列化对象和类到数据库,需修改mysql数据库表结构,字段类型设为二进制,如blob类型,参考: https://www.cnblogs.com/wangchunlan1299/p/7725062.html | test | CREATE TABLE `test` ( `id` int(10) unsigned ...
  • 基于对象和面向对象的区别

    千次阅读 2018-12-06 16:18:30
    通常“基于对象”是使用对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说“基于对象”没有继承的特点。而“多态”表示为父类类型的子类对象实例,没有了继承的概念也就无从谈论“多态...
  • 初学JavaScript的时候总是分不清什么是本地对象、内置对象和宿主对象,现在写一篇博客来记录一下。一、本地对象ECMA-262把本地对象(native object)定义为:独立于宿主环境的ECMAScript实现的对象。 这里简单说...
  • JAVA面向对象之对象和

    千次阅读 多人点赞 2015-12-20 09:30:41
    Java是一种面向对象的编程语言,面向对象在整个Java的学习中属于重中之重,从这一篇博客开始,将逐步为大家介绍Java面向对象的相关知识,这一偏将为大家介绍对象和类的概念以及如何定义类和创建对象。 一、对象和类...
  • DOM对象和内置对象(中)

    万次阅读 2015-09-04 23:36:06
    前言 在第一篇博客《了解JavaScript》中已经介绍了DOM及DOM...接下来会介绍它们的一些实用的对象和方法,如: 1、alert()、prompt()和confirm()与用户交互。 2、利用getElementById()选择页面元素。 3
  • jquery对象和dom对象之间转化

    千次阅读 2019-03-31 00:17:23
    什么是DOM对象?  使用JavaScript中的方法获取页面中的元素返回的对象就是dom对象。比如使用document.getElement*系列的方法返回的就是dom对象。 var btn = document.getElementById(“btnShowDiv”); var divs = ...
  • Application对象和Session对象的区别 Application对象是多会话、多页面的 Session对象是单会话、多页面的 Session对象中存储的值在整个用户会话过程中都可以访问到该值 Application对象中存储的值在整个服务器...
  • 对象实例数据和对象类型数据

    千次阅读 2019-07-30 16:32:29
    对象类型:对象中各个实例字段的数据 对象类型数据:对象的类型、父类、实现的接口、方法等
  • Java的对象头和对象组成详解

    万次阅读 多人点赞 2018-07-20 10:46:47
    一,对象头 1,Mark Word 2,指向类的指针 3,数组长度 二,实例数据 三,对齐填充字节 Java对象保存在内存中时,由以下三部分组成: 1,对象头 2,实例数据 3,对齐填充字节 一,对象头 java的对象头...
  • 声明对象和实例化对象的区别

    千次阅读 2015-11-04 11:17:20
    声明对象和实例化对象的区别
  • jquery对象和js对象的相互转换

    万次阅读 2018-07-06 11:02:50
    两种转换方式将一个jQuery对象转换成js对象:[index].get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的js对象。 如:var $v =$("#v") ; //jQuery对象 var v=$v[0]; //...
  • JQuery对象和DOM对象的区别

    万次阅读 多人点赞 2013-05-09 10:13:09
    初学jQuery,会对jQuery对象和DOM对象心存很大的疑惑,因此有必要明白他们之间的区别和联系。 DOM对象是我们用传统的方法(javascript)获得的对象,jQuery对象就是用jQuery的类库选择器获得的对象。JQuery对象就是...
  • C++中函数返回临时对象和本地对象的区别 在C++中如果函数返回值是对象的时候,那么该直接返回临时对象呢,还是先在函数体内构造好一个本地 对象,然后返回。如果可以直接返回临时对象,那么我们就返回临时对象...
  • JSON对象和javascript对象的相互转换

    千次阅读 2018-01-02 14:19:10
    一,关于json对象与javascript对象的...//JSON对象:{"name":"张三","age":"18","address":"锦绣路"}区别:JSON对象没有变量的概念,末尾也不加分号,无论key还是value都用双引号括起来二,JSON对象和javascript对象
  • 有状态对象和无状态对象

    千次阅读 多人点赞 2016-09-10 16:02:09
     要搞清楚有状态对象和无状态对象,首先需要弄清楚线程安全的问题。如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的...
  • 子类对象继承和沿用父类对象的属性和属性值 如果在父类中,直接给属性赋值或者是在无参构造函数中给属性赋值,... * 父类对象和子类对象的问题 */ public class Father { public String name;//姓名 protec...
  • HTML5 file对象和blob对象的互相转换

    万次阅读 2019-01-22 09:46:05
    最近在做一个裁剪图片的需求,基于vueivue,裁剪完图片遇到一个坑,canvas是转成了blob对象,很少有有blob对象转File的文章,所以今天来写一个吧! 使用FileReader 对象转换:File =&gt; DataURL 该对象用于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,083,262
精华内容 433,304
关键字:

对象和对象