zoukankan      html  css  js  c++  java
  • 从头认识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的五个基础特性。


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

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

    目录


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

  • 相关阅读:
    Chrome 扩展及应用开发
    nslinebreakbywordwrapping or nslinebreakcharwrapping
    动态计算uilabel的高度,
    长度还是靠谱,
    dictionary allkeys
    适配
    Linux 下phpstudy的安装使用补充说明
    mysql使用Navicat 导出和导入数据库
    Mysql命令mysql:连接Mysql数据库
    远程连接阿里云服务器ping不通ip解决方案
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896706.html
Copyright © 2011-2022 走看看