【Java学习1】Java基础

为什么学习Java

作为渗透测试工程师为什么要学习Java呢?一、在web应用方面,现目前企业大多数都是采用Java开发应用程序,自然随之而来的是各种中间件及框架不断爆出新漏洞如:struts2框架反序列化漏洞、weblogic中间件各种漏洞等。二是APP安全需要JAVA基础,后期会学习安卓开发与逆向。三是有很多安全工具都是采用JAVA开发。这就是为什么需要学习JAVA的原因!但我的目的不是开发,只需要达到会看懂能调试能写简单的代码即可。相语法比较起来,python还是简单多,适合做日常工具开发。

JAVA分类

  • JavaSE:Java核心基础,包括如数据库连接、接口定义、数据结构、输入输出、网络编程等。
  • JavaEE:企业版,包括JavaSE所有类,且还包含用于开发企业应用的类,如EJB、JSP、XML、事务控制等。
  • JavaME:用于移动端开发,如安卓应用

JAVA跨平台原理

所有的Java程序文件的后缀都是*.java,而经过编译会形成*.class文件(字节码文件),在经过JAVA虚拟机(JVM)解释执行。JAVA中所有的程序都是在JVM上运行,JVM读取并处理经过编译的与平台无关的字节码*.class文件,只要你的操作系统安装了Java虚拟机,就能执行Java程序。

第一个Java程序

这里我采用VScode编辑器做开发工具(支持多种编程语言)
在这里插入图片描述

public class Test{
    public static void main(String args[]){
        System.out.print("hello java");
    }
}

JAVA基础语法

注释

java支持三种注释

// 单行注释

/*
多行注释
*/

/**
文档注释,注释的内容会被解释成程序的正式文档,包含进javadoc工具生成的文档里
*/

标识符和关键字

// 和其它编程语言一样,标识符由字母、数字、下划线、$组成。不能以数字开头,也不能是Java中的关键字
// Java标识符区分大小写
// $符号有特殊意义,尽量不要使用

数据类型

java数据类型分为:基本数据类型和引用数据类型。基本数据类型不会涉及到内存开辟的操作,而应用数据类型会涉及到内存的开辟操作。JAVA是强类型编程语言,不会像PHP、python那样可以不定义数据类型

  • 基本数据类型:数值型、字符型、布尔型
  • 引用数据类型:类、接口、数组、String字符串
整型
  • byte:字节,范围-128-127
  • short:短整型,不常用
  • int:整型,常用默认
  • long:长整型
浮点数
  • float:单精度,不常用
  • double:双精度,默认常用
字符
  • char:范围0-255
布尔
  • boolean:true和false
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);
    }
}
逻辑运算符
&:普通与
&&:短路与
|:普通或
||:短路或
!:非
位运算
&|^~>><<>>>

程序逻辑控制

IF选择语句
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("=");
        }
    }
}
switch选择
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;
        }
    }
}
while循环
public class Test{
    public static void main(String args[]){
        int i = 0;
        while(i < 10){
            System.out.print(i);
            i++;
        }
    }
}
for循环
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关键字用来表示方法不返回任何值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值