Java基础串理
StephaniaBr
8年前
<h2>今天抽了些时间翻阅资料复习一下Java部分基础知识,现整理笔记在此以备巩固。<br> <br> Java主要应用领域<br> <br> –<strong>企业级应用</strong>:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。<br> –<strong>Android平台应用</strong>:Android应用程序使用Java语言编写。Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。<br> –<strong>移动领域应用</strong>,主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。<br> <br> java语言起源、特点<br> <br> <strong>起源:</strong> java之父Jgosling与其团队在开发”Green”项目时,发现C缺少垃圾回收系统、可移植的安全性、分布式程序设计、和多线程功能。于是,他们想要一种易于移植到各种设备上的平台。<br> <br> <strong>特点:</strong> Java从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言、C++语言完全相同。因此Java语言是易学的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。<br> <br> 但同时,Java是一个纯粹的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。<br> <br> JDK1.5引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱。<br> <br> Java语言是强制面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。<br> <br> Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。<br> <br> Java语言是健壮的。Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。<br> <br> Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查。<br> <br> Java语言是解释型、跨平台的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统的解释器中运行。<br> <br> Java语言是原生支持多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。<br> <br> Java基础模块图解<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/017aa242a28d7bb2b81643701c9c98d3.png"></h2> <p><br> 面向对象<br> <br> <strong>面向对象与面向过程</strong><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/65e5cec876e3da78a5652396aeeaee84.png"><br> <br> 学习面向对象内容的<strong>三条主线</strong>:<br> <br> 1. java类及类的成员;<br> 2. 面向对象的三大特征;<br> 3. 其它关键字。<br> <br> <strong>1. java类及类的成员</strong><br> <br> 面向对象程序设计的重点是类的设计。Java中用类class来描述事物,类主要由属性、方法(行为)组成,关于属性、方法相关概念可以简单理解成:<br> Field = 属性 = 成员变量,Method = (成员)方法 = 函数<br> <br> 类成员的基础构成如下:<br> <br> <img alt="<code>这里写图片描述</code>" src="https://simg.open-open.com/show/56c5971b0dd19099230dd7af8a5377a1.png"><br> <br> 还可以是这样:<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/0faa7272b68eae39f1dd7f933144583e.png"><br> <br> 有了类和类的成员,要如何使用它们呢?通过java类的实例化,即创建类的对象。一般开发中,<br> <br> 先去找具有所需功能的对象来用<br> 如果该对象不存在,那么创建一个具有所需功能的对象<br> 这样简化开发并提高复用<br> <br> 类和对象的关系:<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/ed6a63b3727f5d47b30500f3afe95496.png"><br> <br> 通过对象实例使用类和类的成员:<br> <br> 使用new +构造器创建一个新的对象;<br> 使用“对象名.对象成员”的方式访问对象成员(包括属性和方法);<br> 如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰。<br> 在一个类中:类中的方法可以直接访问类中的成员变量或其它方法。(例外:static方法访问非static,编译不通过。)<br> <br> <strong>2.面向对象的三大特征</strong><br> <br> 封装 (Encapsulation)<br> 继承 (Inheritance)<br> 多态 (Polymorphism)<br> <br> <strong>封装</strong> (Encapsulation)<br> <br> 使用者对类内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题,如:<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/11c520b2dfb5052d219a5e9c2f19751a.png"><br> <br> Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:<br> <br> 隐藏一个类中不需要对外提供的实现细节;<br> 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;<br> 便于修改,增强代码的可维护性;</p> <pre> public class Animal{ //将属性legs定义为private,只能被Animal类内部访问 private int legs; //定义方法 eat() 和 move() public void setLegs(int i){ if (i != 0 && i != 2 && i != 4){ System.out.println("Wrong number of legs!"); return; } legs=i; } public int getLegs(){ return legs; } } public class Zoo{ public static void main(String[] args){ Animal xb=new Animal(); xb.setLegs(4); //xb.setLegs(-1000); xb.legs=-1000; //非法 System.out.println(xb.getLegs()); } }</pre> <p>四种访问权限修饰符:<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/255bff72ce71b7214c8283f67cca574e.png"><br> <br> <strong>继承</strong> (Inheritance)<br> <br> 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。此处的多个类称为子类,单独的这个类称为父类(基类或超类)。可以理解为:“子类 is a 父类”。<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/647e30239c36542d1ca8aa594daef1cf.png"><br> <br> 类继承语法规则: class Subclass extends Superclass{ }<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/19f554c2424222d018aed1d898afc7d3.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/0b4c84d607c42fb315897f432b8d566e.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/a5cf1db739e515df54a587f8564979eb.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/19c39a240072d1bf89c21bf91a879d1b.png"><br> <br> <strong>多态</strong> (Polymorphism)<br> <br> 多态性,是面向对象中最重要的概念,在java中有两种体现:<br> <br> 1. 方法的重载(overload)和重写(overwrite)。<br> 2. 对象的多态性 :父类的引用指向子类对象实体(可以直接应用在抽象类和接口上)<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/038a49288264fb47ba698fb30bc995be.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/ddf138c09e19aa63369046ad1763a7a8.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/2f83e77862c21e2e27b25557cb0d3769.png"><br> <br> <strong>3.其它关键字</strong><br> <br> this<br> super<br> static<br> final<br> abstract<br> interface<br> <br> <strong>关键字this</strong><br> <br> this是什么?<br> this表示当前对象,可以调用类的属性、方法和构造器。当在方法内需要用到调用该方法的对象时,就用this。<br> <br> 它在方法内部使用,即这个方法所属对象的引用;<br> 它在构造器内部使用,表示该构造器正在初始化的对象。<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/07c961b343b1ce3ef14b676ab4571749.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/e71093225a9892826429b627a03339c1.png"><br> <br> <strong>关键字super</strong><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/0d489f10395964d88fb595773e86030b.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/73b09b7f138945bdfe8acc5cc761109e.png"><br> <br> <strong>关键字static</strong><br> <br> 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。<br> <br> 我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/134e3bfc78dd88ae9c4dfc7777bb5b6c.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/ce28b9d6455a89f11cbda605e21ae163.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/a1f2a5861a91f85433aff67dee42a0af.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/b86b6910498a722aefdb27c2dca5305c.png"><br> <br> <strong>关键字final</strong><br> <br> 在Java中声明类、属性和方法时,可使用关键字final来修饰,表示“最终”。<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/f33a7524e19d8e24810f729a31cdbcb6.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/b24121de9c545ab28c6e032b0ba57474.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/a146b748b6bd20b826024dccbaab90d9.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/d62ce043e86d3d9577a91038038f00f7.png"><br> <br> <strong>抽象类</strong>(abstract class)<br> <br> 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。<br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/90df8f0bef55952dd56bcea2c7593a40.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/a3b2f50716f2e4e4dabcb9e7a88078c2.png"><br> <br> <strong>关键字interface(接 口)</strong><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/d326fa198a8af263c6c50f2e5f223dc4.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/5f551e174ffcc153399605e33ff3dace.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/04e2821a5d7761eae6a3dffe2fed69ab.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/53db1c1b4d66d4e4771e98360fe728eb.png"><br> <br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/b84524de6a7f454960f9f622579b45d7.png"></p> <p>来自: <a href="/misc/goto?guid=4959672148007437550" rel="nofollow">http://blog.csdn.net/csdnyoyo/article/details/51288039</a></p>