基于Java class对象说明、Java 静态变量声明和赋值说明(详解)
发布时间 - 2026-01-11 01:38:17 点击率:次先看下JDK中的说明:
java.lang.Object
java.lang.Class<T>
Instances of the class Class represent classes and interfaces in a running Java application. An enum is a kind of class and an annotation is a kind of interface. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.
Class has no public constructor. Instead Class objects are constructed automatically by the Java Virtual Machine as classes are loaded and by calls to the defineClass method in the class loader.
The following example uses a Class object to print the class name of an object:
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
It is also possible to get the Class object for a named type (or for void) using a class literal.
System.out.println("The name of class Foo is: "+Foo.class.getName());
在一个运行着的JAVA应用中,类的任何实例都可以用Class对象来指代,Class可以指代所有的类和接口。枚举属于类,注解属于接口,均可以用Class指代。每个数组均属于反射的Class对象,数组中的每个元素和维度也同样拥有Class对象。Java基本类型(boolean, byte, char, short, int, long, float, and double)以及关键字void也都可以用Class指代。
Class类不存在构造函数,当类被加载过程中由JVM通过调用类加载器中的defineClass方法自动构造。
下面的例子是将一个对象通过Class对象打印出类名。
void printClassName(Object obj) {
System.out.println("The class of " + obj +
" is " + obj.getClass().getName());
}
通过class关键字指定类型也是可以得到Class对象的
System.out.println("The name of class Foo is: "+Foo.class.getName());
上面内容总结下,就是Java中所有的对象以及基本类型都是可以用Class指代的。接下来看一个Demo。
/**
*
* 旨在测试Class对象和Instance之间的关系;
* 旨在测试静态变量的声明和赋值过程;
* @author zzy
*
*/
public class ObjClass {
private enum tmpEnum {A, B, C};
public static void main(String[] args){
int[] tmpArray = {1,2,3};
Class classType;
try {
// 通过类名直接获取Class对象,JVM中没有加载。
classType = InClass.class;
System.out.println(".class: " + classType);
System.out.println(".class finish.");
// Java加载类
classType = Class.forName("InClass");
System.out.println("Class.forName: " + classType);
System.out.println("Class.forName: finish.");
// 创建实例
InClass newClassType = new InClass();
classType = newClassType.getClass();
System.out.println("new Object.getClass: " + classType);
System.out.println("new Object.getClass: finish.");
// 数组对象
classType = tmpArray.getClass();
System.out.println("Array.getClass:" + classType.getSimpleName());
System.out.println("Array.getClass: finish.");
// 枚举对象
classType = tmpEnum.class;
System.out.println("enum.class:" + classType);
System.out.println("enum.class: finish.");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class InClass{
// 对静态变量声明之前赋值
{
staticPara = 10;
}
public static int staticPara;
// 构造函数
public InClass(){
System.out.println("construction...");
}
// 静态代码块
static {
System.out.println("static function...");
}
// 静态变量赋值
{
staticPara = 20;
}
{
System.out.println("normal function, staticPara:" + staticPara);
}
// 静态变量赋值
{
staticPara = 30;
}
}
输出结果:
.class: class InClass .class finish. static function... Class.forName: class InClass Class.forName: finish. normal function, staticPara:20 construction... new Object.getClass: class InClass new Object.getClass: finish. Array.getClass:int[] Array.getClass: finish. enum.class:class ObjClass$tmpEnum enum.class: finish.
说明:
1. .class方式获取类文件的Class对象,并不需要加载JVM中。
2. Class.forName的方式JVM会加载类,同时会编译。 如此,类中的静态代码块就会被执行。
3. 创建实例过程中(已经加载至JVM中,也就是说编译过了),调用构造函数,并执行非静态代码块。
4. 静态代码对于变量的声明和赋值顺序是没有影响的(编译过程处理),所以结果是20。
5. 数据对象和枚举对象也是可以被Class对象指定的。
以上这篇基于Java class对象说明、Java 静态变量声明和赋值说明(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# java
# 静态变量赋值
# Java中通过Class类获取Class对象的方法详解
# Java反射(Class类
# Class对象获取)
# Java反射获取class对象方式解析
# 简单了解JAVA中类、实例与Class对象
# Java获取Class对象的几种方式小结
# Java中获取Class对象的三种方式详解
# 关于java的九个预定义Class对象
# Java中获取Class对象的3种方式代码示例
# 加载
# 可以用
# 给大家
# 过程中
# 都是
# 就会
# 过了
# 希望能
# 也都
# 不存在
# 均可
# 这篇
# 均属
# 可以得到
# 小编
# 先看
# 大家多多
# 类中
# 组中
# 同时会
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
EditPlus 正则表达式 实战(3)
Laravel distinct去重查询_Laravel Eloquent去重方法
HTML 中动态设置元素 name 属性的正确语法详解
如何在阿里云虚拟主机上快速搭建个人网站?
香港服务器租用每月最低只需15元?
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
大连 网站制作,大连天途有线官网?
油猴 教程,油猴搜脚本为什么会网页无法显示?
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
零服务器AI建站解决方案:快速部署与云端平台低成本实践
三星、SK海力士获美批准:可向中国出口芯片制造设备
如何做网站制作流程,*游戏网站怎么搭建?
Laravel怎么判断请求类型_Laravel Request isMethod用法
进行网站优化必须要坚持的四大原则
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
教学论文网站制作软件有哪些,写论文用什么软件
?
iOS发送验证码倒计时应用
网站页面设计需要考虑到这些问题
Laravel如何配置任务调度?(Cron Job示例)
Python文件流缓冲机制_IO性能解析【教程】
Python文本处理实践_日志清洗解析【指导】
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
JavaScript中的标签模板是什么_它如何扩展字符串功能
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
javascript中对象的定义、使用以及对象和原型链操作小结
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
香港服务器租用费用高吗?如何避免常见误区?
如何快速搭建高效服务器建站系统?
详解jQuery中的事件
Laravel怎么清理缓存_Laravel optimize clear命令详解
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
🚀拖拽式CMS建站能否实现高效与个性化并存?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何基于PHP生成高效IDC网络公司建站源码?
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
香港服务器如何优化才能显著提升网站加载速度?
如何自定义建站之星模板颜色并下载新样式?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
JavaScript模板引擎Template.js使用详解
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel如何自定义分页视图?(Pagination示例)
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
上一篇:《抖看小剧场》退款流程详解
上一篇:《抖看小剧场》退款流程详解

