文档章节

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

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 1135
阅读 27
收藏 0

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

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的五个基础特性。


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

-----------------------------------

目录


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

本文转载自:http://blog.csdn.net/raylee2007/article/details/49100837

共有 人打赏支持
raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
私信 提问
Clojure 语言的设计

via:AVOS Cloud Blog 基于 JVM 的决定 Clojure 能够吸引人的很重要一点是它是 JVM 之上的语言,这个决定非常关键。 首先,因为根植于 JVM 之上,并且做到了跟 Java 语言的相互调用,它能吸引...

都比zunxi
2014/08/21
554
0
[敏捷JAVA读书笔记-java基础部分] 第一章

今年年初到海淀图书城购买了一个Agile Java(敏捷java),匆匆翻看了几章就束之高阁,最近在班车上无事可做,拿出来重读一下,一方面学一下TDD,一方面梳理一下自己的JAVA基础知识,读书的时间...

inferrrrrr
2010/05/11
398
1
Scala学习笔记(1):Scala语言的来源

Scala是“scalable language”,也就是“可扩展”语言是意思。Scala是一种静态类型语言,它融合了函数式编程和面向对象编程和的思想,前者让它可以很方便快速地构建可用程序,后者则让其具有...

chengyao2
2013/04/28
0
0
java 7 入门书籍

一、Java从入门到精通 《Java从入门到精通(第3版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识。 《Java从入门到精通(第3版...

modernizr
2014/05/15
6.9K
9
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

git常用命令

首先打开git bash方式可以直接鼠标右击 或者在开始菜单(windows系统,苹果暂时不要问我,等我有钱买苹果电脑告诉你们0.0) 打开界面如下 1.查看远程仓库地址 git remote -v 2.创建本地分支 ...

熊小熊会写代码哦
13分钟前
2
0
离屏Canvas — 使用Web Worker提高你的Canvas运行速度

现在因为有了离屏Canvas,你可以不用在你的主线程中绘制图像了! Canvas 是一个非常受欢迎的表现方式,同时也是WebGL的入口。它能绘制图形,图片,展示动画,甚至是处理视频内容。它经常被用...

嫣然丫丫丫
15分钟前
2
0
SpringBoot 整合 BeetlSQL

SpringBoot 整合 BeetlSQL 1. beetlsql介绍 BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应...

Jeff_Regan
16分钟前
1
0
UNIGUI-DBGRID的统计行的使用

关键步骤: 1、设置DBGRID的summary.enabled:=true 2、打开DBGRID的columns字段,设置DBGRID对应的column的showsummary:=true; 3、写入uniDBGRID.onColumnSummary事件: procedure TframeCa......

dillonxiao
18分钟前
2
0
MySQL语法速查1:基础命令篇

[TOC] 1.1. 关于 SQL SQL 是 Structure Query Language(结构化查询语言)的缩写,是关系型数据库的基本语言,由 IBM 在 20 世纪 70 年代开发出来,作为 IBM 关系数据库原型 System R 的原型...

whoru
23分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部