从头认识java-1.1 编程语言抽象过程以及java的基础特性

这一章节我们来简单的聊聊对象抽象的过程。

1.所有语言都提供抽象机制。

例如:a=1(下面都是举例子,里面所提及的内容有可能是错误的,因为笔者没学过机器码和汇编)

在机器码当中:1000100111011000

在汇编当中:mov a,1

在C语言当中:a=1

在java当中:

class Test(){
   a=1;
}

从上面的不同的表示里面可以发现,语言都是在不断的抽象,从最开始的0和1,一直到java的创建一个对象然后在对象里面赋值,就是一个不断抽像的过程。

同时,也是编程语言努力把问题空间(实际业务)与解空间(计算机)联系起来的表现。

解释:

1.在机器码时代,实际业务跟计算机直接的连接是非常困难的,大家可以看到a=1这么简单的操作,就是一大段0和1,谁记得住,当然,记得住的都是强人。

2.在汇编时代,编程语言进步了,做出了第一次的抽象,把0和1抽象成某些句子,可以利用简单的句子来描述a=1,但是由于抽象程度有限,因此,编程的复杂程度还是比较高

3.到了c语言时代,可以说抽象进行了一次飞跃,C语言基本能够处理日常问题,而且性能非常卓越

4.到了java时代,提出了oop,使得实际业务的描述跟计算机的解决方案的描述已经比较吻合

总结:

4个时代的变迁,性能越来越低,但是可读性越来越高,时至今日,除非是高并发互联网企业,一般来说性能不是最大问题,瓶颈出现在人上面,因此,现在可读性反而显得更加重要。

2.java的基本特性

1)万物皆对象。

对象是一个奇特的变量,它既可以存储数据,也可以执行操作,我们可以抽象问题的构件来组成程序。

例如:名字是“jack”的狗会叫的。

class Dog(){
  private String name;
  private String id;

  public void bark(){

  }
}

我们建立狗的对象,然后这个狗有一个属性“名字”,而且它会叫,因此有一个方法“bark”

在对象狗里面,既可以存储狗的名字,也可以执行狗叫的方法。

2)程序是对象的集合,它们通过发送信息来告诉彼此需要做什么(说白了,就是调用对象的方法)。

package com.ray.ch01;

public class Test {
	public static void main(String[] args) {
		Dog dog = new Dog();
		dog.setName("jack");
		dog.bark();
	}
}

class Dog {
	private String name;

	public void bark() {
		System.out.println(name + " is barking");
	}

	public String getName() {
		return name;
	}

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

}

在上面的程序中dog.bark()就是调用了Dog对象的bark方法。

3)每个对象都有由其他对象组成的存储。

package com.ray.ch01;

import java.util.ArrayList;

public class GroupOfDogs {
	private ArrayList<Cat> catList;

	private void initCatList() {
		for (int i = 0; i < 5; i++) {
			Cat cat = new Cat();
			cat.setName("rose" + i);
			catList.add(cat);
		}
	}

	public static void main(String[] args) {
		new GroupOfDogs().initCatList();
	}
}

class Cat {
	private String name;

	public void bark() {
		System.out.println(name + " is barking");
	}

	public String getName() {
		return name;
	}

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

}

从上面的代码可以看出,特别是private ArrayList<Cat> catList,这一个存储就是通过其他对象来完成的。

4)每个对象都有类型

package com.ray.ch01;

public class Bird {
	public static void main(String[] args) {
		Bird bird = new Bird();
	}
}

上面的代码,bird是一个对象,它的类型是Bird,同时bird这个对象,也是Bird这个类型所具象出来的一个实例。

5)某一特定类型的对象,都可以接收同样的消息。

package com.ray.ch01;

public class Bird {
	private void say() {
	}

	public static void main(String[] args) {
		Bird bird1 = new Bird();
		bird1.say();
		Bird bird2 = new Bird();
		bird2.say();
	}
}

上面的代码建立两个不同的对象bird1和bird2,他们是同一个类型Bird,因此,它们可以接收同样的信息,也就是我需要调用Bird这个类型里面的say方法时,bird1和bird2都可以调用。

最后,对象是具有独立的存储、方法、标识,在jvm里面,每一个对象都是独立的,具有唯一id。

这一章节简单介绍了编程语言抽象过程,以及介绍了java的五个基础特性。

这一章节就到这里。谢谢。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-26 20:15:40

从头认识java-1.1 编程语言抽象过程以及java的基础特性的相关文章

OOP导论系列---抽象过程

