重学Java(012)—— Java基础知识(类、对象、举例、局部变量和成员变量的区别)

一、类

类是什么?“人类”就是一个很好的例子,所有的人类,医生警察老师学生等等等等都是属于人类,那么类的具体定义是什么呢?

  • 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该
    类事物。

类的定义格式:

public class ClassName {
//成员变量
//成员方法
}

现实中,描述一类事物:

  • 属性:就是该事物的状态信息。
  • 行为:就是该事物能够做什么。

例如我们要定义一个类,用来模拟"学生"事务。其中就有两个部分组成。

属性(是什么):
姓名
年龄

行为(做什么):
吃饭
睡觉
学习

对应到Java的类当中:属性则是成员变量,行为则是成员方法。

成员变量(属性):

	String name; //姓名
    int age; //年龄

成员方法(行为):

	public void eat() {} //吃饭
    public void sleep() {} //睡觉
    public void study() {} //学习

注意:
1.成员变量是直接定义在类当中的,在方法外边。
2.成员方法不要写static关键字。

下面我们来定义“学生”类:

public class Student {

    //成员变量
    String name; //姓名
    int age; //年龄
    
    //成员方法
    public void eat() {
        System.out.println("吃饭!");
    }

    public void sleep() {
        System.out.println("睡觉!");
    }

    public void study() {
        System.out.println("学习!");
    }
}

二、对象

类是抽象的,对象是具体的。
简单来说,对象是义类事务的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。

对象的使用格式:

创建对象:

类名 对象名 = new 类名();

使用对象访问类中的成员:

对象名.成员变量;
对象名.成员方法()

如果只有类的话,是不能直接使用的,需要根据类创建一个对象才能使用,使用的步骤如下:

1.导包:也就是指出需要使用的类,在什么位置。 import 包名称.类名称; import cn.itcast.day06.demo01.Student; 对于和当前类属于同一个包的情况,可以省略导包语句不写。

2.创建对象 格式:类名称 对象名 = new 类名称(); Student stu = new Student();

3.使用对象:分为两种情况: 使用成员变量:对象名.成员变量名 使用成员方法:对象名.成员方法名(参数)

注意:如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样。

下面我们来了用一个对象实例说明:

public class Demo02Student {

    public static void main(String[] args) {
        // 1.导包。
        // 我需要使用的Student类便是一中的例子,和我自己Demo02Student位于同一个包下,所以省略导包语句不写

        // 2.创建,格式:
        // 类名 对象名 = new 类名();
        // 根据Student类,创建了一个名为stu的对象
        Student stu = new Student();

        // 3.使用其中的成员变量,格式:
        // 对象名.成员变量名
        System.out.println(stu.name); //null
        System.out.println(stu.age); //0
        System.out.println("---------------------");

        //改变对象当中的成员变量数值内容
        //将右侧的字符串,赋值交给stu对象当中的name成员变量
        stu.name = "nxy";
        stu.age = 20;
        System.out.println(stu.name); //nxy
        System.out.println(stu.age); //20
        System.out.println("---------------------");

        // 4.使用对象的成员方法,格式:
        // 对象名.成员方法名;
        stu.eat(); // 吃饭!
        stu.sleep(); //睡觉!
        stu.study(); //学习!
    }
    
}


类和对象的简单关系:

  • 类是对一类事物的描述,是抽象的。
  • 对象是一类事物的实例,是具体的。
  • 类是对象的模板,对象是类的实体。

三、一个例子

接下来我们通过定义一个手机类,来练习类和对象的使用:

分析:

属性:品牌、价格、颜色 行为:打电话、发短信

对应到类当中:

成员变量(属性):
String brand; //品牌
double price; //价格
String color; //颜色 成员方法(行为):
public void call(String who) {} //打电话
public void sendMessage() {} //群发短信

定义该类的代码如下:

public class Phone {

    //成员变量
    String brand; //品牌
    double price; //价格
    String color; //颜色

    //成员方法
    public void call(String who) {
        System.out.println("给" + who + "打电话");
    }

    public void sendMessage() {
        System.out.println("群发短信");
    }
}

下面我们写一个测试类,创建一个对象,调用一些成员变量和成员方法:

public class Demo01PhoneOne {

    public static void main(String[] args) {
        //根据Phone类,创建一个名为one的对象
        //格式:类名称 对象名 = new 类名称();
        Phone one = new Phone();
        System.out.println(one.brand); //null
        System.out.println(one.price); //0.0
        System.out.println(one.color); //null
        System.out.println("-----------------");

        one.brand = "苹果";
        one.price = 5499.0;
        one.color = "黑色";
        System.out.println(one.brand); //苹果
        System.out.println(one.price); //5499.0
        System.out.println(one.color); //黑色
        System.out.println("-----------------");

        one.call("nxy"); //给nxy打电话
        one.sendMessage(); //群发短信
    }

}

四、局部变量和成员变量的区别

  1. 定义的位置不一样【重点】
    局部变量:在方法的内部
    成员变量:在方法的外部,直接写在类当中

  2. 作用范围不一样【重点】
    局部变量:只有方法当中才可以使用,出了方法就不能再用
    成员变量:整个类全都可以通用

  3. 默认值不一样【重点】
    局部变量:没有默认值,如果要想使用,必须手动进行赋值
    成员变量:如果没有赋值,会有默认值,规则和数组一样

  4. 内存的位置不一样(了解)
    局部变量:位于栈内存
    成员变量:位于堆内存

  5. 生命周期不一样(了解)
    局部变量:随着方法进栈而诞生,随着方法出栈而消失
    成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失

举例说明:

public class Demo01VariableDifference {

    String name; //成员变量

    public void methodA() {
        int num = 20; //局部变量
        System.out.println(num);
        System.out.println(name);
    }

    public void methodB(int param) { //方法的参数就是局部变量
        //参数在方法调用的时候,必然会被赋值的
        System.out.println(param);

        int age;
//        System.out.println(age); //没赋值不能用,局部变量必须赋值才可以使用
//        System.out.println(num); //错误写法
        System.out.println(name);
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值