在参数(Role role)里面 Role是数据类型吗? role又是什么?

有没有人能帮我解答一下,真的困扰了我好久,下面Role类中创建的attack方法 public void attack(Role role) 为什么没有static?? 另外参数里面放的不是数据类型和变量名吗? 在参数(Role role)里面 Role是数据类型吗? role是变量名吗?


public class GameTest {
    public static void main(String[] args) {
        //1.创建第一个角色
        Role r1 = new Role("乔峰",100);
        //2.创建第二个角色
        Role r2 = new Role("鸠摩智",100);

        //3.开始格斗 回合制游戏
        while(true){
            //r1开始攻击r2
            r1.attack(r2);
            //判断r2的剩余血量
            if(r2.getBlood() == 0){
                System.out.println(r1.getName() + " K.O了" + r2.getName());
                break;
            }

            //r2开始攻击r1
            r2.attack(r1);
            if(r1.getBlood() == 0){
                System.out.println(r2.getName() + " K.O了" + r1.getName());
                break;
            }


        }
    }
}



public class Role {
    private String name;
    private int blood;

    public Role() {
    }

    public Role(String name, int blood) {
        this.name = name;
        this.blood = blood;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBlood() {
        return blood;
    }

    public void setBlood(int blood) {
        this.blood = blood;
    }


    //定义一个方法用于攻击别人
    //思考:谁攻击谁?
    //Role r1 = new Role();
    //Role r2 = new Role();
    //r1.攻击(r2);
    //方法的调用者去攻击参数
    public void attack(Role role) {
        //计算造成的伤害 1 ~ 20
        Random r = new Random();
        int hurt = r.nextInt(20) + 1;

        //剩余血量
        int remainBoold = role.getBlood() - hurt;
        //对剩余血量做一个验证,如果为负数了,就修改为0
        remainBoold = remainBoold < 0 ? 0 : remainBoold;
        //修改一下挨揍的人的血量
        role.setBlood(remainBoold);

        //this表示方法的调用者
        System.out.println(this.getName() + "举起拳头,打了" + role.getName() + "一下," +
                "造成了" + hurt + "点伤害," + role.getName() + "还剩下了" + remainBoold + "点血");
    }

}

static表示是静态方法,静态方法直接用类名.方法名() 这样的方式调用,没有static表示是普通的方法,用对象名.方法名() 这样的方式调用,是否定义static方法,由自己的需求而定。准确的说,attack(Role role)里面的Role是参数的类型,role是参数的名称。当然,你说Role是数据类型吗,role是变量名,问题也不大,但作为方法参数来说,一般不这样叫,在方法里面或者外面定义的才叫变量,Role你可以说是类,也可以说是自定义的数据类。望采纳!!!

Role是对象数据类型
java里面有八种基本数据类型:boolean、byte、short、char、int、long、float、double
还有他们的包装类Boolean、Byte、Short、Character、Integer、Long、Float、Double
除了基本数据类型以外,其它的都是对象类型,有些是系统提供的比如String、List、Map等
自己定义的类也可以算数据类型。
从你的问题来看,你应该还没了解类和对象,先看一下类和对象相关的知识,再来看这个代码就懂了