作为渗透测试工程师为什么要学习Java呢?一、在web应用方面,现目前企业大多数都是采用Java开发应用程序,自然随之而来的是各种中间件及框架不断爆出新漏洞如:struts2框架反序列化漏洞、weblogic中间件各种漏洞等。二是APP安全需要JAVA基础,后期会学习安卓开发与逆向。三是有很多安全工具都是采用JAVA开发。这就是为什么需要学习JAVA的原因!但我的目的不是开发,只需要达到会看懂能调试能写简单的代码即可。相语法比较起来,python还是简单多,适合做日常工具开发。
所有的Java程序文件的后缀都是*.java,而经过编译会形成*.class文件(字节码文件),在经过JAVA虚拟机(JVM)解释执行。JAVA中所有的程序都是在JVM上运行,JVM读取并处理经过编译的与平台无关的字节码*.class文件,只要你的操作系统安装了Java虚拟机,就能执行Java程序。
public class Test{
public static void main(String args[]){
System.out.print("hello java");
}
}
java支持三种注释
// 单行注释
/*
多行注释
*/
/**
文档注释,注释的内容会被解释成程序的正式文档,包含进javadoc工具生成的文档里
*/
// 和其它编程语言一样,标识符由字母、数字、下划线、$组成。不能以数字开头,也不能是Java中的关键字
// Java标识符区分大小写
// $符号有特殊意义,尽量不要使用
java数据类型分为:基本数据类型和引用数据类型。基本数据类型不会涉及到内存开辟的操作,而应用数据类型会涉及到内存的开辟操作。JAVA是强类型编程语言,不会像PHP、python那样可以不定义数据类型
public class Test{
public static void main(String args[]){
int number = 10;
double d1 = 3.14;
char c1 = 'a';
boolean b1 = true;
}
}
java采用十六进制的Unicode编码,所以标识符支持中文
public class Test{
public static void main(String args[]){
int 整数变量1 = 10;
char c1 = 'C';
int num = c1;
System.out.println(整数变量1);
System.out.print(num);
}
}
long l1 = 100000;
int i1 = l1;
int i1 = 10;
long l1 = (long) i1;
>、<、>=、<=、!=、==
+、-、*、/、%
public class Test{
public static void main(String args[]){
int i1 = 10;
int i2 = 20;
int max = i1 > i2 ? i1 : i2;
System.out.print(max);
}
}
&:普通与
&&:短路与
|:普通或
||:短路或
!:非
&、|、^、~、>>、<<、>>>
public class Test{
public static void main(String args[]){
int i1 = 2;
int i2 = 3;
if (i1 > i2){
System.out.print(i1);
} else if (i1 == i2){
System.out.print(i2);
} else {
System.out.print("=");
}
}
}
public class Test{
public static void main(String args[]){
char c = 'C';
switch(c){
case 'A':
System.out.print('A');
break;
case 'B':
System.out.print('B');
break;
case 'C':
System.out.print('C');
break;
default:
System.out.print('?');
break;
}
}
}
public class Test{
public static void main(String args[]){
int i = 0;
while(i < 10){
System.out.print(i);
i++;
}
}
}
public class Test{
public static void main(String args[]){
for(int i = 0; i < 10; i++){
System.out.print(i);
}
}
}
方法在PHP或PYTHON中,也叫做函数,就是对一段重复利用的代码进行封装。
/*
返回值可以是基本数据类型或引用数据类型
方法没有返回值,用void表示
方法名定义规范:第一个单词的首字母小写,其余首字母大写
public static 返回值类型 方法名(参数类型 参数变量,......){
方法体
[return;]
}
*/
public class Test{
public static void main(String args[]){
System.out.print(addInt(2,3));
}
public static int addInt(int i1, int i2){
return i1 + i2;
}
}
方法的重载是指方法名相同,参数的类型或个数不同,调用时会按照传递的参数类型和个数完成不同的方法体执行。
/*
说明:
在进行方法重载时要考虑参数类型的统一,建议所有重载后的方法使用同一种返回值类型
方法重载是根据参数类型和个数来区分不同方法,而不是通过返回值来确定的
*/
public class Test{
public static void main(String args[]){
System.out.println(addInt(2,3));
System.out.println(addInt(2,3,4));
}
public static int addInt(int i1, int i2){
return i1 + i2;
}
public static int addInt(int i1, int i2, int i3){
return i1 + i2 + i3;
}
}
递归调用是一种特殊的调用形式,即方法自己调用自己的形式。递归必须满足两个条件:必须有结束条件、每次调用时都需要改变传递的参数
public class Test{
public static void main(String args[]){
System.out.print(sum(100));
}
public static int sum(int i1){
if (i1 == 1){
return 1;
} else {
return i1 + sum(i1 -1);
}
}
}
1、Java中的标识符组成原则是:由字母、数字、下划线、 组 成 , 不 能 以 数 字 开 头 , 组成,不能以数字开头, 组成,不能以数字开头,符号有特殊意义。
2、Java注释分为:单行注释//、多行注释//、文档注释/*/
3、在一个Java源文件中定义了3个类和15个方法,编译该Java源文件会产生3个字节码文件,其扩展名是.class。
4、布尔数据类型的关键是true和flase
5、整数可以用byte、short、int、long表示
6、根据占用内存长度不同,将浮点型分为double和float
7、Java程序结构分为:选择、循环、顺序
8、在方法中使用return语句结束方法执行
9、方法中的void关键字用来表示方法不返回任何值