首页 技术 正文
技术 2022年11月15日
0 收藏 703 点赞 3,268 浏览 3231 个字

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

内容大纲

  Java基础教程:面向对象编程[1]

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基础教程:面向对象编程[1]

类加载器

  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中基本数据类型对应的包装类来处理了。

  Java基础教程:面向对象编程[1]

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

  Java基础教程:面向对象编程[1]  

自动转换机与强制转换

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

自动数据类型转换

  Java基础教程:面向对象编程[1]

强制数据类型转换

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

基础语法

While循环

Java基础教程:面向对象编程[1]

Do…While循环

Java基础教程:面向对象编程[1]

For 循环

Java基础教程:面向对象编程[1]

For…Each循环

Java基础教程:面向对象编程[1]

If语句

Java基础教程:面向对象编程[1]

Switch语句

Java基础教程:面向对象编程[1]

核心类库

  Java基础教程:面向对象编程[1]

  Java基础教程:面向对象编程[1]

面向对象程序设计(OOP)

类与对象

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

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

  Java基础教程:面向对象编程[1]

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

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

  Java基础教程:面向对象编程[1]

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

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

面向对象程序设计

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

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

构造方法

  Java基础教程:面向对象编程[1]

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

创建对象

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

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

  Java基础教程:面向对象编程[1]

访问实例变量和方法

  Java基础教程:面向对象编程[1]

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,996
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,510
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,353
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,137
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848