zoukankan      html  css  js  c++  java
  • Java 类和对象

    上 Java 语言的第一课,相信很多老师都会解释一句话就是 Java 是一个纯面向对象的语言。

    然后再加上一堆 Java 的历史,再加上一个经典的动物的例子。

    比如说,我们要描述动物,不同品种的狗的例子,我们在这个基础上抽象出来一个 Class,这个就是我们说的类了。

    为什么叫 Class

    这个很多人可能都没有想过吧,其实 Class 这个单词在英语里面有分类的意思。在英语世界里面,会用 Class 来表示很多东西。

    比如说 Class A Felony,这个在英语法典里面就是表示的是刑事重罪的 A 分类。

    在计算机语言中,我们就使用了 Class 来表示一个类了。

    Class 和 Object

    对象在我们定义 Class 后,我们就可以得到了。

    还是用这个经典狗的例子,我们在定义了狗这一类动物后,我们需要将这个定义的动物映射到一条具体的狗上面。这条狗可能你的,也可能是隔壁老王的。

    在现实中,肯定是不可能有 2 条一模一样重复的狗,但是在计算机数据上是可以存在的。

    将类映射到具体的对象上的过程就是叫做实例化。这个应该比较好理解吧,因为 Class 是抽象,现在我们不讨论抽象的狗了,我们讨论隔壁老王家的狗。

    如果把 Class 的狗直接拿过来用是肯定不行的,因为我们不知道我们现在要讨论的狗是谁的狗。

    因此我们需要使用关键字 new 一下我们定义的 Class 的这个对象。然后我们就知道我们需要讨论隔壁老王家的狗了。

    这个过程就叫做类的实例化

    因此,总结来说,对象就是实例化后的类

    创建对象

    对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建一个对象需要以下三步:

    • 声明:声明一个对象,包括有对象类型和对象的名称
    • 实例化:使用关键字 new 来创建一个对象。
    • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

    实际上我们可能并不是完全按照上面的 3 步来写代码。

    实际上,你可以写出下面的代码是没有问题,也是可以编译通过的,你的 IDE 工具可能会提示你说下面的代码是重复的,你可以使用其他方法来避免重复。

    String testStr = new String("COM.OSSEZ");
    

    但是实际上,没有人这样写,绝大部分你看到的代码都是:

    String testStr = "COM.OSSEZ";
    

    这是因为 String 这个类在 JDK 中比较特殊,是字符串的对象,通常也是我们用得最多的有关的字符串的操作,因此 String 的对象是可以直接赋值的。

    当你直接赋值后,其实 JDK 已经为你完成了上面的 3 步操作了。

    有时候,你在定义好对象后,可能还暂时不知道要干什么,你可能就非常粗暴的直接 = null 到给定的对象上面了。

    或者就先定义好,在使用的时候再初始化。

    例如,你可以使用下面的代码来定义一个对象,但是不对这个对象进行任何操作。但是,随后你就马上要对这个对象进行操作了。

    通常你的 IDE 工具会在这里提示要求你初始化这个变量。

    这个时候你可以直接 new 一个 String,在你 new 一个 String 的时候,Java 就已经帮你完成了上面说的实例化了。

    String testStr;
    logger.debug("String Size - [{}]", ossezVariable.length());
    

    上面的代码,在 IDE 中会提示错误的,在构建的时候也会提示定义的变量没有初始化错误。

    当然,你也可以直接将 null 赋值给你的变量,这样的结果得到的就是空对象异常。

    String testStr = null;
    logger.debug("String Size - [{}]", ossezVariable.length());
    

    空对象

    在 Java 中,我们可以先定义一个对象,然后将 null 赋值给定义的对象。

    考察下面的代码:

    String testStr = null;
    		logger.debug("String Size - [{}]", testStr.length());
    

    在上面的代码中,我们将 null 赋值给了一个字符串对象 testStr ,但是我们并没有对这个对象进行任何后续的赋值。

    因此这个对象是 null 的,如果这个时候你有代码尝试获得字符串的长度,但是字符串为 null,第二条语句肯定会出现空对象异常。

    这在 Java 中非常常见。

    https://www.ossez.com/t/java/13446/1

  • 相关阅读:
    MySQLday04(剩余窗口函数,其他常用函数,存储引擎,如何选择数据类型,字符集,索引,存储过程,触发器,LOCK TABLES 和 UNLOCK TABLES,事务控制,分布式事务的使用,JDBC)
    MySQLday03(JSON类型,算术运算符,比较运算符,逻辑运算符,位运算符,运算符的优先级,字符串函数,数值函数,日期和时间函数,流程函数,JSON函数,窗口函数)
    Mysqlday02(导入外部sql文件,order by,group by,having,多表联查,查元数据,数值类型,日期类型,字符数据类型)
    Mysqlday01(Mysql简介,sql简介,分类)
    Spring Boot 入门实战(6)--JdbcTempalte、Mybatis 、多数据源及 Atomicos 整合(XA 事务)
    Spring Boot 入门实战(5)--JdbcTempalte、Mybatis及多数据源整合(单库事务)
    Java 操作 XML(11)--XMLBeans 使用
    Qt QThread 创建多线程程序
    C++Primer第五版 第十三章 拷贝控制
    QtCreator float与QString之间的转化
  • 原文地址:https://www.cnblogs.com/huyuchengus/p/14703575.html
Copyright © 2011-2022 走看看