本人大二学生在读,也是一名Java初学者。接下来我会谈谈我对Java的学习心得,同时也是为了进一步体会这门技术,如有不当的地方,请不吝指出。
Java是我接触到的第一门编程语言,初学时不明白为什么将此称为一门语言,或者说是一门计算机语言。
百度百科对语言的定义为:语言(英文:Language)是人类进行沟通交流的表达方式。语言是人与人交流的一种工具,更是文化的重要载体。 [2]据德国出版的《语言学及语言交际工具问题手册》,世界上查明的有5651种语言。
对计算机语言的定义为:计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。这些就是计算机能接受的语言。
语言的定义中说明,语言是人与人进行交流的工具,是一种表达方式。语言是自然形成的,促进了交流更多的信息。计算机语言,也就是人与计算机交流的工具,Java是一门高级语言,高级语言相对来说是易学的,它如同自然语言,也是为了交流更多的信息(利用计算机完成更多自定义事情)
语言是预先定义好的,我们所说的汉语文字,英语文字等,它们是从事先定义好的基本规则,在基础上抽象出来的一套规则,从而组成了丰富的语言生态,生成了更多事物的表示形式。就拿英语来说,由24个字母来组成不同的单词来表达不同的事物,与不同事务间的联系:联系词,这抽象成了一套规则,而我们学习的Java语言,与它是相似的。钢琴通常有88个键,包括黑键和白键,用来演奏不同的音乐。Java的规则形式类似与它们,由基本规则,进一步定义,再抽象出来一套规则。
计算机的本质语言是机器语言,它由二进制指令组成(0和1)。一切程序在最底层都是以二进制形式运行的。Java语言的设计思维是面向对象,Java代码最后会转换为机器语言在计算机上运行,至于中间过程先不论。我们需要知道的是Java语言是与上述语言的定义是相似的。
Java是一门面向对象的语言,这是接触Java最先知道的。我们认为学习Java应该先从理解这一句话开始,不要先开始学习或者记忆基本语法,因为基本的语法规则,都是以此为基础衍生出来的,我们应该明白它的设计理念与各种细节的目的,这样才能学得透彻而有趣。
面向对象,就是将万事万物都可以成看成对象。对象是对一个事物的抽象,一个人、一棵树、树上的叶子、一个星球,都可以看成对象。一个对象,它也有它的一些基本的属性和行为,我们可以将这些看成属于对象的元素,它们可以什么都是,如一个人姓名、性别、爱好、职业等。而类是对象的抽象,将一些具有相似元素的对象归为一类,动物类里面有狗对象和猫对象等等,而狗类里面有哈士奇对象和金毛对象等等。类里面对对象相似的属性与行为进行了抽取,如狗类里面有品种,毛色,一般行为等,这样每个属于该类的对象,都有这这些预定的基本元素。对象是依靠类来创建的(涉及语法规则),而类是通过对象抽象出来的,对二者会有相对性而言,不能说谁先存在。因为它们都是人为定义的,只是为了达成目的。
类与类之间也有着不同种定义方式,它们定义的目的不同,但是都是为了Java语言的可扩展性(自定义),类的种类有:普通类,抽象类,接口类,枚举类,内部类,匿名类。可以思考一下他们的命名,但也不必过多考虑,从它们的实际用处可以更好的理解,下面可以结合下文的类的基本特征来看,多去思考他们各自的目的与联系。
-
普通类(Class):普通类用于描述具体的对象,包含对象的属性和行为(可以命名为方法)。在实际开发中,我们会创建许多普通类来表示各种不同的实体,如人员、产品、订单等。
-
抽象类(Abstract Class):抽象类用于作为其他类的基类(也就是父类,下文会讲继承关系),提供一些通用的行为和属性。它可以定义一些抽象方法(对方法的抽象,使用的时候方便自定义行为),要求子类必须实现这些方法,同时也可以包含具体的方法,提供一些默认的实现。
-
接口(Interface):接口用于定义类的行为规范,实现(继承)了接口的类必须实现接口中定义的所有方法(接口中会有抽象出来的方法,使用的时候自定义)。接口通常用于定义对象的能力和功能(可以理解为一种工具,更好地服务其他类,更为简便,类似的功能在一般类中自定义时不需要重新去写了)。
-
枚举类(Enum):枚举类用于定义枚举类型,它包含了一组预定义的枚举常量。枚举类通常用于表示一组相关的常量值,例如表示星期、月份、状态等。(这是为了方便拿来用)
-
内部类(Inner Class):内部类是定义在其他类内部的类,它可以用于实现一些封装和逻辑上的组织。
-
匿名类(Anonymous Class):匿名类通常用于创建临时的类实例。
为了方便而规范地去定义各种类与类与类之间的特殊联系性,Java定义了两种修饰符:访问修饰符与非访问修饰符。
-
访问修饰符(Access Modifiers):
- public:表示公共访问权限,可以被任何类访问。
- protected:表示受保护访问权限,可以被同一包内的类和子类访问。
- default(包访问权限,没有关键字修饰):表示包内访问权限,可以被同一包内的类访问。
- private:表示私有访问权限,只能在定义该成员的类内部访问。
-
非访问修饰符(Non-access Modifiers):
- static:表示静态成员,可以通过类名直接访问,不需要创建对象。
- final:表示不可改变的,可以用于修饰类、方法、字段,分别表示不可继承、不可重写、不可修改的常量。
- abstract:表示抽象的,可以用于修饰类和方法,分别表示抽象类和抽象方法。
- synchronized:表示同步的,可以用于修饰方法,表示该方法是同步方法,多个线程不能同时访问。
- volatile:表示易变的,可以用于修饰字段,表示该字段可能会被多个线程同时访问,需要特殊处理。
- transient:表示瞬时的,可以用于修饰字段,表示该字段不会被序列化。
- native:表示本地的,可以用于修饰方法,表示该方法是由本地代码实现的。
Java基于面向对象的设计理念,因此在它的类与类的关系中,或者说是为了将类彼此之间联系起来,有了4中基本特征(规则):
-
封装:Java允许将数据和方法封装在对象中,通过对象的接口来访问和操作数据,从而实现了数据的隐藏和保护。
-
继承:Java支持类之间的继承关系,允许一个类继承另一个类的属性和方法,从而实现了代码的重用和扩展。
-
多态:Java支持多态性,允许不同的对象对同一个消息做出不同的响应,提高了代码的灵活性和可扩展性。
-
抽象:Java支持抽象类和接口的定义,可以通过抽象类和接口实现对系统的抽象描述,提高了代码的可维护性和可扩展性。
由于这些特性,Java能够更好地支持面向对象的编程范式。
其中只是简单的介绍它们,仅作参考,具体还请查阅其他资料。
Java语言的丰富都是在基本的规则上建立起来的,了解它预定义的基本规则,再去学习它的丰富的规则,能更好地将它作为工具去使用。
将此写下,一是为了加深理解,二是为了获得一些建议与指正,欢迎评论。
感谢观看。