Java中new出来的算是对象吗?
如题,一直有个问题困惑着我,基本类型中我们可以这样定义对象(以int为例):
int a;
而引用类型却是只能new出来的,比如这样的:
Human xiaoming=new Human();
问题来了,这里的xiaoming算是对象吗?如果说不是,那不是说好的万物皆对象该怎么解释,它不是Human类的一个实例吗?若是对象,为何跟基本类型定义的对象有很大的区别?
归根到底,我们可以把这个问题转化成new的对象是值传递还是引用传递。我们可以做一个实验进行佐证一下。
Person类:
package UNI;public class Person {public void eat() {System.out.println("睡");}public void sleep() {System.out.println("玩");}public void play() {System.out.println("吃");}
}
客户端:
package UNI;
public class newEX {public static void main(String[] args) {Person a=new Person();a.eat();a.sleep();a.play();Person b=a;System.out.println(b);}}
在这个代码中,我们可以想象一下,如果仅仅是值传递,那b到底该是什么?是eat、sleep还是play呢?运行结果如下:
睡
玩
吃
ddd.Person@10dea4e
我们可以清晰第看到,最后一行输出的结果是一个地址,也就是说我们new出来的是引用对象而不是单纯的对象。这也是为什么我们在输入数组的时候需要Arrays.toString,不然打印出来的就是地址。
通过这个例子我们不仅仅可以验证我们的想法,而且,我们可以发现,如果说new出来的是引用传递,那么,我们要赋值另外一个对象就变得非常简便。比如说,我们要实现这一一个想法,把一个人的信息复制很多份(假如100份),如果我们按照一般的办法就只能不断的new100次,如果能进行传递引用,代码不仅仅变得很简单,而且简洁。比如说:
package ddd;public class newEX {public static void main(String[] args) {Information a=new Information("小红");a.gender("女");a.weigh(47);a.hobby("打麻将");for (int i = 0; i <100; i++) {Person b=a;}}}
很明显,这样进行传递就回变得非常简洁。
Java中new出来的算是对象吗?相关推荐
- Java中,一切皆是对象,为何数据类型中还分为:基本类型和对象?
Java中,一切皆是对象!为何数据类型中还分为:基本类型和对象?按理不应该只有一个类型-对象吗? 1.首先,Java中一切皆是对象!这句话没错,因为八种基本类型都有对应的包装类(int的包装类是Int ...
- Java 中,类、类对象、泛型之间的转换
Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...
- java中使用Semaphore构建阻塞对象池
java中使用Semaphore构建阻塞对象池 Semaphore是java 5中引入的概念,叫做计数信号量.主要用来控制同时访问某个特定资源的访问数量或者执行某个操作的数量. Semaphore中定 ...
- Java中的垃圾回收与对象生命周期
转载自 Java中的垃圾回收与对象生命周期 1. 垃圾回收 垃圾回收是Java程序设计中内存管理的核心概念,JVM的内存管理机制被称为垃圾回收机制. 一个对象创建后被放置在JVM的堆内存中,当永远 ...
- Java中Comparable和Comparator实现对象比较
Java中Comparable和Comparator实现对象比较 目录 一. Comparator 二. Comparable 三.比较 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comp ...
- Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式 1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运 ...
- java中形参不可以是对象吗_(重要)java都是值传递,与对象形参所指向的对象改变,其实参所指向的对象也相应改变并不矛盾(2011年9.30日一天写的两个程序的总结结果)...
1.0建立二叉树的代码,在java中必须创建二叉树的方法必须用返回值,因为不存在c语言中的引用传递,在java中只有值传递 代码1为正确,代码2(没有使用返回值)为错误.那么为什么之前的例子中将对象作 ...
- java中怎样创建多个对象,java中StringBuilder.appent方法创建几个对象
在Java中StringBuilder是继承AbstractStringBuilder,在AbstractStringBuilder是byte[] value; 存放字符内容 public Abstr ...
- java中存在对多个对象加锁的情况_Java对象锁和类锁全面解析(多线程synchronized关键字)...
最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念.最近也是遇到一些问题,不搞清楚锁的概念,很容易碰壁,甚至有些时候自己连用没 ...
最新文章
- js控制表格隔行变色
- Java 利用replaceAll 替换中括号
- 手机充值接口 php,首信易支付,话费充值接口
- 人脑细胞在培养皿中学会打游戏,比AI学习速度快18倍还省电,有黑客帝国那味了...
- 智能循迹避障小车C语言程序编写思路,设计一个循迹避障一体的智能小车的资料和代码及电路图详细概述...
- WinCE启动失败的原因与解决办法分析
- 相约转型新范式,第四范式2021发布会报名开启
- Python词云学习之旅
- eventBus 与fragment
- 我的世界java版如何装mod_Minecraft如何安装Mod?Minecraft添加Mod的方法
- IOS学习笔记(五)——UI基础UIWindow、UIView
- 关于我在1024程序员节还在焊板子这件事儿
- html5里面怎么引入字体
- 阿昌教你Linux密码忘记后如何重置
- Ps和Sai文件自动保存,自动备份
- eclipse 虚拟机启动失败解决方案
- WIN11电脑如何使用IE浏览器进行正常办公操作-以建行网银为例
- 为什么鸿蒙不掉符,教你如何使用鸿蒙符 鸿蒙符的挽歌一波流的逆袭
- java activity_java中的Activity
- AtCoder题解 —— AtCoder Regular Contest 108 —— A - Sum and Product
热门文章
- android x86 安装it,Android X86 虚拟机安装手册
- 管理计算机管理没有其他设备,电脑里的设备管理器没有怎么办
- 飞步科技 x 焱融 YRCloudFile:大幅提升训练效率,开启智驾新纪元
- 通过淘宝链接获取解析获取商品id(淘宝API )
- 怎么保存网页为html格式,怎样保存网页部分内容为html格式?
- Stream流学习记录
- 三极管 NPN 开关电路
- PyTorch ResNet 实现图片分类
- python 爬虫 JA3 指纹 TCL SSL 安全证书问题
- 理解Profiles, Services,Characteristics,UUID等值