OOP导论系列---抽象过程 所有编程语言都提供抽象机制.可以认为,人们所能解决的问题的复杂性直接取决于抽象的类型和质量.所谓"类型"是指"所抽象的是什么?"你可以抽取待求解问题的任何概念化构件,如:天空.海洋.山脉.草地.建筑.树木.银行.出纳.取款.交易.服务.几何.圆形.三角形.长方形.正方形等... 面向对象程序设计的特性: 万物皆为对象.将对象视为奇特的变量,她可以存储数据(域:对象里的字段),除此之外你还可以要求她在自身上执行操作(行为:对象的方法).

大话设计模式_抽象工厂模式(Java代码)

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类. 简单描述:有多种抽象产品,并且每种抽象产品都有多个具体产品.一个抽象工厂,提供多个具体工厂,每个工厂则提供不同种类的具体产品. 大话设计模式中的截图: 例子代码: AbstractProductA类: 1 package com.longsheng.abstractfactory; 2 3 public abstract class AbstractProductA { 4 5 public abstract v

非专业码农 JAVA学习笔记 3 抽象、封装和类(2)

(2).静态域-放在内存公共存储单元,不放在特定的对象,用static修饰 (续上一篇<非专业码农 JAVA学习笔记 3 抽象.封装和类(1)>...) (3).静态初始器-由static引导的一对大括号括起来的语句组,作用跟构造函数相似 (4).最终域-final引导的,值在整个过程都不发生改变的 5.方法 (1)方法的定义:修饰词1 修饰词2…返回值类型 方法名(参数) throw[异常列表] 这里个人经验就是注意定义了返回值的方法,要在方法体里面增加return 该类型变量:此外遇到if

简单的初步认识Java这门编程语言

JAVA的诞生:Java于1995年由SUN公司研发推出. Java发展:因为其使用免费,众多开源插件和类库,先进的语法面向对象等特性,使得其受到开发人员的喜爱和发展.并且因为其免费开源,有许多的无名工程师.极客在为java进行完善和开发. Oracle:SUN公司于09年被Oracle(甲骨文)收购,所以java现为Oracle旗下的编程语言. 兼容java的主流的数据库:MySQL.DB2.SQLServer.Oracle 跨平台的重要性:Windows是个人PC的主流操作系统,而服务器操作

Java内存管理-程序运行过程(一)

勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 相信在做Java开发的伙伴一定知道 JVM(Java Virtual Machine(Java虚拟机)!本系列会开启对JVM相关的知识的探索和总结,让我们一起踏入JVM的学习之旅中,去了解和发现更加精彩的Java世界! 正如奥古斯特·罗丹 说过:世界上不是缺少美,而是缺少发现美的眼睛.Java的世界也是如此! 本文地图: 1.什么是程序 在计算机领域当中,程序就是为了能够让计算机执行

JAVA及JVM的运行过程

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器.它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序. 编译器负责把Java程序转成Class文件,方便Jvm来读取它. Jvm是java虚拟机,其实它就是解释器,把Class文件中的命令转成某种平台的命令,比如把Java命令转成Windows下的命令,然后Java程序就执行了. 这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编

非专业码农 JAVA学习笔记 3 抽象、封装和类(1)

抽象.封装和类(1)待续 首先声明,今天接了太多个电话,两个小时看书被打断多次,缩减为一个小时.不管了,走马观花也要看完几个小节: (一)抽象与封装:抽象-抽取和研究实际性问题加以考察(抽象-尼玛抽出对象…) 封装:相关操作封存在命名空间.类等 (二)java的类: 1.系统定义的类(用于import中引入) 类名 作用 Java.lang 语言包,默认加载 Java.io, In out:文件数据流操作产生的输入输出流 Java.util 低级工具,如时间data类,变成数组vector类,h

七:Java之封装、抽象、多态和继承

本文章介绍了关于Java中的面向对象封装.抽象.继承.多态特点 Java面向对象主要有四大特性:封装.抽象.继承和多态. 一.封装 封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成"类",其中数据和函数都是类的成员. 在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sle

centos服务器上java环境和tomcat部署过程以及mysql简单修改

本文记录了centos安装完成后java.tomcat部署以及针对olds网站系统mysql数据库的修改,红色部分为实际操作的过程. 初始条件:centos安装完成(x86桌面版本5.5),mysql安装完成. 基本知识:会使用centos终端(下文命令中最前面的#符号是默认的终端命令行提示符,不需要实际输入). 一.JAVA安装 1. centos自带了OPENJDK,一般不用这个,需要卸载. 用命令java -version 查看java版本,会有下面的信息: javaversion "1.