`
lifeiniao526
  • 浏览: 37783 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

JAVA简单概念

阅读更多

1.实例成员和类成员
实例成员中是属于对象的,包括实例成员变量和实例成员方法,只有创建了对象之后才能访问实例成员变量和实例成员方法.

类成员是属于类的,类成员需要用关键字static标识,也称为静态成员,类成员包括类成员变量和类成员方法,通过类名可以直接访问类成员变量和调用类成员方法,即使没有创建对象,也能够引用类成员,类成员也可以通过对象引用.

接下来讲讲类变量和实例变量的区别:

(1): 声明的差别: 没有使用static声明的为实例成员变量,用static 声明的为类成员变量

(2):存储结构的差别: 对于实例变量而言,为每个对象的每个实例成员变量分配一个存储单元使得不同对象的实例成员变量具有不同的值,而对于类成员变量只分配一个存储单元,使得所有的对象共同使用一个类成员变量.

(3):引用方式的差别: 实例成员变量对于对象,通过对象进行访问;类成员变量属于类,既可以通过对象,也可以通过类访问.


2.equals 方法解析:(《JAVA核心技术》176页)
(1)对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。“equals()”比较字符串中所包含的内容是否相同。
(2)对于非字符串变量来说,"=="和"equals"方法的作用是相同的都是用来比较其
对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。
public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
equals 方法在非空对象引用上实现相等关系:

自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

参数:
obj - 要与之比较的引用对象。
返回:
如果此对象与 obj 参数相同,则返回 true;否则返回 false。

下面给出编写一个完美的equals方法的建议:
1)显式参数命名为otherObject,稍后需要将它转换成另一个叫做other的变量
2)检测this与otherObject是否引用同一个对象:if(this == otherObject) return true;
3) 检测otherObject是否为null,如果为null,返回false.if(otherObject == null) return false;比较this与otherObject是否属于同一个类
如果equals的语义在每个子类中有所改变,就使用getClass检测:if(getClass()!=otherObject.getClass()) return false;
如果所有的子类都拥有统一的语义,就使用instanceof检测:if(!(otherObject instanceof ClassName)) return false;
4) 将otherObject转换为相应的类类型变量:ClassName other = (ClassName) otherObject;
5) 现在开始对所有需要比较的域进行比较。使用==比较基本类型域,使用equals比较对象域。如果所有的域都匹配,就返回true,否则就返回flase.
如果在子类中重新定义equals,就要在其中包含调用super.equals(other)
3.toString方法(《JAVA核心技术》179页)
用于返回表示对象值的字符串。绝大多数toString方法都遵循这样的格式:类的名字,随后是一对方括号括起的域值。
设计子类的程序员也应该定义自己的toString方法,并将子类域的描述添加进去,如果超类使用了getClass().getName(),那么子类仅调用super.toString()就可以了。
4.ArrayList:
使用起来有点像数组,但在添加或删除元素时,具有自动调节数组容量的功能
下面声明和构造一个保存Employee对象的数组列表:
ArrayList<Employee>staff=new ArrayList<Employee>();
使用add方法可以将元素添加到数组列表中:
staff.add(new Employee("Harry Hacker",...));
使用get和set方法实现访问或改变数组元素的操作,要设置第i个元素可以使用:
staff.set(i,harry);等价于对数组a的元素赋值:a[i]=harry;
使用下列格式获得数组列表的元素:
Employee e=staff.get(i);等价于:Employee e=a[i];
5.签名:方法名和参数类型的统称。
6.继承设计技巧
(1)将公共操作和域放置在超类。
(2)不要使用受保护的域
(3)使用继承实现“is-a”关系
(4)除非所有继承的方法都有意义,否则不要使用继承
(5)在覆盖方法的时候,不要改变预期的行为
(6)使用多态,而非类型信息
(7)不要过多地使用反射。
7.接口技术
这种技术主要用来描述类具有什么功能,而并不给出每个功能的具体实现。是一组对类的需求描述,这些类要遵从接口描述的统一格式进行定义。
接口中的所有方法自动地属于public
接口绝不能含有实例域,也不能在接口中实现方法。
让类实现一个接口,通常需要下面两个步骤:
(1)将类声明为实现给定的接口。
(2)对接口中的所有方法进行定义。需要使用关键字implements: class Employee implements Comparable
8.回调
回调是一种常见的程序设计模式,在这种模式中,可以指出某个特定事件发生时应该采取的动作。
9.内部类
定义在另一个类中的类,原因有以下三点:
内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。
可以对同一个包中的其它类隐藏起来。

当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。
内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。
几种内部类的共性:
A.内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。
B.内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。


10.Spring框架简介
Spring框架由一个容器,一个配置和组织组件的框架,和一组内置的为事务、持久化和Web用户接口提供的服务组成。作为一种轻量级的J2EE框架,Spring提供了一种有效的方式来建立和组织J2EE应用程序。
IoC(Inversion of Control;控制反转);又称DI(Dependency Injection;依赖注入);是面向对象领域新兴的编程思想;也是Spring的精髓所在。简单地说;IoC就是指程序之间的关系由容器来控制;而不是传统实现中由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码转到外部容器,控制权的转移,也就是所谓的反转。IoC将控制创建的职责搬进了框架中;并把它从应用代码脱离开来。当使用Spring的IoC容器时只需指出组件需要的对象,在运行时Spring的IoC容器会根据XML配置数据提供给它。

  Spring IoC,借助于依赖注入设计模式,使得开发者不用理会对象自身的生命周期极其关系,而且能够改善开发者对模式的使用。对于一个对象的管理不是什么困难,难就难在对整个对象群的管理。依赖注入可以让容器管理对象,即“Don’t call me, I will call you”。这样对象本身的生命周期以及对象之间的关系就不再让开发者费神了。

  Spring AOP,借助于Spring实现拦截器,开发者能够实现以声名方式使用企业级服务,比如安全性服务、事务服务。AOP 合理的补充了OOP,借助于Spring AOP,开发者能够高效的使用J2EE服务。

  Spring服务抽象,借助于各种J2EE API抽象,使得开发者能够一致地使用J2EE 技术,而不管具体是使用什么J2EE API,借助于Spring服务抽象,使代码大大减少,满足“更少代码,更少BUG”的软件设计原则。

  Spring IoC+Spring AOP+Spring服务抽象,一起形成Spring,这样一个有机体,使构建轻量级J2EE成为可能。

分享到:
评论

相关推荐

    java简单实例程序源代码

    "java简单实例程序源代码"这个压缩包包含了一系列章节相关的Java实例源代码,适合初学者和有经验的开发者用来加深对Java语言的理解。以下是这些章节可能涉及的重要知识点的详细解释: 1. **CH11**: 这个章节可能...

    java简单的购物系统

    【标题】:“java简单的购物系统”是一个基于Java编程语言实现的简易购物应用程序。这个系统能够展示商品信息,允许用户选择购买的数量,并最终生成一个购物清单。它的核心功能涵盖了基本的电商流程,为初学者提供了...

    一些java简单程序

    "一些java简单程序"这个主题,显然聚焦于帮助初学者理解Java编程基础。在这个压缩包中,"study path"可能是一个目录或者文件,它可能包含了学习Java的路径或者一系列逐步进阶的代码示例。 在Java编程中,初学者通常...

    Java概念题汇总+目录表

    Java是一门 面向对象编程语言,不仅吸收了 C++语言的各种优点,还摒弃了C++里难以理解的 多继承、 指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了...

    Java简单记事本源码

    通过学习和理解这个Java简单记事本源码,开发者不仅可以掌握Java GUI编程的基本技巧,还能深入理解事件驱动编程、文件操作和多线程等核心概念。此外,这个项目也是练习面向对象设计和软件工程原则的好例子,因为需要...

    java简单程序小例子

    总的来说,"java简单程序小例子"涵盖了Java编程的基础知识,包括语法、面向对象编程、异常处理、集合框架、多线程、I/O流和反射等核心概念,这些都是成为一名合格的Java开发者所必需掌握的技能。通过实践这些小例子...

    java简单计算器源代码

    Java简单计算器源代码是学习Java编程基础和控制流的一个经典示例。这个程序通常包括基本的加、减、乘、除运算,以及可能的括号处理和优先级处理。在这个项目中,我们将深入探讨Java语言如何实现这样一个计算器的源...

    Java简单实例初学者的必备

    "Java简单实例初学者的必备"这个压缩包文件提供了180个精心设计的实例,旨在帮助初学者通过实践来掌握Java的基础知识。 首先,我们要理解Java实例的重要性。实例是理论知识与实际操作的桥梁,通过运行实例代码,...

    java简单小游戏代码

    Java简单小游戏代码主要涉及到的是Java编程语言的基础应用和游戏开发的基本概念。对于初学者来说,这是一个很好的实践项目,可以帮助理解面向对象编程的概念以及如何在实际项目中应用它们。以下是这个小游戏可能涉及...

    Java简单实例

    在这个"Java简单实例"中,我们将探讨几个核心的Java概念和技术,包括基础语法、算法应用以及字符串处理。 首先,基础语法是任何编程语言学习的起点。在Java中,这涉及到变量的声明、数据类型(如整型、浮点型、字符...

    Java实现简单坦克大战

    在本项目中,"Java实现简单坦克大战" 是一个基于Java编程语言开发的趣味游戏,旨在教授初学者如何使用Java进行游戏开发。这个游戏的核心概念包括对象编程、图形用户界面(GUI)设计、事件处理和基本的游戏逻辑。接...

    JAVA简单入门实例

    "JAVA简单入门实例"这个压缩包提供了一百八十个小案例,旨在帮助新手快速掌握Java的基本语法和编程技巧。 1. **Java基本语法**: 这些实例将涵盖Java的基础语法,包括变量声明、数据类型(如整型、浮点型、字符型、...

    JAVA EE6基本概念(英文版)

    **JAVA EE6基本概念** Java EE6,全称为Java Platform, Enterprise Edition 6,是Java技术在企业级应用开发中的一个关键版本。这个版本引入了一系列的改进和新特性,旨在简化开发过程,提高效率,同时保持平台的...

    java新手代码适合初学者简单经典.zip

    这个名为"java新手代码适合初学者简单经典.zip"的压缩包包含了两个示例文件:test1.java和test2.java,它们很可能是为帮助初学者理解Java编程基础而设计的一些简单程序。 1. **Java基础** - **变量与数据类型**:...

    java的基本概念介绍

    主要是对java的基本背景以及应用做出简单的介绍

    JAVA简单记事本程序设计实验报告(带源码)

    JAVA简单记事本程序设计实验报告是一份详细记录了如何使用Java编程语言开发一个简易记事本应用程序的文档。这个程序旨在实现基本的文本编辑功能,包括文件操作(新建、打开、保存、退出)和编辑操作(剪切、拷贝、...

    java实现简单登录注册系统

    通过学习这个系统,你可以掌握Java中的核心概念,如面向对象编程、控制流、异常处理,以及文件操作。 首先,我们需要创建用户类(User)来表示注册的用户。用户类应该包含用户名(username)和密码(password)属性...

    java入门很简单原码

    "java入门很简单原码"这个标题暗示了我们将探讨如何轻松地开始学习Java编程,通过理解并实践源代码来掌握基础概念。 在Java入门阶段,首先要了解的是Java的基础语法,包括变量、数据类型、运算符、流程控制语句(如...

    java简单的贪吃蛇完整代码

    【标题】:“java简单的贪吃蛇完整代码” 贪吃蛇是一款经典的计算机游戏,它通过简单的规则和玩家的反应速度挑战了玩家的技能。这个Java实现的贪吃蛇项目旨在为初学者提供一个学习编程和游戏开发的基础平台。下面将...

Global site tag (gtag.js) - Google Analytics