当前位置: 首页 > news >正文

类加载对象实例,java具有可移植性原因,泛型和object区别,

类加载&对象实例:https://www.jianshu.com/p/e1e00bbf29dc

虚拟机的类加载机制定义:把描述类的数据从Class文件(一串二进制的字节流)加载到内存,并对数据进行校验、转换解析和初始化,最终形成被虚拟机直接使用的Java类型。

Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。

用户可以通过Java预定义的和自定义类加载器,让一个本地的应用程序可以在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分。

 

java具有可移植性:

java具有可移植性的原因

 

 

(1)确定每种基本类型所占用的存储空间,不随着机器硬件架构的变化而变化。

(2)Java用编译器编译成字节码,字节码用解释器运行,同一字节码在不同的操作系统下被不同的解释器运行,从而实现java的跨平台性。

Java先编译成字节码(中间码),而不是二进制码,由JVM来进行解释运行,JVM将统一的中间码编译成对应操作系统的二进制码,然后执行。不论在什么系统中编译的java,得到的都是统一的字节码,然后各个不同人的操作系统都有对应的JVM(虚拟机)来编译成相应的二进制码。

 

泛型和object区别:

泛型是指将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。

你可以将泛型理解成替换,在使用的时候将泛型参数替换成具体的类型,这个过程是在编译的时候进行的,使用泛型编译器依然能够检测出类型错误

而object表示其他类型是通过类型转换来完成的,而所有类型转化为object类型都是合法的,所以即使你先将object对象赋值为一个整数再赋值为一个字符串,编译器都认为是合法的。

 

 

 



 

相关文章:

  • android studio 输出apk过程,apk中的文件格式(bsh文件,dex文件),JVM、DVM、ART的区别,IOS与安卓的区别,ART和Dalvik
  • LruCache使用,基本数据类型 引用类型,面试==和equals的区别 本质,onCreate 和onResume 区别,
  • Fragment 知识梳理, FragmentPagerAdapter ,RecyclerView 知识梳理,sharepreference,IntentService,service交互
  • kotlin 学习,val和var的区别
  • kotlin ==和===区别,kotlin数组,kotlin 三引号,if-else 调监控子很语句,
  • CMake 进行 NDK 开发之初体验, Error occurred while communicating with CMake server
  • dump java heap,GPU,Lint
  • 处理屏幕旋转导致的重建,单例对象,StringBuilder进行拼接,ProGurad 混淆,VectorDrawable 及 AnimatedVectorDrawable,IntentService
  • SVG,Vector,gradle
  • 蓝牙通讯数据传输,蓝牙UUID,BluetoothAdapter;adb input 模拟系统输入,adb logcat:抓包,抓日志,蓝牙通讯,adb命令实现手机之间互相控制,虚拟按键
  • gradle中的 compileSdkVersion minSdkVersion targetSdkVersion
  • android 解决中文乱码,reload和cnvert区别
  • JetGradlePlugin,transformDexArchiveWithExternalLibsDexMergerForDebug
  • jcenter()和mavenCentral()区别
  • v4 v7包的使用,Android Gradle的理解,版本号对应Gradle发行版本
  • ES6核心特性
  • JavaScript HTML DOM
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript的使用你知道几种?(上)
  • Java程序员幽默爆笑锦集
  • leetcode-27. Remove Element
  • maven工程打包jar以及java jar命令的classpath使用
  • MySQL用户中的%到底包不包括localhost?
  • pdf文件如何在线转换为jpg图片
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 搞机器学习要哪些技能
  • 通信类
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • ![CDATA[ ]] 是什么东东
  • #git 撤消对文件的更改
  • ( 10 )MySQL中的外键
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)SpringCloud 整合Python
  • (6)添加vue-cookie
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (pojstep1.1.2)2654(直叙式模拟)
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (篇九)MySQL常用内置函数
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十三)Maven插件解析运行机制
  • (算法)前K大的和
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)Google Chrome调试JS
  • .“空心村”成因分析及解决对策122344
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @Pointcut 使用
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ C++ ] STL_list 使用及其模拟实现
  • [ IO.File ] FileSystemWatcher
  • [20190416]完善shared latch测试脚本2.txt