首页 > 编程语言 >Java-javap简单演示

Java-javap简单演示

时间:2023-05-17 10:33:09浏览次数:45  
标签:short 演示 字节 java int s1 javap Java

 

下面是2小段Java代码:

short s1 = 1; s1 = s1 + 1;有什么错?

short s1 = 1; s1 +=1;有什么错? 

 

java里面这种类型不同的相加会报错吧?

1是int。

有拆箱和装箱,也有一定包含,不都是错的。

short是2个字节,int是4个字节,long是8个字节,所以short类型用int接受问题不大,int类型用long接受也可。

python里面这种都可以直接加,不管你这些。string加 int都不会报错

虽然java是强类型语言,但是偶尔还是能转

这个前面会报错,后一句不会报错

要理解这个,看.java文件没有用,要看字节码,或者用javap转成一条条指令来看

.java文件只是给人看,最终jvm编译后的.class字节码文件具有最终解释权

 

别人给的强行解释:


1) 对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换错误。

2) 对于short s1=1;s1+=1来说 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

 

稍等,我操作一下javap  几分钟  我看下jvm怎么做的

 

 

 

 

 

i代表int

const代表常量池   const_1代表常量池第1个

store代表存储到局部变量,是cpu计算后存入到内存的操作
load是反过来,从内存加载进入到cpu的意思,意思是从局部变量取一个出来,iload_1=取 第1个 int类型的变量

关键是第五步  有一个 i2s   意思应该是   int  to  short

 

 

 前面这个无法编译、在编译阶段就会检查出来类型转换异常,属于静态检查异常,无法演示javap

 

 

 

python和php需要编译么?

 

标签:short,演示,字节,java,int,s1,javap,Java
From: https://www.cnblogs.com/whoknows1/p/17407773.html

相关文章

  • JAVA面试题及解析
    Java中有哪些集合Java中的集合可以分为4类,使用4个接口代表,分别是ListSetQueueMap。其中ListSetQueue都继承自Collection。List:是有序可重复集合,元素可为空,常用的有ArrayListLinkedListSet:无序不可重复集合元素可为空,常用的有HashSetTreeSetQueue:先进先出的队列,常......
  • java8 lamda表达式
    list分组1.多字段联合,分组list.stream().collect(Collectors.groupingBy(o->o.getSkuName()+"_"+o.getOeCode(),Collectors.toList()));2.求和计算 Integernum=list.stream().mapToInt(n->n.getNum()).sum();3.分组-排序list.stream().coll......
  • Java基础整理
    环境配置在IDEA创建空项目后,new一个module!标准配置:jdk1.8+language8注释//单行注释/**/多行注释文档注释JavaDoc/***@author*@description*/设置注释的字体和样式,在IDEA中按以下步骤settings->Editor->colorscheme->java->comment强(弱)类型语言强类......
  • java 连接 sqlserver 报错
    使用最新的sqlserver驱动报错:com.zaxxer.hikari.pool.HikariPool$PoolInitializationException:Failedtoinitializepool:"encrypt"propertyissetto"true"and"trustServerCertificate"propertyissetto"false"butthedri......
  • Java进程(基础)
    基本概念1、进程:程序的执行过程2、线程:一个进程可以有单个线程也就是我们说的单线程,还可以有多个线程也就是我们说的多线程,线程1、当一个类继承了Thread类就可以当成一个线程用2、我们会重写run方法写上我们自己的业务逻辑3、runThread类实现了RUnnable接口,静态代理模式......
  • Java-Day-22( 线程一:相关概念 + 继承 Thread 类 + 实现 Runnable 接口 + JConsole 监控
    Java-Day-22线程相关概念程序:是为完成特定任务、用某种语言编写的一组指令的集合(就是平常所写代码)进程:运行中的程序,例如,打开一个软件就启动一个进程,操作系统就会给每个启动的软件分配一新的内存(活动进程占用的物理内存)空间进程是程序的一次执行过程,或是正在运......
  • SSM整合报错:errorCode 1045, state 28000 java.sql.SQLException: Access denied for
    SSM整合报错:errorCode1045,state28000java.sql.SQLException:Accessdeniedforuser简述SSM整合项目配置好环境后,当要对数据库进行操作,加载jdbc.properties数据库配置文件时,出现下面的报错createconnectionSQLException,url:jdbc:mysql://localhost:3306/furn_ssm,......
  • Javaweb
    资源无法导出问题<!--在build中配置resources,来防止我们资源导出失败问题--><build>  <resources>    <resource>      <directory>src/main/resources</directory>      <includes>        <include>**/*.properties<......
  • Java设计模式-装饰模式
    简介装饰模式在Java领域是一种常见的设计模式,它能够在不改变对象原有结构的情况下,动态地为对象添加新的功能。它通过封装原有对象,在运行时动态地为对象添加新的行为或者修改原有行为,以扩展对象的功能。这种方式避免了继承的静态特性,让对象的行为可以根据需要进行动态变化。在装......
  • linux 下运行一个java程序
     在linux下,测试一个小程序如果用到自己lib,则在程序目录下建一个lib目录,把相应的jar放进去。test是package名称java-classpath.:lib/*test.TestPing    在linux的后台运行#nohupjava-classpath.:lib/*hkrecdis&#exit......