文档章节

java基础入门-预定义类与自定义类

raylee2015
 raylee2015
发布于 2015/08/24 14:38
字数 592
阅读 11
收藏 0

预定义类与自定义类

先上代码


<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启动的时候,其实有一部分预定义的类就加载到内存里面去,所以上面会得到不同的结果。



版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
私信 提问
[雪峰磁针石博客]Jython介绍

快速入门 下面我们使用jython来调用自定义jar包中的类。 编辑java文件:Beach.java 编译成jar包: 添加Craps.jar到CLASSPATH,修改/etc/profile,修改CLASSPATH 使用. /etc/profile导入变量。...

Python测试开发人工智能
2018/07/17
0
0
scala入门之使用scala解释器

scala解释器是编写scala表达式和程序的交互式“shell”。只要在解释器里输入表达式,它就能计算并打印结果值。scala的交互式shell就叫做scala。可以在命令提示符里输入scala,执行效果如下:...

柳哥
2014/06/05
907
0
【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank
2018/06/21
0
0
阿里Java架构师打包 FatJar 方法小结

在函数计算(Aliyun FC)中发布一个 Java 函数,往往需要将函数打包成一个 all-in-one 的 zip 包或者 jar 包。Java 中这种打包 all-in-one 的技术常称之为 Fatjar 技术。本文小结一下 Java 里打...

Java互联网架构师
2018/08/29
0
0
一看就懂的Mybatis框架入门笔记

本篇为初学Mybatis框架时的入门笔记,整理发出 Spring集成Mybatis https://blog.csdn.net/yueshutong123/article/details/79337142 SpringBoot集成Mybatis https://blog.csdn.net/yueshuton......

巅峰小学生
2018/05/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
9
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部