Java基础教程:面向对象编程

内容大纲

  

Java语言概述

Java语言特点

1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象。总之,Everything is object!

2.平台无关性。Java为解释型语言,编译器会把Java代码变成“”“中间代码”,然后在JVM上解释执行。

3.Java提供了很多内置的类库,这些类库简化了开发人员的程序设计工作,同时缩短了项目开发时间。

4.Java语言提供了对Web应用的支持

5.Java语言提供了较好的安全性和健壮性

为了增强程序的安全性,Java语言提供了一个防止恶意代码攻击的安全机制(数组边界检测和byte code校验等)

Java的强类型机制、垃圾回收机制、异常处理和安全检测机制使Java语言编写的程序具有健壮性。

Java Development Kit

  JDK究竟是何方神圣?

    

类加载器

  Java类加载器(英语:Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。学习类加载器时,掌握Java的委派概念很重要。

  每个Java类必须由某个类加载器装入到内存。Java程序可以利用外部库(即由其他作者编写的软件库)。

  JVM中有3个默认的类加载器:

    1. 引导(Bootstrap)类加载器。由原生代码(如C语言)编写,不继承自java.lang.ClassLoader。负责加载核心Java库,存储在<JAVA_HOME>/jre/lib目录中。
    2. 扩展(Extensions)类加载器。用来在<JAVA_HOME>/jre/lib/ext,或java.ext.dirs中指明的目录中加载 Java的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。该类由sun.misc.Launcher$ExtClassLoader实现。
    3. Apps类加载器(也称系统类加载器)。根据 Java应用程序的类路径(java.class.path或CLASSPATH环境变量)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。该类由sun.misc.Launcher$AppClassLoader实现。

  每个类装载器有一个父装载器(parent class loader)。

垃圾回收机制

  Java语言提供了垃圾回收器来自动检测对象的作用域、实现自动地、把不再被使用的存储空间释放掉。

  垃圾回收器主要完成三部分任务:分配内存确保被引用对象的内存不被错误地回收以及回收不再被引用的对象的内存空间

  给对象引用赋值为null,并且该对象无引用时,GC会标记该对象为垃圾,并在后面一个不确定的时间内回收垃圾。所谓不确定是指什么时间回收,程序员无法控制。

Java开发环境配置

菜鸟教程

基本数据类型及其包装类

  Java不仅支持下述8种基本数据类型,还为这8种基本数据类型提供了对应的包装类,通过这些包装类,我们就可以将上述基本数据类型当做Java中的类对象来处理了。值得说明的是,Java程序中可以直接操作基本数据类型,但是某些情况下需要将它们看成对象来处理,这些情况下就需要借助于Java API中基本数据类型对应的包装类来处理了。

  

举例布尔包装类提供的方法摘要:

    

自动转换机与强制转换

  数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中 “ 悄然 ” 进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换强制类型转换则必须在代码中声明,转换顺序不受限制。

自动数据类型转换

  

强制数据类型转换

  强制转换的格式是在需要转型的数据前加上 “( )” ,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确。

基础语法

While循环

Do...While循环

For 循环

For...Each循环

If语句

Switch语句

核心类库

  

  

面向对象程序设计(OOP)

类与对象

  • (Class):定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作
  • 对象:是类的实例。

  其中类别(Class)定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。举例来说,”这个类会包含狗的一切基础特征,即所有“狗”都共有的特征或行为,例如它的孕育、毛皮颜色和吠叫的能力类可以为程序提供模版和结构。一个类的方法和属性被称为“成员”。 我们来看一段伪代码:  

  

  对象(Object)是类的实例。对象有时会对应到现实世界中的事物,举例来说,一个图形程序可能有圆形、矩形与画面等对象,一个在线购物系统可能有购物车、顾客与产品等类。[7]。有时对象会表示更抽象的实体,比如一个被打开的文件或是一个提供美国惯用量测转换的服务。每个对象就是一个特定类的实例(例如,名称是“玛丽”的对象可能是类雇员的一个实例)。程序在面向对象编程当中被视为方法,变量被视为成员或属性。例如,“”这个类列举狗的特点,从而使这个类定义了世界上所有的狗。而莱丝这个对象则是一条具体的狗,它的属性也是具体的。狗有皮毛颜色,而莱丝的皮毛颜色是棕白色的。因此,莱丝就是狗这个类的一个实例。一个具体对象属性的值被称作它的“状态”。(系统给对象分配内存空间,而不会给类分配内存空间。这很好理解,类是抽象的系统不可能给抽象的东西分配空间,而对象则是具体的。)

  假设我们已经在上面定义了狗这个类,我们就可以用这个类来定义对象:

  

  我们无法让狗这个类去吠叫,但是我们可以让对象“莱丝”去吠叫,正如狗可以吠叫,但没有具体的狗就无法吠叫

  类和对象就好比是“实型”和“1.23”,“实型”是一种数据的类型,而“1.23”是一个真正的“实数”(即对象)。所有的“实数”都具有“实型”所描诉的特征,如“实数的大小”,系统则分配内存给“实数”存储具体的数值。

面向对象程序设计

  面向对象程序设计(英语:Object-oriented programming缩写OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码方法。对象则指的是的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象[1][2]

  面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。目前已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用。此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它能够让人们更简单地设计并维护程序,使得程序更加便于分析、设计、理解。反对者在某些领域对此予以否认。

构造方法

  

构造方法的作用:(1).构造出来一个类的实例 (2).对构造出来个一个类的实例(对象)初始化。

创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字new来创建一个对象。
  • 初始化:使用new创建对象时,会调用构造方法初始化对象。

  

访问实例变量和方法

  

Java基础教程:面向对象编程[1]的更多相关文章

  1. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  2. Java基础教程——Socket编程

    Socket通常也称作"套接字",用于描述IP地址和端口,可以用来实现不同虚拟机或不同计算机之间的通信. --百度百科 套接字允许应用程序插入到网络中,并与插入到网络中的其他应用程 ...

  3. Java基础教程——UDP编程

    UDP:User Datagram Protocol,用户数据报协议 服务端: import java.net.*; import java.io.*; public class UdpServer ...

  4. Java基础教程:面向对象编程[2]

    Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...

  5. Java基础教程:面向对象编程[3]

    Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...

  6. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  7. Java基础教程:网络编程

    Java基础教程:网络编程 基础 Socket与ServerSocket Socket又称"套接字",网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个s ...

  8. Java基础教程:JDBC编程

    Java基础教程:JDBC编程 1.什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC A ...

  9. 2018.3.5 Java语言基础与面向对象编程实践

    Java语言基础与面向对象编程实践 第一章 初识Java 1.Java特点 http://www.manew.com/blog-166576-20164.html Java语言面向对象的 Java语言 ...

随机推荐

  1. http://preshing.com/

    http://preshing.com/ http://mechanical-sympathy.blogspot.com/

  2. MAC - 命令行中用sublime打开指定文件,使用ln命令建立软链接

    眼下sublime是mac下最好的文本编辑软件.常常要使用它打开一些文件,比如html,js,txt,json等文件,可是sublime2默认不支持在命令行下调用.经过研究发现能够用建立软连接的方式调 ...

  3. Linux中运行c程序,与系统打交道

    例一:system系统调用是为了方便调用外部程序,执行完毕后返回调用进程. #include <stdio.h> #include <stdlib.h> main() { pr ...

  4. 苹果证书的申请、unityoc交互基础

    注冊开发人员账号时:注意不要使用中国邮箱 99美金证书 :仅仅支持上传AppStore. 299美金证书:指的的我开发的应用是仅仅支持打包安装.企业级的. 假设申请了开发人员账号.也就是交了那几百美金 ...

  5. iOS 依据文本内容为TextView动态定义高度

    解决方式: 1.定义一个textview,在storyboard中设定该textview的constraints. 2.将高度的constraint定义到头文件里:(直接拖拽) @property ( ...

  6. Linux Sed命令具体解释+怎样替换换行符&quot;\n&quot;(非常多面试问道)

    Sed Sed是一个强大的文本处理工具 能够採用正则匹配.对文本进行插入删除改动等操作 Sed处理的时候,一次处理一行,每一次把当前处理的存放在暂时缓冲区.处理完后输出缓冲区内容到屏幕,然后把下一行读 ...

  7. Hibernate “N+1”查询问题

    Hibernate 默认情况下使用立即检索策略,即从数据库加载A对象时  会同时加载跟它关联的B,这样产生了不必要的对象集合查询,而且本来可以合并的sql要执行1+N次,因为一条select出所有的A ...

  8. 在 Ubuntu16.04上安装并使用Docker

    介绍 Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制[1].Docker ...

  9. SpringMVC hibernate增加多数据源 (SSHE/SYPRO增加多数据源为例)

    SpringMVC hibernate增加多数据源 (以类SSHE/SYPRO增加多数据源为例作说明) 注:适用与SpringMVC + Hibernate的项目.其它框架的仅仅能说作參考用 配置Sp ...

  10. 软件工程第3次作业——Visual Studio 2017下针对代码覆盖率的C/C++单元测试

    本项目Github地址(同时包括两个作业项目): Assignment03 -- https://github.com/Oberon-Zheng/SoftwareEngineeringAssignme ...