APP逆向 day6 JAVA基础1

一.前言

本来说今天讲两个简单案例的,介绍一下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基础,会说字符串,容器之类的。

补充

如有需要学习资料和不懂得主页私信我,有求必应

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值