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 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 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的五个基础特性。
这一章节就到这里,谢谢。
-----------------------------------
版权声明:本文为博主原创文章,未经博主允许不得转载。
JAVA狗叫源代码_从头认识java-1.1 编程语言抽象过程以及java的基础特性相关推荐
- JAVA狗叫源代码_自制超声波驱狗器
前言 有些时候,你会发现有的狗看见你就会不停的叫,这很烦.大多数时候,这不是狗的问题,而是狗主人的问题.如何让狗停止大叫,这是本文要讨论的问题. 超声波驱狗器是一种让狗停止大叫的装置,可以分为两类: ...
- java虚拟机是干吗的_从头开始学习-JVM(二):为什么java需要JVM(Java虚拟机)?...
前言 在我们对java的越发了解之后,我们开始把注意力投到了java虚拟机这一块. 我们意识到,java所谓的"Write Once,Run Anywhere"的特性,就是基于JV ...
- Python后端转JAVA最快多久_【动力节点】老杜支招:Java小白学习入门攻略,涵盖学习路线...
动力节点在B站的直播相当好,相当受欢迎,教学总监亲自解惑.零基础学Java的同学确实把思路打开不少. 回顾:11月14日晚8:00,杜老师在动力节点B站大咖直播间,首次开播与粉丝面基,本场直播不吹,不 ...
- java 等待几秒_问懵逼:请站在 JVM 角度谈谈 Java 的锁?
存在的问题 自旋锁 自适应自旋 Java 对象的内存布局(重要) synchronized 锁升级流程 偏向锁 轻量级锁 重量级锁 可重入 悲观锁(互斥锁.排他锁) <Java 2019 超神之 ...
- java 中张孝祥老师_谁有传智博客张孝祥老师的Java视频——必须是完整的
报告楼主,我有! 传智播客官网 itcast 传智播客J2EE全套视频教程,是目前覆盖面最广,项目最真实的视频教程 传智播客Java EE视频教程 <传智播客AJAX视频教程> <传 ...
- 学java之前要学_之前学过C#,现在还想学java,一般要学多久时间?
之前学过C#,现在还想学java,一般要学多久时间? (2011-06-22 22:24:55) 标签: 新贵 杂谈 曩昔学功C#,现在还念学java,普通要学多暂时光?出有最好答案那要望您学的基础了 ...
- java名侦探柯南游戏大全_孩子们的游戏(圆圈中最后剩下的数),Java代码实现思路分享...
下面给大家分享的是一个Java代码实例,下面一起来了解一下吧. 抽象建模能力 题目: 让小朋友们围成一个大圈,之后,随机指定一个数m,让编号为0的小朋友开始报数. 每一次,喊到了m-1的那个小朋友要出 ...
- java 修改源码_再谈给应用程序diy启动画面和java源代码补丁修改
再谈给应用程序diy启动画面和java源代码补丁修改 2006-8-21 16:18 6365 再谈给应用程序diy启动画面和java源代码补丁修改 2006-8-21 16:18 6365 搞diy ...
- java 聊天工具源代码_简易聊天软件源码
[java]代码库import java.io.*; import java.net.*; import java.util.*; public class ChatServer { boolean ...
最新文章
- Python+selenium自动化测试:报错:TypeError: 'WebElement' object is not iterable
- Android Studio 打开提示Invalid Gradle JDK configuration found错误
- [译] 每天一段 Spring 5 官方文档(5.1.4.RELEASE)—— Spring Framework Overview 06
- java如何对List集合中的元素进行排序(请收藏)
- 我不是天生的飞鸽传书2011
- Algorithms - Insertion Sort - 插入排序
- 测试文档模板_学会word2007创建自定义模板的方法,让你新建的文档结构都一致...
- 教你编写第一个人工智能程序
- 平稳时间序列模型的统计性质
- php登陆注册加密函数,php加密函数_php用户自定义加密函数
- 基于SSD1306的OLED的驱动学习(二):SSD1306的寻址方式
- 海量实时广告流平台(DSP广告系统)架构设计与实践
- matlab 无刷电机,无刷直流电机MATLAB仿真模型
- Windows2000下IE5升级到IE6
- 电脑怎么安装xp系统原版镜像
- 电脑网络异常故障解决办法
- HDU-4826 Labyrinth
- 虚拟主播合成视频使用教程
- kaldi 的安装和thchs30语音识别测试
- 说说北大软微那些事儿
热门文章
- Python语言程序设计基础 第二版(嵩天著)课后答案第六章
- [置顶] 忆往昔,看今朝(2012-2013年总结)
- .NET DataGridView 单元格添加日历选择控件
- python压缩文件tar_python 实现tar文件压缩解压的实例详解
- Unity案例-实现心电图效果
- 论文笔记:Universal Adversarial Triggers for Attacking and Analyzing NLP
- python判断素数_小白学Python | 你还在说你入不了门吗
- uva 11021 Tribbles 麻球繁衍 概率
- 数据安全--15--去标识化技术
- Sophos XG Firewall:如何使用Windows Server 2012为企业无线身份验证配置RADIUS