从零开始学习安卓逆向(四)

java的循环结构
  • while循环
public class Hello{
	public static void main(String[] args){
		int a = 1;
		while (a<10){
			System.out.println(a);
			a++;
		};
	}

}

运行结果:
1
2
3
4
5
6
7
8
9

  • for循环
public class Hello{
	public static void main(String[] args){ 
		for (int a = 0; a<10; a++){  // a++是System.out.println()执行结束之后,在进行自加,从运行结果就可以看出来
		System.out.println(a);
		};
	}

}

运行结果:
0
1
2
3
4
5
6
7
8
9

  • do … while 循环
public class Hello{
	public static void main(String[] args){
		int a = 0;
		do {
			System.out.println(a);   // 不管条件是否成立这里的代码至少执行一次,因为先执行这里面的代码,然后再执行while进行判断条件				  			
			a++;
		};
		while ( a < 10);  // 注意这个;需要带上
	}

}

运行结果:
0
1
2
3
4
5
6
7
8
9

java的if…else语句与switch…case语句
  • if else

public class Hello{
	public static void main(String[] args){
		int a = 10;
		if (a < 20){
			System.out.println("数字比20小");
		} else {
			System.out.println("数字比20大");
		};
	}
}

运行结果:
数字比20小

  • if …else if …else
public class Hello{
	public static void main(String[] args){
		int a = 10;
		if (a == 20){
			System.out.println("您输入的是20");
		} else if (a == 10){
		System.out.println("您输入的为10"};
	} else {
		System.out.println("您输入的既不是20也不是10");
	};
	}
}

运行结果:
您输入的为10

  • switch … case

public class Hello{
	public static void main(String[] args){
		int a = 10;
		switch (a){
			case 10: 
			case 30:  // case可能不仅仅存在一个
				System.out.println("10");
				break;
			case 20:  
				System.out.println("20");
				break;
			case 30:
				System.out.println("30");
				break;
			default:
				System.out.println("default");  // 如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序 结束
		}
	}
}

运行结果:
10

注意:这里的break是确保每一个分支只能单独执行,不能同时执行,如果去掉这段代码中的所有break,那么运行结果就是 10 \n 20 \n 30

类、对象、方法
// 新建一个Student.java文件
public class Student {
	private String name;  // 成员变量
	private int age;
	
	public static void main(String[] args){
		
		
	}
	// 这是没有参数的构造方法

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	// 这是有参数的构造方法
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	};
	
	
	public void rap(String other){   // String为other的类型,必须进行声明
		System.out.println(name +"和"+ other + "are raping");
	};
	
	
}


// 新建一个Rap.java文件
public class rap {
	
	public static void main(String[] args){
		
		Student kun = new Student("蔡徐坤", 20);  // 使用关键字new来创建一个对象, kun为对象名称, Student为对象类型
		System.out.println(kun);  // Student [name=蔡徐坤, age=20]
		kun.rap("老师");  //  蔡徐坤和老师are raping  // 通过.的方式来调用方法,并传递参数
		
		
	}
	
}
继承
// extends 父类 就是继承了父类

public class Student2 extends Student{
	
	public Student2(String name, int age){
		super(name, age): // 必须有这个super
	}

}

继承的特性:
1、子类拥有父类非private的属性、方法
2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
3、子类可以用自己的方式实现父类的方法
4、java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类

接口

接口的特征:
1、 接口是隐式抽象的,当生命一个接口的时候,不必使用abstract关键字
2、接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字
3、接口中的方法都是公有的,定义方法的时候的关键字只能是public
4、接口无法进行实例化

// 定义一个接口, 使用关键字interface
public interface Animal{
	public void eat();
	public void run();
}


// 继承接口的方式使用关键字implements
// 注意,继承接口的类,必须实现接口中所有的方法
public class Dog implements Animal{
	public void eat(){
		System.out.println("狗仔吃");
	}
	public void run(){
		System.out.println("狗在跑");
	}
}

  • 抽象类
    抽象类的特征:
    1、不是完整的
    2、在面向对象的概念中,所有的对象都是通过类来描绘,但是反过来并不是所有的类都是用来描绘对象的,如果一个雷中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
    3、抽象类不能被实例化
    4、只能通过继承访问,只有一个非abstract修饰的类,才需要实现其中的方法
    5、其中定义的方法没有方法体
// 定义一个抽象类
public abstract class Abstract{
	public abstract void name();  // 抽象类中定义方法需要加关键字abstract,与接口相同的是不需要有方法体,子类会进行实现

}


// 其他类继承抽象类的方法
public class LiLei  extends Abstract{
	public void name(){
		System.out.println("hello, my name is lilei");
	}
}


