预定义类与自定义类

先上代码

<span style="font-size:14px;">package com.ray.object;import java.util.Date;/*** 预定义类与自定义类* * @author ray* @since 2015-04-22* @version 1.0* */
public class Person {public static void main(String[] args) {Person bill = new Person();Person jack = new Person();System.out.println(bill.equals(jack));Date date1 = new Date();Date date2 = new Date();System.out.println(date1.equals(date2));}}
</span>

输出结果:

false

true

从上面的输出结果可以看见,

1.自定义类Person实例化后,指向两个不同的对象,也可以说指向不同的内存块

2.预定义类Date实例化后,指向的是同一个对象,也就是说指向同一个内存块

为什么?

在这里我就需要说一下jvm的加载机制

启动(Bootstrap)类加载器:引导类装入器是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib 下面的类库加载到内存中。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。可以通过System.out.println(System.getProperty("sun.boot.class.path"));得到启动类加载器可以加载的路径,一般将java class文件(不是jar包)放在<Java_Runtime_Home>/classes路径中将会被启动类加载器加载。

标准扩展(Extension)类加载器:扩展类加载器是由 Sun 的 ExtClassLoader(sun.misc.Launcher$ExtClassLoader) 实现的。它负责将 < Java_Runtime_Home >/lib/ext 或者由系统变量 java.ext.dir 指定位置中的类库加载到内存中。开发者可以直接使用标准扩展类加载器。可以通过System.out.println(System.getProperty("java.ext.dirs"));得到扩展类加载器可以加载的路径,将jar文件放在这个路径中将会被扩展类加载器加载。

系统(System)类加载器:系统类加载器是由 Sun 的 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。它负责将系统类路径(CLASSPATH)中指定的类库加载到内存中。开发者可以直接使用系统类加载器。由于ClassLoader.getSystemClassLoader()返回的是这个类加载器,因此得名系统类加载器。

在jvm启动的时候,其实有一部分预定义的类就加载到内存里面去,所以上面会得到不同的结果。

java基础入门-预定义类与自定义类相关推荐

  1. Linux中的Java类,Java基础入门学习-Java中类的属性

    Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...

  2. Java 基础入门,小白提升路线图

    1000+最新Java面试题 获取学习路线资料啦 Java的基础知识就像我们所住的房子的地基,如果地基不稳,上面所盖的楼房再宏伟,也是没人敢去入住的,同理Java的基础不牢固,以后也很难成为真正意义上 ...

  3. java基础入门了解

    java基础入门了解 Java发展简史 java语言的用处(数据存储,数据分析,数据处理) java被运用的程度 java语言的特点 java语言体系的结构 java语言运行机制 课后知识补充 Jav ...

  4. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  5. Java基础入门必备词汇汇

    #Java基础入门必备词汇汇 一 1.Public ['pʌblik] 公开 2.Static ['stætik] 静态 3.void [vɔid] 无返回 4.main [main] 主要的,主方法 ...

  6. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  7. 叮!您收到一份超值Java基础入门资料! 1

    Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家Java ...

  8. 大数据必学Java知识(一):Java基础入门语法和安装

    Java基础入门语法和安装 1. Java概述 1.1 Java语言背景介绍(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应用) 2. ...

  9. Java基础入门--学习笔记

    Java基础入门教程 itheima–java基础小白教程 学习配套软件:eclipse 1.基础知识 (1)常用DOS命令:切换盘–>E:,cd–>进入文件,可多级,cd - --> ...

最新文章

  1. 错误信息:Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务
  2. 科大星云诗社动态20210810
  3. Android的DataBinding原理介绍
  4. Linux学习笔记 --iptables防火墙配置
  5. Homography 知多少?
  6. Ubuntu18.04 LTS Melodic ROS 教程:使用URDF创建一个虚拟机器人模型
  7. 数据结构最佳路径代码_【微服务】149:商品数据结构
  8. mysql group by 查询慢_MySQL慢查询优化(线上案例调优)
  9. 一个上帝视角的java游戏_从上帝视角看Java如何运行
  10. Mac otool替代readelf命令
  11. python猜数字游戏_C++编程基础: 9. 猜数字小游戏
  12. 数据挖掘常用的基本技术,主要有哪些?
  13. Excel十八个快捷键
  14. html5 blockquote,HTML5 Blockquote引用区块使用实例
  15. 狗头人与地下世界冒险模式通关记录 [20171224]
  16. 总结--看帖收“货”
  17. NEO(小蚁)Seraph ID调研
  18. matlab出现问题:TRANSPOSE 不支持 N 维数组。请使用 PAGETRANSPOSE/PAGECTRANSPOSE 转置页,或使用 PERMUTE 重新排列 N 维数组的维度。
  19. QGroundControl 提示 Power redundancy not met: 0 instead of 1
  20. 如何利用微信进行微信签到呢?

热门文章

  1. CCRD_TOC_2015_EULAR专刊第二辑
  2. Java新手问题集锦
  3. nginx和fpm的进程数配置和502,504错误
  4. php arraymap()函数
  5. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)
  6. STL容器是否是线程安全的
  7. javax.validation.ParameterNameProvider
  8. golang 解析html
  9. linux 路由跟踪表 nf_conntrack 数据结构 参数 简介
  10. stun 协议 NAT穿透方式 简介