Java基础之类和对象

  我们都知道,Java是一种面向对象的编程语言,在Java世界中,几乎一切都是对象,我们通常用类来描述对象,对此,我引出三个问题。类和对象之间的关系是什么样的?在Java中我们是怎么操作对象?怎么创建类?本篇博客将对这三个问题进行解。

一 、类和对象的关系

  在面向对象编程中,对象是具体化的实例,类是对同类事物的抽象,即为抽象化的模型。现实世界中的每一个事物,都是一个对象。同类对象的抽象——我们称之为“类”。比如汽车就是一个类,它的属性包括车轮、发动机、方向盘等等,行为包括启动、刹车等等,是所有汽车的模版,而奔驰就是这个类的一个实例,它具有汽车类的一切属性和方法,是在这个模版上创建的。以下是类所具有的特点:

  • 类是具有共同属性和行为的对象的抽象。
  • 类可以定义为数据和方法的集合。
  • 类也称为模板,因为它们提供了对象的基本框架。
下面是我画的一幅图来描述类和对象之间的关系

这里写图片描述


二 、怎么操作对象


  在Java中,我们处理数据包括基本数据类型和引用类型(即对象),但是在实际的操作过程中,我们是直接操纵元素吗?答案是否定的。其实我们操作的是对象的引用。对象的引用怎么理解,我在《Thinking In Java》看到一段很精彩的解释:对象好比电视机,引用相当于遥控器,我们可以通过遥控器对电视机进行操作,比如开关电视,调低音量,实际上我们操控的是遥控器,再由遥控器来控制电视。也就是说在Java中,我们是通过引用来操作对象的,而不是直接操作对象。但是,对于遥控器(引用)来说,没有电视机(对象)也可以独立存在,也就是说,你可以只有一个引用,并不一定有对象与之关联。比如 String name ; 这里只是创建了一个引用,而没有创建该引用指向的对象。到这里大家应该明白程序员是怎么操作对象的了吧。
  但是,我们常用的基本数据类型要特殊对待。一方面基本数据类型所占的存储空间是固定的,而且相对较小,并没有像其他的对象占用大量的存储空间。另一方面,我们在编程中对基本数据类型的操作随处可见,如果通过new关键字来创建基本数据类型,该对象将存储在堆内存中,不方便操作,往往不是很有效。因此JVM将这些基本数据类型直接存储在栈中。但是Java提供了基本数据类型的包装类,也可以进行对象的创建,如下图所示。
基本数据类型存储大小包装类名称
boolean1 bitBoolean
char16-bitCharacter
byte8 bitByte
short16 bitShort
int32 bitInteger
long64 bitLong
folat32 bitFloat
double64 bitDouble

我们举个例子来看看怎么创建基本数据类型的对象:
Integer   a  =  new Integer(10);    //a为对象类型

三 、怎么创建类

  在Java中,我们通过关键字class来创建类,格式如下:
class Name {
    //定义成员变量,如果不初始化,系统会默认初始化。
    type variable1;
    .............
    type variableN;
    //定义成员方法
    type methodname1(parameter-list){
          //定义局部变量,必须初始化,否则会报错。
          type local1 = 1;
          type local2 = 2;
          //方法体
    }
    .................
    type methodnameN(parameter-list){
        //方法体
    }
} 
方法体中如果指定了非void的返回值类型,方法中就必须包含一条return语句保证任何情况下都有返回数值,return语句后面不能跟任何表达式;

下面说说成员变量和局部变量的区别:
(1)成员变量是在类中直接定义的,从属于类,如果不初始化,系统会默认初始化,每种数据类型都有默认值。局部变量是定义在方法中的,从属于该方法,并且不可被其他方法访问。
(2)如果在某方法中对成员变量重新赋值,则以局部变量的值为该方法的最终值。
数据类型默认初始化的值:
TablesAre
booleanfalse
char‘\u0000’
byte(byte)0
short(short)0
int0
long0L
float0.0f
double0.0d
Objectnull

以下代码用来验证成员变量和局部变量:
public class Test {
    public static void main(String[] args) {
        class Human{
            //成员变量
            String gender;
            int age = 22;
            public void run(){
                //局部变量
                int age = 18;
                System.out.println(age);
                System.out.println(gender);
            }
        }
        Human test = new Human();
        test.run();
    }
}
运行结果为:
age:18
gender:null

四 、总结

  本文讲述了面向对象的基本概念和思想,怎么创建类以及类和对象之间的关系,并且简单介绍成员变量和局部变量,为接下来的学习做了铺垫,下一篇我将写一些关于构造函数的介绍,这也是最重要的一部分,希望大家多多关注!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值