浅析java class 文件

class 文件是什么

1)、是对一个java类或一个java接口的全面描述;
2)、是对java程序二进制文件格式的精确定义;
3)、一个class文件中只能包含一个类或接口;
4)、作为程序传给jvm的中间语言;
5)、class文件不一定和java语言相关;

class 文件内容
class文件包含了jvm所需知道的,关于类或接口的所有信息。

基本类型
ClassFile
常量池
特殊字符串
字段
方法
属性

(0)

相关推荐

  • 实例分析Java Class的文件结构

    学习Java的朋友应该都知道Java从刚开始的时候就打着平台无关性的旗号,说"一次编写,到处运行",其实说到无关性,Java平台还有另外一个无关 性那就是语言无关性,要实现语言无关性,那么Java体系中的class的文件结构或者说是字节码就显得相当重要了,其实Java从刚开始的时候就有两套 规范,一个是Java语言规范,另外一个是Java虚拟机规范,Java语言规范只是规定了Java语言相关的约束以及规则,而虚拟机规范则才是真正从跨 平台的角度去设计的.今天我们就以一个实际的例子来看看

  • 运行java的class文件方法详解

    一.运行class文件 执行带main方法的class文件,命令行为: java <CLASS文件名> 注意:CLASS文件名不要带文件后缀.class 例如: 复制代码 代码如下: java Test 如果执行的class文件是带包的,即在类文件中使用了:package <包名> 那应该在包的基路径下执行,命令行为: java <包名>.CLASS文件名 例如:PackageTest.java中,其包名为:com.ee2ee.test,对应的语句为: package

  • 学习Java中Class类及其用法

    Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI.这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类.Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建. 简单总结如下: Class类也是类的一种,只是名字和class关键字高度相似.Java是大小写敏感的语言. Class类的对象内容是你创建的类的类型信息,比如你创建一个shapes类,那么,J

  • java实现静默加载Class示例代码

    前言 本文主要介绍了关于java静默加载Class的相关内容,之所以有这篇文章,是因为有时候在开发的时候,我们有这样的场景,我们只想得到一个Class的基本信息,但是并不想触发相关的静态代码块,在之前的一篇<JAVA扫描包>文章中就用到了这种方式,我将其称之为静默加载,如果有专业的叫法,欢迎指正. 一般情况下,我们加载一个Class的时候会使用Class.forName(String name)方法,该方法会返回一个Class对象,同时会触发该类中的静态代码块,举个例子: 我们先来编写一个只包

  • 深入解析Java中的Class Loader类加载器

    类加载的过程 类加载器的主要工作就是把类文件加载到JVM中.如下图所示,其过程分为三步: 1.加载:定位要加载的类文件,并将其字节流装载到JVM中: 2.链接:给要加载的类分配最基本的内存结构保存其信息,比如属性,方法以及引用的类.在该阶段,该类还处于不可用状态: (1)验证:对加载的字节流进行验证,比如格式上的,安全方面的: (2)内存分配:为该类准备内存空间来表示其属性,方法以及引用的类: (3)解析:加载该类所引用的其它类,比如父类,实现的接口等. 3.初始化:对类变量进行赋值. 类加载器

  • Java基础类Class使用指南

    大家都知道Java是一门面向对象编程语言,在Java世界里,万事万物皆对象,那个Java中怎么表示对象呢?Class 我们知道Java中的对象都是Object类的子类,那么今天我们就一起来研究一下Java中的Class的使用. 问一下小问题:类是对象吗?类是谁的对象?答案是:类是对象,是java.lang.Class类的实力对象. package com.edu.hpu; public class Test { public static void main(String[] args) { /

  • 浅析java class 文件

    class 文件是什么 1).是对一个java类或一个java接口的全面描述:2).是对java程序二进制文件格式的精确定义:3).一个class文件中只能包含一个类或接口:4).作为程序传给jvm的中间语言:5).class文件不一定和java语言相关: class 文件内容class文件包含了jvm所需知道的,关于类或接口的所有信息. 基本类型ClassFile常量池特殊字符串字段方法属性

  • 浅析java创建文件和目录

    一,创建文件和目录的关键技术点如下: 1.File类的createNewFile根据抽象路径创建一个新的空文件,当抽象路径制定的文件存在时,创建失败 2.File类的mkdir方法根据抽象路径创建目录 3.File类的mkdirs方法根据抽象路径创建目录,包括创建不存在的父目录 4.File类的createTempFile方法创建临时文件,可以制定临时文件的文件名前缀.后缀及文件所在的目录,如果不指定              目录,则存放在系统的临时文件夹下. 5.除 mkdirs方法外,以上

  • 浅析Java内存模型与垃圾回收

    1.Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 程序计数器:一块较小内存区域,指向当前所执行的字节码.如果线程正在执行一个Java方法,这个计数器记录正在执行的虚拟机字节码指令的地址,如果执行的是Native方法,这个计算器值为空. Java虚拟机栈:线程私有的,其生命周期和线程一致,每个方法执行时都会创建一个栈帧用于存储局部变量表.操作数栈.动态链接.方法出口等信息. 本地方法栈:与虚拟机栈功能类似,只不过虚拟机栈为虚拟机执行J

  • 深入浅析java web log4j 配置及在web项目中配置Log4j的技巧

    在上篇文章给大家介绍了Java log4j详细教程,本文给大家介绍java web log4j配置及web项目中配置log4j的技巧.具体详情请看下文吧. 首先给大家提供log4j.jar下载:http://logging.apache.org/log4j/1.2/download.html 一.java web项目使用log4j 1.在web.xml文件中添加 <!-- 配置log4j --> <context-param> <param-name>webAppRoo

  • 浅析Java Scanner 类的用法

    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. 下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); 接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据: 使用 next 方法: import ja

  • 浅析java中String类型中“==”与“equal”的区别

    一.前言 1.1.首先很多人都知道,String中用"=="比较的是地址,用equals比较的是内容,很多人对此用的是记忆法,通过记忆来加强此的引用,但是其真正的原理其实并不难,当我们真正明白其为什么的时候,用起来也会更加灵活,更加有底气(形容得不太好,朋友别见怪): 二相关知识的准备 类型常量池 运行时常量池 字符串常量池 我们今天讨论的主题是当然是字符串常量池: 为什么在这要把另外两个常量池拿出说一下呢,首先小生我在网上或者cnds上看到很多人在争论字符串常量池是存在与方法区还是堆

  • 浅析 Java多线程

    什么是进程 当一个程序进入内存中运行起来它就变为一个进程.因此,进程就是一个处于运行状态的程序.同时进程具有独立功能,进程是操作系统进行资源分配和调度的独立单位. 什么是线程 线程是进程的组成部分.通常情况下,一个进程可拥有多个线程,而一个线程只能拥有一个父进程. 线程可以拥有自己的堆栈.自己的程序计数器及自己的局部变量,但是线程不能拥有系统资源,它与其父进程的其他线程共享进程中的全部资源,这其中包括进程的代码段.数据段.堆空间以及一些进程级的资源(例如,打开的文件等). 线程是进程的执行单元,

  • 浅析Java中为什么要设计包装类

    目录 一.为什么需要包装类 二.装箱与拆箱 三.不简单的 Integer.valueOf 四.Object 类可以接收所有数据类型 五.包装类在集合中的广泛使用 六.数据类型转换 一.为什么需要包装类 在 Java 中,万物皆对象,所有的操作都要求用对象的形式进行描述.但是 Java 中除了对象(引用类型)还有八大基本类型,它们不是对象.那么,为了把基本类型转换成对象,最简单的做法就是将基本类型作为一个类的属性保存起来,也就是把基本数据类型包装一下,这也就是包装类的由来. 这样,我们先自己实现一

  • 浅析Java getResource详细介绍

    在 Java 中访问资源我们一般使用 getResource() 方法,亦或者直接new File()然后传入一个文件路径获取资源文件.但是这两者究竟有什么区别呢?由于平常在使用的时候经常会傻傻分不清楚,因此这里写篇博客整理下我的笔记. Java 运行中资源的说明 这里我们将运行中 Java 进程可以获取到的资源简单分为两类: 存在于文件系统中的资源 这类资源一般直接存在与磁盘中,我们可以直接从资源管理器中访问到.当我们通过应用访问这类资源时既可以使用 File对象通过文件系统获取到,也可以使用

  • 浅析Java NIO 直接缓冲区和非直接缓冲区

    定义 以上是书<深入理解java虚拟机>对直接内存的描述.直接缓冲区用的就是直接内存. java nio字节缓冲区要么是直接的,要么是非直接的.如果为直接字节缓冲区,则java虚拟机会尽最大努力直接在此缓冲区上执行本机的IO操作,也就是说,在每次调用基础操作系统的一个本机IO操作前后,虚拟机都会尽量避免将内核缓冲区内容复制到用户进程缓冲区中,或者反过来,尽量避免从用户进程缓冲区复制到内核缓冲区中. 直接缓冲区可以通过调用该缓冲区类的allocateDirect(int capacity) 方法

随机推荐