JAVA代码审计之数据类型与运算符(2)
2022-5-12 17:56:21 Author: www.freebuf.com(查看原文) 阅读量:9 收藏

编写主方法

mian()方法是类体中的主方法。改方法从{开始到}结束。Public,static和void分别是main()方法的权限修饰符,静态修饰符和返回值修饰符,Java程序中的main()方法必须声明为public static void。String[] args是一个字符串类型的数组,他是main()方法的参数

package com.java.test; //申明包名

public class HelloWord {
    public static void main(String[] args){

        System.out.println("Hello Word!");

    }
}

补充:

public:表示的这个程序的访问权限,表示的是任何的场合可以被引用,这样 Java 虚拟机就可以找到 main() 方法,从而来运行 javac程序。

static :表明方法是静态的,不依赖类的对象的,是属于类的,在类加载的时候 main() 方法也随着加载到内存中去。

void:方法是不需要返回值的。

包:Java定义了一种名字空间,称之为包:package。一个类总是属于某个包,类名(比如Person)只是一个简写,真正的完整类名是包名.类名

例如:

小明的Person类存放在包ming下面,因此,完整类名是ming.Person

小红的Person类存放在包hong下面,因此,完整类名是hong.Person

小军的Arrays类存放在包mr.jun下面,因此,完整类名是mr.jun.Arrays

JDK的Arrays类存放在包java.util下面,因此,完整类名是java.util.Arrays

在定义class的时候,我们需要在第一行声明这个class属于哪个包。

数据类型

1647340396_62306b6c47e8a04b980fd.png!small?1647340396573

例如,String类型就是引用类型,简单来说,所有的非基本数据类型都是引用数据类型

基本数据类型和引用类型的区别

1647340451_62306ba3a27d803725415.png!small?1647340451906

基本类型 赋值(=号)

int int1 = 100;
int int2 = int1;
int1 = 500;

//此时int2不会随着int1改变而改变,**相当于在指向不同的内存空间地址**

引用基本类型 赋值(=号)

int[] arr1 = new int[1,2,3,4,5];
int[] arr2 = arr1;
arr1[3] = 8;
//此时arr2会随着arr1的改变而改变,**相当于在指向相同的内存空间地址**

声明变量

1、 数据类型 变量名 = 值;

2、数据类型 变量名;

变量名 = 值;

int money = 10000;

int number;
number = 1000;

关键字

关键字是Java语言中已经被赋予特定意义的一些单词,不可以把这些字作为标示符(标识符就是用于给 Java 程序中变量、类、方法等命名的符号)来使用

1647340553_62306c09782dfd7929b9b.png!small?1647340553886

声明常量

find 数据类型 数据名称 = 值

常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变

常量名通常使用大写字母表示常量,只能赋值一次,通常定义时对其初始化

package com.java.test;

public class Testype {
    static final double PI = 3.14;
    static int age = 23;

    public static void main(String[] args) {
        final int number;
        number = 1234;

        System.out.printf("常量PI的值为:" + PI);
        System.out.printf("age的值为:" + age);
        System.out.printf("number的值为:" + number);
    }
}

再次给常量赋值会报错

1647340648_62306c68468dce9cb083c.png!small?1647340648615

再次给变量赋值正常

1647340660_62306c74424e390b82b84.png!small?1647340660616

强制类型转换

当高精度的变量的值赋给低精度变量时,必须使用强制类型转换(又称显示类型转换)

语法规则:

(类型名)要转换的内容

number2 是double浮点类型(双精度)在这里为高精度,和int类型相加会爆错

1647340791_62306cf783cdac611093d.png!small?1647340791789

需要将double强制转化成int,注意高精度强制转化成低精度丢失精度(向下取整,如10.8=10)

1647340802_62306d0202a4945a410e7.png!small?1647340802292

但是低精度转换高精度会自动转换

1647340813_62306d0d8bbc3b3e98368.png!small?1647340813845

两种不兼容的值就需要强制转换,比如高精度 → 低精度 or char → int

但是boolean布尔值是不可以被强转成其他值的

算术运算符

算术运算符用在数学表达式中,它们的作用和在数学中
图片.png

关系运算符

表格中的实例整数变量A的值为10,变量B的值为20
图片.png

位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

a = 60,b = 13;它们的二进制格式表示将如下

A = 0011 1100
B = 0000 1101

A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011

下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13
图片.png

三元运算符

三元运算符的运算规则为:若条件式的值为true,则整个表达式取1,否则取2

variable x = (expression) ? value if true : value if false

variable 变量       expression  表达式

instanceof运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)

intanceof运算符的使用格式如下:

(Object reference variable)instanceof (class/interface type)

package com.java.test;

public class TestNum {
    public static void main(String[] args) {
        String name = "TEST";
        boolean result = name instanceof String;
        System.out.println(result);
    }
}

图片.png
将右侧修改成Integer类
图片.png


文章来源: https://www.freebuf.com/articles/web/324968.html
如有侵权请联系:admin#unsafe.sh