一.前言
本来说今天讲两个简单案例的,介绍一下jadx怎么用,但是呢,还是先做基础,那就先讲讲java基础吧,java是app逆向必备的,但是并不需要像开发学的特别精,只需要能够读懂java代码就好,那么接下来的三天,我都和大家介绍一下java基础。
二.JAVA环境搭建
2.1 java介绍
1.java是一门编译形语言,区分与python
常见语言类型
python,js,php:解释型语言
开发,运行:都需要python解释器,天然跨平台,没有编译的过程
如果要把代码给别人--》别人可以看到我们的源代码
java:编译型语言
开发需要jdk环境,java源代码--》需要编译--》字节码文件--》字节码文件运行在java虚拟机之上
跨平台--》java的字节码文件运行在 虚拟机之上--》不同平台安装不同平台的虚拟机,java字节码可以顺利运行
java运行是字节码文件,不是原代码--》不会泄露掉真正的java代码
【字节码文件可以反编译--》逆向】
c/c++/go:编译型语言
需要编译--》区别于java--》直接编译成 可执行文件(win:exe,mac,Linux:这个平台可执行文件)
如果在win平台上编译后的可执行文件,无法运行在 mac,linux上的
只能在不同平台编译---》运行在不同平台
好处:一旦编译过后,就是可执行文件,不需要额外安装其他的东西
坏处:不跨平台,需要在不同平台编译
2.java的体系
-Java se:java基础--》变量,方法,面向对象,包,文件操作,并发,网络
-学会它--》做java开发--》安卓开发
-必学
-java ee:java web方向,jsp,请求与响应--》java工作基本上都是这个方向
java工程师---》本质大部分都是java EE工程师
ssh,ssm,SpringBoot,SpringCloud:spring公司的框架,方便做java ee
-java me:java手机方向开发--》不是安卓--》山寨机--》应用--》打开--》java小图标--》那些软件是用java me写的--》没有这个方向了
#4 jdk jre jvm
-jdk:Java Development Kit:java集成开发工具包--》java开发者必须下载安装这个软件,装在不同平台--》包含 jre,和内置的jar包
-jre:Java Runtime Environment 即Java运行环境--》java程序要运行,必须安装这个软件,装在不同平台上
好多人运行java软件,直接装了jdk
-jvm:java虚拟机,java的字节码文件必须运行在java虚拟机之上
-正是因为jvm的跨平台,可以装在不同操作系统上,java程序是跨平台的
-jadx 反编译工具--》只需要装jre即可--》他就可以运行,直接装了jdk
因为jdk包含jre
-安卓手机:虚拟机不是jvm,谷歌公司自己开发的虚拟机
java工程师都是安装jdk,jdk这里版本我们选择1.8,也就是java8,绝大部分公司都是用的1.8,而我们前面安装jadx反编译出来的代码也都是1.8,那我们接下来就安装jdk
2.2 安装jdk--配置环境变量
1.安装:这里给出网址
Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/?er=221886#java8-windows 下载好直接安装,然后更换下载路径一直下一步就好。
2.配置环境变量 --》正常可以用--》但是作为专业的java开发--》咱们需要配一下
2.1 新建 JAVA_HOME D:\DownLoad\JDK\jdk1.8 # java的安装目录
-以后JAVA_HOME 就代指后面的路径
2.2 新建一个 CLASSPATH
CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
2.3 path中加入--》可执行文件,在任意路径下执行都会有反应
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
这样我们就把java环境配置好了
三.JAVA语法快速入门
编译器我们选择idea
3.1 程序入口
// java程序入口为类中的static的viod的main函数,参数固定为字符串数组
public static void main(String[] args) {
//代码,程序从这里开始执行的
}
3.2 文件名
1 文件中【HellWorld.java】,只能有一个public类,并且 文件名 必须和 类名 一致
2 文件中可以有多个类,但是只能有一个public类,并且public类的名字需要和文件名一致
3 如果文件中,有多个类,并且不用public修饰,文件名可以是任意类型
3.3 类规范
public static void main(String[] args){
}1 类名规范
类名首字母必须大写,使用驼峰命名(Python也是)
Hello UserInfo PersonApplication
2 类前有修饰符
-public
-不写(default)
3 类中成员(变量,方法),修饰符
public、private、protected、default(不写)
-public:公有的,所有其他类中都可以使用
-private:私有的,只有在当前类中可以使用
-protected:受保护的,只有在当前包下的类中可以使用
-default(不写):默认
4 static 静态成员方法
无需类实例化,直接可以调用--》等同于python的类方法,使用classmethod修饰的
5 void 没有返回值
四.基本语法
4.1 变量与常量
变量前面不加任何修饰词,常量前面用final修饰,常量不允许修改,修改就会报错。
tip:总结一句话,变量是名字,常量是爱好,蔡徐坤可以改名,但是他的爱好永远都是篮球
4.2 输入和输出
1.输入
这就是三个输入的区别,%s可以看成是字符串的站位符
2.输出
4.3 条件语句
也就是 if -----else if ----- else,这里的代码稍微有点营养,有的大学生作业就是这个,我就给出代码吧
import java.util.Scanner;
public class main {
public static void main(String[] args) {
//接受用户输出
System.out.print("请输入你家哥哥期末得分:");
Scanner input=new Scanner(System.in);
int score=Integer.valueOf(input.nextLine()); //输入得到的是字符串类型的,这里需要强转成int类型
if(score>90&&score<=100){
System.out.println("成绩优秀");
} else if (score>=70&&score<90) {
System.out.println("成绩良好");
} else if (score>=60&&score<70) {
System.out.println("成绩及格");
}else {
System.out.println("成绩不及格");
}
}
}
4.4 循环语句
1.while循环
2.do while循环
和while循环的区别是他先执行一次
3.for循环(后期使用最多的)
五.数据类型
字节类型 byte
整数类型
byte 带符号字节型 8位 -128 ~ 127
short 带符号字节型 16位 -32768 ~ 32767
int 带符号字节型 32位 -231 -2147483648 ~ 2147483647
long 带符号字节型 64位 -263 -9223372036854775808 ~ 9223372036854775807
小数类型:浮点型
float
double
字符串类型
char
字符串类型
String
数组类型
int[]
String[]
布尔类型
boolean
5.1 字节类型
可以发现字节类型是单引号 并且结果是他对应的ascll码
5.2 整数类型
5.3 小数类型
5.4 字符类型
发现字符也是单引号
5.5 字符串类型
5.6 数组类型
数组类型是十分重要的,可以发现
定义数组得加个[],
大致就是两种
1.类型 [] 名字= new 类型[长度]
名字[0]=第一个;
名字[2]=第一个;
........
2.类型 [] 名字 = new 类型[]{第一个,第二个};
打印出是一个地址,要想看她的样子就得 Array.toString(i)
5.7 布尔类型
bool类型的只有false和true
六.总结
本章教了java基础,特别简单,了解就好,主要是为了看得懂代码就好,不需要纠结。
七.下期预告
下期还是和你们说java基础,会说字符串,容器之类的。
补充
如有需要学习资料和不懂得主页私信我,有求必应