java 代码审计-语言基础篇

文章作者:Raybye

Java是一门面向对象的计算机编程语言,吸收了C语言的各种优点,具有功能强大和简单易用两个特征。Java语言是最典型的静态面向对象编程语言的代表,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可用于编写桌面应用程序、Web应用程序、分布式系统,嵌入式系统应用程序和Android移动平台等 。

但目前在企业中主流还是用于Web应用程序和Android移动平台,到目前为止Java在web应用模块框架发展的也是相当成熟,本篇文章简单的对上篇《Java代码审计入门指南》中Java语言基础的部分进行大致的总结,并对Java代码审计中用到的方法等进行重点标注。Java 语言支持的数据类型分为两种:基本数据类型(Primitive Type)和引用数据类型(Reference Type)。

图   Java数据类型结构图

1.基本数据类型及其转换

1.1基本数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

图 java八种基本数据类型

byte型:

byte 数据类型是8位、有符号的,以二进制补码表示的整数;取值范围-128~127;即-2^7~2^7-1,默认值为 0;

short型:

short 数据类型是 16 位、有符号的以二进制补码表示的整数;取值范围 -32768~32767即-2^15-2^15 - 1;默认值为 0;

int型:

int 数据类型是32位、有符号的以二进制补码表示的整数;-2147483648~ 2147483647即-2^31~2^31 - 1;默认值为 0 ;整数通常是int型

long型:

long 数据类型是 64 位、有符号的以二进制补码表示的整数;最小值是 -9223372036854775808~9223372036854775807即-2^63~2^63 -1;默认值为0L;

float型:

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;默认值是 0.0f;

double型:

double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;浮点数的默认类型为 double 类型;默认值是 0.0d;

boolean型:

boolean数据类型表示一位的信息;只有两个取值:true 和 false;这种类型只作为一种标志来记录 true/false 情况;默认值是 false;

char型:

char 类型是一个单一的 16 位 Unicode 字符;最小值是 \u0000(十进制等效值为 0);最大值是 \uffff(即为 65535);char 数据类型可以储存任何字符;

1.2类型转换

自动类型转换

运算中,不同类型的数据先转化为同一类型之后才能进行运算。转换从低级到高级。

数据类型转换规则:

  • 不能对boolean类型进行类型转换。

  • 不能把对象类型转换成不相关类的对象。

  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  • 转换过程中可能导致溢出或损失精度

常见转换:byte—>short—> int —> long

float —> double

强制类型转换

  • 条件:转换的数据类型必须是兼容的。

  • 格式:(type)value type是要强制类型转换后的数据类型

2.引用数据类型

引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。引用数据类型是由用户自定义,用来限制其他数据的类型。另外,Java 语言中不支持 C++ 中的指针类型、结构类型、联合类型和枚举类型。

2.1类

类是包括是用户自定义的和Java内置封装的类,下面主要对Java内置的几个类进行简单介绍,包括math类,Character 类,String 类,StringBuffer 和StringBuilder 类

Math类

Java 的 Math 包含了用于执行基本数学运算的属性和方法,下表是math类常用的方法,其中标红的是代码审计工作中最常见的方法。

序号

方法

描述

1

xxxValue()

将 Number 对象转换为xxx数据类型的值并返回

2

compareTo()

将number对象与参数比较

3

equals()

判断number对象是否与参数相等

4

valueOf()

返回一个 Number 对象指定的内置数据类型

5

toString()

以字符串形式返回值

6

parseInt()

将字符串解析为int类型

7

abs()

返回参数的绝对值

8

ceil()

返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型

9

floor()

返回小于等于(<=)给定参数的最大整数

10

rint()

返回与参数最接近的整数。返回类型为double。

11

round()

它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11

12

min()

返回两个参数中的最小值

13

max()

返回两个参数中的最大值

14

exp()

返回自然数底数e的参数次方

15

log()

返回参数的自然数底数的对数值

16

pow()

返回第一个参数的第二个参数次方

17

sqrt()

求参数的算术平方根

18

sin()

求指定double类型参数的正弦值

19

cos()

求指定double类型参数的余弦值

20

tan()

求指定double类型参数的正切值

21

asin()

求指定double类型参数的反正弦值

22

acos()

求指定double类型参数的反余弦值

23

atan()

求指定double类型参数的反正切值

24

atan2()

将笛卡尔坐标转换为极坐标,并返回极坐标的角度值

25

toDegrees()

将参数转化为角度

26

toRadians()

将角度转换为弧度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值