Android逆向之Java常用类

Android逆向之Java常用类

包装类

byte ­> Byte

int ­> Integer

short ­> Short

long ­> Long

float ­> Float

double ­> Double

boolean ­> Boolean

char ­> Character

  public static void test0(){        int n =123456;      // 整型转字符串         String num=Integer.toString(n);        System.out.println(num);       // 从字符串中获取字符 ,获取了第0位上的数值。即123456的1.        char ch =num.charAt(0);      // 用字符类,将字符转为整型         int m=Character.digit(ch,10);        System.out.println(m);      // 用整型类,将字符串解析为整型         int m1=Integer.parseInt(num);        System.out.println(m1);?   }

字符串类

String类

toString equals

StringBuffer类与StringBuilder类

equals

public class Main {    public static void test1(){        Scanner scanner=new Scanner(System.in);        String str =scanner.next();        String string="hello";        if (string.equals(str)){            System.out.println("yes");       }else {            System.out.println("NO");?       }   }

append

 StringBuffer buffer = new StringBuffer();        buffer.append(name);// 连接字符串        buffer.append("hello");        buffer.append(" world ");        buffer.append(" good! ");        System.out.println(buffer);        StringBuilder builder = new StringBuilder();        builder.append(name);        builder.append("hello");        builder.append("world");        builder.append(" good! ");        System.out.println(builder);        System.out.println(name.toString());        System.out.println(buffer.toString());        System.out.println(builder.toString());

文件操作类

创建文件

public static File CreateFile(String filePath){    // 创建文件对象    File file = new File(filePath);    // 判断文件是否存在    if( !file.exists()) {        // 创建文件,因为createNewFile函数本身抛出了异常,需要try        try {            file.createNewFile();        } catch (IOException e) {            e.printStackTrace();            return null;        }    }    // 返回文件对象    return file;}

读取文件

public static String ReadFile(File file){    try {        //  1. 创建文件输入流对象        FileInputStream inputStream = new FileInputStream(file);        //  2. 创建字节输出流对象        ByteArrayOutputStream byteArrayOutputStream = newByteArrayOutputStream();        // 3. 创建字节数组        byte bytes[] = new byte[1024];        int nReadLen = 0;        //  4. 使用文件输入流对象读取文件内容        while ( (nReadLen =  inputStream.read(bytes,0,1024))!=‐1){            //  5. 将读取的内容写入到字节对象            byteArrayOutputStream.write(bytes,0,nReadLen);        }        // 以字符串方式返回字节对象        return new String(byteArrayOutputStream.toByteArray());    } catch (Exception e) {        e.printStackTrace();    }    return null;}

写入文件

public static String WriteFile(File file, String content){    try {        //  1. 创建文件输出流对象        FileOutputStream  outputStream = newFileOutputStream(file);        // 2. 创建字节数组        byte bytes[] = content.getBytes();        int nReadLen = 0;        //  3. 使用文件输出流对象写入文件内容        outputStream.write(bytes);    } catch (Exception e) {        e.printStackTrace();    }    return null;}

删除文件

public static String DeleteFile(File file){    if (file.exists()){        // 删除文件        if (file.isFile()){            file.delete();        }        // 删除目录        else if (file.isDirectory()){            // 删除目录下的每一个文件            File[] files = file.listFiles();            for (int i = 0; i < files.length; i++) {                // 递归删除                DeleteFile(files[i]);            }            // 删除目录            file.delete();        }    }    return null;}public static void DeleteDir(String destDir) {    File file = new File(destDir);    DeleteFile(file);}

调用

public static void test2(){        File file =  FileUtils.CreateFile("hello.txt");        FileUtils.WriteFile(file, "hello123456");        String content = FileUtils.ReadFile(file);        System.out.println(content);?        FileUtils.DeleteDir("hello");   }

操作命令行程序

操作cmd

?import java.io.BufferedReader;import java.io.File;import java.io.InputStream;import java.io.InputStreamReader;?public class CmdUtils {?    public static void runCMD(String command){?        try {            String cmd = "cmd.exe /c " +command;            // Runtime.getRuntime().exec            // 1. 执行命令,获取Process对象            Process process = Runtime.getRuntime().exec(cmd);            // 2. 获取cmd输出信息            // 2.1 获取输入流对象            InputStream inputStream = process.getInputStream();            // 2.2 封装流读取对象            InputStreamReader reader = new InputStreamReader(inputStream);            // 2.3 封装缓冲流读取对象            BufferedReader br = new BufferedReader(reader);            // 2.4 循环读取            String string = null;            while ( (string = br.readLine()) != null){                System.out.println(string);           }            br.close();            // 2.5 等待读取完毕            process.waitFor();       } catch (Exception e) {            e.printStackTrace();       }   }?    ?}

带设置目录的操作cmd

public static void runCMD(String command, String dir){        try {            String cmd = "cmd.exe /c " +command;            // 1. 执行命令,获取Process对象            Process process = Runtime.getRuntime().exec(cmd, null, new File(dir));            // 2. 获取cmd输出信息            // 2.1 获取输入流对象            InputStream inputStream = process.getInputStream();            // 2.2 封装流读取对象            InputStreamReader reader = new InputStreamReader(inputStream);            // 2.3 封装缓冲流读取对象            BufferedReader br = new BufferedReader(reader);            String string = null;            // 2.4 循环读取            while ( (string = br.readLine()) != null){                System.out.println(string);           }            br.close();            // 2.5 等待读取完毕            process.waitFor();       } catch (Exception e) {            e.printStackTrace();       }   }

调用方法

public static void main(String[] args) {    // write your code here        // 反编译APK        CmdUtils.runCMD("java -jar apktool.jar d 1.apk");        // 重新打包APK,但是相比之前会少了个签名了的文件。        CmdUtils.runCMD("java -jar apktool.jar b 1 -o 2.apk");        // 用这个以默认身份重新签名。        CmdUtils.runCMD("java -jar signapk.jar testkey.x509.pem testkey.pk8 ../2.apk ../2_signed.apk", "sign");   }

泛型编程

 public static void test4(){?//       ArrayList<String> strings1 = new ArrayList<>();//       接口,实现接口的类,存在类似c++中的多态关系        // c++中模板,在java中称为泛型编程        List<String> strings = new ArrayList<>();        strings.add("hello");        strings.add("hello123");        strings.add("hello123456");        strings.add("hello123456789");?        System.out.println(strings);?        for (int i = 0; i < strings.size(); i++) {            System.out.println(strings.get(i));       }?   }

文件格式

dom4j­XML解析库

地址:https://dom4j.github.io/

导入dom4j库

① 在项目中新建一个目录libs ② 将xml库文件复制到libs目录 ③ 在idea中导入xml库

菜单左上角file-project structure

XmlUtils

import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;?import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import java.util.List;?public class XmlUtils {    // 获取Document对象,一个xml文件就是一个文档对象    public static Document getDocument(String xml) {        try {            SAXReader saxReader = new SAXReader();            InputStream inputStream = new FileInputStream(xml);            Document doc = saxReader.read(inputStream);            return doc;       } catch (DocumentException e) {            e.printStackTrace();       } catch (FileNotFoundException e) {            e.printStackTrace();       }        return null;   }?    // 获取元素    public static Element getElement(Document doc, String name) {        // 获取根节点        Element root = doc.getRootElement();        // 返回子节点的元素列表        List<Element> child = root.elements();        for (int i = 0; i < child.size(); i++) {            Element element = child.get(i);            //System.out.println("元素:" + element.getName());            if (element.getName().equals(name))           {                return element;           }       }        return null;   }    // 获取属性    public static Attribute getAttr(Element app, String name) {        List<Attribute> atts = app.attributes();        for (Attribute att: atts) {            //System.out.println("属性:" + att.getName());            if (att.getName().equals(name)){                return att;           }       }        return null;   }}?

调用,记得根目录得有xml.xml文件

public static void test2()   {        Document doc = XmlUtils.getDocument("xml.xml");        Element element = XmlUtils.getElement(doc,"标签4");        System.out.println(element.getName());        Attribute attribute = XmlUtils.getAttr(element,"属性2");        System.out.println(attribute.getName() + " : "+attribute.getValue());??   }

线程类

// 创建线程,指定回调函数        Thread thread = new Thread(){            @Override            public void run() {                super.run();                System.out.println("thread 1");            }        };        // 启动线程        thread.start();        // 方法2        // 创建 匿名对象        Runnable runnable = new Runnable() {            @Override            public void run() {                System.out.println("thread 2");            }        };        // 创建线程,指定回调        Thread thread1 = new Thread(runnable);        // 启动线程        thread1.start();        // 简写        new Thread(){            @Override            public void run() {                super.run();                System.out.println("thread 3");            }        }.start();

网络编程

public static void test3(){        String urlpath = "http://www.baidu.com";        try {            // 1. 创建一个URL对象            URL url = new URL(urlpath);            // 2. 创建一个连接            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();            httpURLConnection.setConnectTimeout(5000);            // 3. 获取返回数据            // 3.1 获取返回码            int ret = httpURLConnection.getResponseCode();            if(ret == 200){// 200 ok                InputStream inputStream = httpURLConnection.getInputStream();                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();?                byte bytes[] = new byte[1024];                int nReadLen = -1;                while (true){                    // 从输入流中读取数据,写入到字节数组中,写入到的数组偏移是0,最大1024                    nReadLen = inputStream.read(bytes,0,1024);                    if(nReadLen == -1) break;                    byteArrayOutputStream.write(bytes,0,nReadLen);               }                byte bytes1[] = byteArrayOutputStream.toByteArray();                String s = new String(bytes1);?                System.out.println(s);?           }?       } catch (MalformedURLException e) {            e.printStackTrace();       } catch (IOException e) {            e.printStackTrace();       }   }

原文地址:https://www.cnblogs.com/ltyandy/p/11557829.html

时间: 2024-10-18 21:12:49

Android逆向之Java常用类的相关文章

Java基础 —— Java常用类

Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@"+哈希码(一般用于覆盖). equals()方法:返回"=="操作的布尔值(一般用于覆盖). finalize()方法:用于对象的销毁(不受人为控制,由JVM调用,遵从垃圾回收机制). clone()方法:用于对象之间的拷贝(深拷贝). getClass()方法:返回对象的字节码文件对

一大波Java来袭(三)Java常用类

本文简单介绍集中Java常用类 不同种类的工具用于处理不同的工作.比如:厨房中的工具用于烹饪:农场中的工具用于养殖--对于Java的学习中处理不同的工作也要采用不同的工具.如:处理数学函数问题用Math类.针对文件的操作采用File类--这也充分体现了Java面向对象的特点 一.字符串类(重点理解内存模型) (一)String Java.lang.String字符串常量,具有不可变性. (二)StringBuffer Java.lang.StringBuffer字符串可变量,是线程安全的. (三

JAVA 常用类System以及Properties类的使用

package ioTest.io1; import java.util.Iterator; import java.util.Properties; import java.util.Set; /* * System: * API描述:public final class System extends Object * System 类包含一些有用的类字段和方法.它不能被实例化. * 在 System 类提供的设施中,有标准输入.标准输出和错误输出流:对外部定义的属性和环境变量的访问: * 加

java常用类之String类

public class StringTest{ /* * 1.字符串类: String . * 1) 什么是字符串? * 用一对双引号将一个或多个字符括起来组成的字符系列.例如: "A" "ABC" * 特殊的串: 一对连续的双引号.即: "" ,它称之为空串.也称之为长度为0的字符串. * * 2) 字符串的特性: * a) 字符串属于引用类型,一个字符串就是一个对象. * b) 字符串是不变的. * c) 字符串中每一个字符都有一个索引号(

MyEclipse中hibernate通过数据库逆向生成java实体类

1.点击window->show view->DB Browser,然后出现如下窗口 右键空白处选择New,弹出如下窗口: 先点击Add JARs按钮,选择相应数据库的JDBC driver(因为我用的是MySQL,所以选择的是之前已经下好的JDBC driver),添加完JDBC driver后.然后选择Driver template,Driver name(任意填写),Connection URL.数据库用户名.数据库登录密码,然后点击点击Test Driver(测试一下数据库是否连接成功

java常用类之封装类

public class BaseTypeClassTest { /*  *   常用类  *   1.基本类型的封装类:  在Java语言中,八种基本类型均对应着一个封装类.  *   *    byte ====>>>  Byte  *    short ===>>>  Short  *    int =====>>>  Integer  *    long ====>>>  Long  *   *    float ===>

Java——常用类(String)

[常用类] <1>字符串相关类(String.StringBuffer) <2>基本数据类型包装类 <3>Math类 <4>File类 <5>枚举类 [String类] <1>java.lang.String类代表不可变的字符序列. <2>String类的常见构造方法: String(String original) //创建一个String对象为original的拷贝 String(char[] value) //用一个

Java常用类集接口以及实现方式总结

最近学习map-reduce原理以及map-reduce编程,于是顺带着学习下Java编程,对于Java常用的数据结构和类集,我总结到mind图中,便于理清相互之间的关系 package leiji; import java.util.ArrayList; import java.util.List; import java.util.Collection; public class ArryList { public static void main(String args[]){ List

java常用类-String

Java String 类 字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 创建字符串 创建字符串最简单的方式如下: 1 String greeting = "小猛"; 在代码中遇到字符串常量时,这里的值是 "小猛"",编译器会使用该值创建一个 String 对象. 和其它对象一样,可以使用关键字和构造方法来创建 String 对象. String 类有 11 种构造方法,这些方法