优点:语法

面向对象

内存管理

和最棒的跨平台可移植性

缺点:

JVM Java(虚拟机)

编译后的字节码与平台无关。

你的朋友不会买一台真正的Java机器,但是他们都会有Java虚拟机(通过软件实现)。此虚拟机可以读取与执行字节码。

你要做的事情

1.编写源代码文件,用Javac编译程序把文件进行编译,然后在某个Java虚拟机上执行编译过的字节码。

4步:1.源代码Party.java  2.执行Javac程序来编译Party.java。3.编译成为代码:Party.class  4.启动Java虚拟机(JVM)来运行Party.class文件。JVM会将字节码转换成平台能够理解的形式来运行。

J2ME(Micro Edition)

J2SE(Standard Edition)

J2EE(Enterprise Edition)

数组容器

String[] a = {"1", "2", "3", "4", "5"};

继承、 覆盖。

当你在设计类时,要记住对象是靠类的模型塑造出来的。

你可以这样看:

1.对象是已知的事物

2.对象会执行的动作

对象本身已知的事物,被称为实例变量。它们代表对象的状态(数据),且该类型的每一个对象都会独立的拥有一份该类型的值。

所以你也可以把对象当作实例。

对象可以执行的动作叫做方法。在设计类时,你也会设计出操作对象数据的方法。对象带有读取或操作实例变量的方法是很常见的情形。举例来说,闹钟对象会有个变量来保存响铃时间,且会有getTime()与setTime()这两个方法来存取该时间。

因此说对象带有实例变量和方法,但它们都是类设计中的一部分。

二、类和对象两者之间的有什么不同?

类不是对象(却是用来创建它们的模型)

类是对象的蓝图。它会告诉虚拟机如何创建某种类型的对象。根据某类创建出的对象都会有自已的实例变量。举例来说,你可以根据按钮类来创建出许多大小、颜色、文字等不同的按钮。

也可以这样说,对象就好比通信薄中的一笔数据,通信薄的每张卡片都有相同的空白字段(实例变量)。填入新的联络人就如同创建新的实例(对象),填入卡片的数据代表联络人的状态。

这个卡片类上的方法就是你会对卡片作的事情:getTel()、changeAddress()、deleteCard()等。所以每张卡片上能够执行相同的操作,但取出的结果应该是依每张卡片各自独立的。

三、创建你的第一个对象

要作出哪些东西才会运用对象呢?你需要两个类。(例如说Dog、AlarmClock和Television等)一个是要被操作于对象的类,另外一个是要来测试该类的类。测试用的类带有main()并且你会在其中建立与存取被测的对象。

本章后续章节的内容会有许多双类的范例。测试用的类会被命名为“受测试类的名称”+ TestDrive。例如说要测试Bungee这个类,我们会作出一个带有main()的BungeeTestDrive。它会创建出Bungee的对象,并使用圈点(.)符号所代表的操作数来存取该对象的变量与方法。看过下面的范例后就应该更清楚了。

1.编写类

class Dog{

  int size;

String breed;

  String name;

  void brak(){

System.out.println("Ruff, Ruff!");

}

}

2.编写测试用的类

class DogTestDrive{

public static void  main(String[] args){

//Dog测试码

}

}

3.在测试用的类中建立对象并存取对象的变量和方法

class DogTestDrive{

public static void main(String[] args){

Dog d = new Dog();

d.size =  40;

d.bark();

}

}

如果你曾经学习过面向对象的话,你会知道我们并没有用到封装,第4章会讨论这个问题。

Head First Java.(第2版)的更多相关文章

  1. Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

    Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...

  2. 《Thinking In Java第四版》拾遗

    <Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...

  3. Java实现简单版SVM

    Java实现简单版SVM 近期的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的.         之所以说是简单版,由于没实用到拉格朗日,对偶,核函数等等.而 ...

  4. 工厂方法模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次 ...

  5. 抽象工厂模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操 ...

  6. 建造者模式(Java与Kotlin版)

    前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) 抽象工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比J ...

  7. 《Effective Java(中文第二版)》【PDF】下载

    <Effective Java(中文第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382186 Java(中文第二版)& ...

  8. 《Effective Java中文版第二版》读书笔记

    说明 这里是阅读<Effective Java中文版第二版>的读书笔记,这里会记录一些个人感觉稍微有些重要的内容,方便以后查阅,可能会因为个人实力原因导致理解有误,若有发现欢迎指出.一些个 ...

  9. 《Effective Java 第三版》新条目介绍

    版权声明:本文为博主原创文章,可以随意转载,不过请加上原文链接. https://blog.csdn.net/u014717036/article/details/80588806前言 从去年的3月份 ...

  10. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

随机推荐

  1. 【python】闭包

    一.闭包满足的条件 闭包 = 内部函数 + 定义函数的环境 条件一 : 内部函数 条件二: 外部环境的变量 二.实战 def outer(): x = 10 y = 20 def inner(): p ...

  2. 快速搞定Word,提高你的工作效率

    调整字体大小快捷键   ctrl+中括号  []分别减小字体加大字体 取消显示回车符号  文件->选项->显示->取消段落标记 对比两列内容是否相同    在第三列输入以下公式=IF ...

  3. Django学习笔记之视图高级-HTTP请求与响应

    Django限制请求method 常用的请求method GET请求 GET请求一般用来向服务器索取数据,但不会向服务器提交数据,不会对服务器的状态进行更改.比如向服务器获取某篇文章的详情. POST ...

  4. MySQL表介绍

    MySQL InnoDB表介绍 一.索引组织表 在InnoDB引擎中,表都是根据主键顺序存放的.这种存储方式称为索引组织表,在InnoDB引擎中,每张表都有逐渐.如果没有显示定义主键,则引擎会按照以下 ...

  5. 查看CentOS版本

    1. 查看核心版本 $ uname -or $ uname -a 2. rpm $ rpm --query centos-release [On CentOS] $ rpm --query redha ...

  6. 【C++】ubuntu中读取指定目录中的所有文件

    摘要:ubuntu系统下,C++程序读取指定文件夹中多个文件,保存文件名列表.文件名没有规律且不考虑读取子文件夹中的文件. 系统配置:ubuntu16.04, cmake编译 首先安利一个函数,输入s ...

  7. android SDK 安装

      Android SDK在线更新镜像服务器 参见:http://www.androiddevtools.cn/   1. 启动 Android SDK Manager ,打开主界面,依次选择『Too ...

  8. WebBrowser2控件使用

    一 简介 这是一个IE实现的com接口, 简单的浏览一个网页可以用这个东西, 局限性是IE现在有好多版本, 不同版本对标准的支持是不一样的, 而且将来不排除windows把IE给干掉了 二 使用 1 ...

  9. [纯C#实现]基于BP神经网络的中文手写识别算法

    效果展示 这不是OCR,有些人可能会觉得这东西会和OCR一样,直接进行整个字的识别就行,然而并不是. OCR是2维像素矩阵的像素数据.而手写识别不一样,手写可以把用户写字的笔画时间顺序,抽象成一个维度 ...

  10. 使用 Angular Console 提升开发体验

    Angular Console Angular Console 是一个用于扩展 Angular CLI 的强大工具,通过提供一个图形界面的形式,方便开发者使用 CLI 的功能. Angular CLI ...