最近学java,只能先把写的程序保存后才能编译,不像视频里面的一边写一边就可编译,为啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最近学java,只能先把写的程序保存后才能编译,不像视频里面的一边写一边就可编译,为啥?相关的知识,希望对你有一定的参考价值。
视频里面的老师写一个程序,窗口没关,就可以编译。然后再把程序一改又可以编译。而我呢,只有保存后才能编译,想第二次改动,又得要保存,才能编译
本来就不用关闭窗口,只要保存代码就行。保存的快捷键是“ctrl+s”如果用的是IntelliJ IDEA,写代码的时候是自动保存的,不用按保存键了。 参考技术A 他用的Linux/Mac的系统吧。不管怎么样,人家写完顺手就按Ctrl-S保存了,然后编译。
有的安卓程序反编译后是samli文件,这是程序员直接用smali语言写的,还是是用java写的?
有的安卓程序反编译后是samli文件,这是程序员直接用smali语言写的,还是是用java写的?为了防止反编译而把Java翻译成smali的?
您好,1、原始类型:
v void 只能用于返回值类型
Z boolean
B byte
S short
C char
I int
J long(64位)
F float
D double(64位)
对象类型:
Lpackage/name/ObjectName相当于java中的package.name.ObjectName解释如下:
L:表示这是一个对象类型
package/name:该对象所在的包
;:表示对象名称的结束
数组的表示形式:
[I :表示一个整形的一维数组,相当于java的int[];
对于多维数组,只要增加[ 就行了,[[I = int[][];注:每一维最多255个;
对象数组的表示形式:
[Ljava/lang/String 表示一个String的对象数组;
方法的表示形式:
Lpackage/name/ObjectName;——>methodName(III)Z 详解如下:
Lpackage/name/ObjectName 表示类型
methodName 表示方法名
字段的表示形式:
Lpackage/name/ObjectName;——>FieldName:Ljava/lang/String;
即表示: 包名,字段名和各字段类型
方法的传参:
当一个方法被调用的时候,方法的参数被置于最后N个寄存器中;
例如,一个方法有2个参数,5个寄存器(v0~v4)
那么,参数将置于最后2个寄存器(v3和v4)
非静态方法中的第一个参数总是调用该方法的对象;
说明:对于静态方法除了没有隐含的this参数外,其他都一样
寄存器的命名方式:
V命名
P命名 第一个寄存器就是方法中的第一个参数寄存器
比较:使用P命名是为了防止以后如果在方法中增加寄存器,需要对参数寄存器重新进行编号的缺点:
特别说明一下:Long和Double类型是64位的,需要2个寄存器
例如:对于非静态方法
LMyObject——>myMethod(IJZ)V;
有4个参数:LMyObject,int,long,bool; 需要5个寄存器来存储参数;
P0 this
P1 I (int)
P2,P3 J (long)
P4 Z(bool)追问
什么意思啊?没看懂,能直面回答我的问题吗?
参考技术A 用android代码(基于java)写的。smali类似机器语言。反编译出来的是机器语言以上是关于最近学java,只能先把写的程序保存后才能编译,不像视频里面的一边写一边就可编译,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
有的安卓程序反编译后是samli文件,这是程序员直接用smali语言写的,还是是用java写的?
keil for c51 keil for arm 怎么才能同时使用