方法的重写和重载
  • 重写:子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变,即外壳不变,核心重写
  • 重载:同名方法,但是参数和返回值可以不同,其参数列表必须修改,返回值可以修改。重写的参数列表和返回值一定不能修改。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习IDA逆向工程是一项具有挑战性但也非常有趣和有益的技能。以下是一个从零开始学习IDA逆向的步骤和建议。 首先,了解逆向工程的基本概念和原理是很重要的。逆向工程是从现有的二进制代码中分析和理解程序的功能和结构。了解逆向工程的原理和基本术语,例如反汇编、调试、符号化等,可以为学习IDA逆向打下坚实的基础。 其次,下载和安装IDA逆向工程软件。IDA是一款功能强大的二进制代码分析工具,它可以帮助分析和理解程序的结构和功能。在官方网站上下载并安装IDA Pro软件后,可以开始学习其使用方法。 接下来,学习使用IDA逆向工程软件的基本功能和操作。在掌握基本的界面布局、文件载入和导航等操作后,可以开始学习IDA的高级功能,例如反编译、导入和导出函数等。 并且,学习IDA的逆向工程还需要不断地练习和实践。通过分析和逆向不同的二进制程序,可以提高自己的技能和经验。开始逆向简单的示例程序,逐渐尝试逆向复杂和真实世界的程序。 此外,加入逆向工程的社区和论坛也是很有帮助的。在社区中与其他逆向工程师交流和分享经验,可以学习到更多的技巧和技术。 总结起来,学习IDA逆向工程需要对逆向工程的原理和术语有一定的了解,掌握IDA软件的基本功能和操作,并进行实践和练习。通过持续学习和实践,可以逐渐提高自己的逆向工程技能。 ### 回答2: 学习IDA逆向工程是一项艰巨但有趣的任务。对于从零开始学习IDA逆向工程的初学者来说,以下是几个建议。 首先,了解逆向工程的基础知识和概念是非常重要的。理解计算机的内部工作原理、汇编语言、操作系统等基础知识,可以帮助我们更好地理解IDA逆向工程的过程和原理。 其次,熟悉IDA的界面和功能。IDA是逆向工程中最流行的工具之一,具有强大的反汇编和静态分析功能。学习如何打开二进制文件、分析代码、查看函数和变量等,能够帮助我们有效地使用IDA逆向工程。 然后,阅读相关的学习材料和教程。有许多关于IDA逆向工程的书籍、在线教程和博客等资源可供学习。通过阅读这些材料,可以深入了解IDA逆向工程的技术和技巧。此外,还可以参加相关的培训课程或研讨会,与其他逆向工程师交流和分享经验。 此外,实践是学习IDA逆向工程过程中最关键的一步。通过分析实际的二进制文件,探索其中的逻辑和功能,可以帮助我们提高逆向工程的技能。可以从简单的练习开始,逐渐挑战更复杂的应用程序和算法。 最后,保持热情和耐心。学习IDA逆向工程是一项艰巨的任务,需要不断地学习和实践。没有捷径可走,只有持续的努力才能取得进步。保持对逆向工程的热情,耐心地解决问题和挑战,相信自己的能力,最终会取得成功。 总结起来,学习IDA逆向工程需要掌握基础知识,熟悉IDA工具,阅读学习材料,进行实践,并保持热情和耐心。通过不断地学习和实践,我们可以从零开始掌握IDA逆向工程。 ### 回答3: 从零开始学IDA逆向可能需要一些时间和耐心,但是通过一步一步的学习和实践,你可以逐渐掌握IDA逆向的技巧和知识。 首先你需要了解逆向工程的基本概念和原理。逆向工程是通过分析和修改已编译的程序,以获取其中的信息和功能。了解逆向工程的基本概念可以帮助你更好地理解IDA的工作原理。 接下来你可以下载和安装IDA软件。IDA是一款功能强大的逆向工程工具,它可以帮助你分析和修改已编译的程序。在安装完成后,你可以打开IDA并导入一个可执行文件进行分析。 在开始分析之前,你需要了解IDA的基本界面和功能。IDA界面通常包括一个反汇编窗口用于显示程序的汇编代码,一个图形窗口用于显示程序的控制流图,以及一些工具栏和菜单用于执行各种操作。了解和熟悉IDA界面可以帮助你更高效地进行逆向分析。 逆向分析通常从程序的入口点开始。你可以在IDA中找到程序的入口点,并从那里开始分析程序代码。了解程序的控制流和函数调用可以帮助你理解程序的基本结构和功能。 逆向分析的重要部分是分析程序中的函数。IDA可以帮助你自动识别程序中的函数,并生成函数调用图。通过分析函数的参数、返回值和局部变量,你可以理解函数的功能和作用。 最后,进行反汇编和调试是逆向分析的重要步骤。通过反汇编,你可以将程序中的机器代码转换为汇编代码,进一步分析程序的执行流程和功能。IDA也提供了调试功能,可以帮助你在逆向分析过程中跟踪程序的执行并进行动态分析。 总之,学习IDA逆向分析需要时间和耐心,但通过系统学习和实践,你可以逐渐掌握IDA工具的使用技巧,并深入理解程序的内部结构和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值