JavaSE(java编程基础,面向对象)

来源:互联网 发布:迅游网络加速器手机版 编辑:程序博客网 时间:2024/04/28 07:46

1.java编程基础

1.1“标识符”只是对象的一个引用,java中的所以对象都需要自己来创建

String s;//创建一个引用,并不是对象String s = "123";/*创建一个引用并与一个对象相关联,等价于String s = new String("123");*/

1.2 java程序运行过程数据的存储位置

1.寄存器
2.堆栈(编译器知道其上对象的生命周期和存储空间,编写程序时就知道了。执行速度快,灵活性差)
3.堆(编译器对其上的对象的生命周期和存储空间一无所知,只有当程序运行到相关代码时才知道。灵活性好,速度相对于堆栈慢)
4.常量存储
5.非RAM存储(ROM)

1.3 java八大基本类型不同于对象,八大基本类型的“引用”直接存储值,并存于堆栈中,而对象是存储于堆中,通过对象的“引用”(引用存储于堆栈中)来调用对象 。

八大基本类型(切记不含String):
1.byte
2.short
3.int
4.long
5.float
6.double
7.char
8.boolean
注意:八大基本类型所占存储空间的大小是确定的(boolean类型除外),不随机器硬件的变化而变化。这也是Java程序比其他大多数语言编写的程序更具可移植性的原因之一。
注意:BigInteger支持任意精度的整数,可以准确表示任何大小的整数值,不会丢失任何信息。BigDecimal支持任意精度的定点数,例如:可以进行精确的货币计算。

2. 面向对象

2.1. java面向对象的5个基本特性

(1)万物皆对象

你可以把任何事物(一般是待解决问题的概念化构件)抽象成一个对象。

(2)程序是对象的集合,他们通过发送消息来告知彼此所要做的

想要请求一个对象,就必须发送一条消息给这个对象,更具体的说:可以把消息想象成为特定对象的方法请求。

(3)每个对象都有自己的由其他对象所构成的存储

可以通过创建包含现有对象的包的方式来创建新类型对象。因此可以在程序中构建复杂体系,同时将其复杂性隐藏在对象的简单性背后。

(4)每个对象都拥有其类型

每个对象都是某一个类的一个实例,这里的类就是类型的意思。

(5)某一特定类型的所以对象都可以接受同样的消息。

由于“圆形”类型的对象同时也是“几何形”类型的对象,所以“圆形”对象可以接收发送给“几何形”对象的消息。这也就意味着可以编写与“几何形”交互并自动处理所有与几何形性质相关的事物的代码。这种可替代性是oop中最强有力的概念之一。

2.2 每个对象都是为我们提供服务的,我们编程的目的也是为了解决某一个实际问题

程序设计原则之一:高内聚

每个对象都可以很好的完成一项任务,但他并不试图做更多的事。

2.3. java中的访问控制(public,protect,private以及默认的包访问权限)

public:表示对任何人都是可用的
private:除类型创建者和类型的内部方法以外的任务人都不能访问的元素
protect:和private类似,差别在于继承的类可以访问protect成员
注意:如果没有使用前面提到的任何一种访问指定词时,默认是包访问权限:类可以访问在同一个包中的其他类成员,但是包之外的这些成员如同指定了private一样。

2.4 继承

(1)一个类继承一个类时,也就复制了基类(也叫父类)的接口,也就是说,所有可以发送给基类的对象的消息同时也可以发送给导出类(也叫子类)的对象。
(2)继承分为纯粹替代(不添加新的方法,完全使用父类的接口)和扩展继承(根据自己的需要添加一些方法)。两种都可以,只是使用的场合不同罢了。
(3)java(以及除c++以为的所以面向对象语言)是单继承。c++的多继承是为了更好的适应c模型。java单继承可以保证所有对象都具有其类型信息,因此不会因无法确定对象的类型而陷入僵局,这对系统级操作(垃圾回收,异常处理)显得尤为重要。

2.5 多态

描述:同一个方法会根据传入参数的不同,表现出不同的行为结果。
java多态的实现原理:java使用了后期绑定的概念。什么是后期绑定呢?当向对象发送消息时,被调用的代码直到执行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查,但是并不知道被执行的确切代码。传统的面向过程的程序语言采用的是前期绑定,所谓前期绑定:编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要执行的代码的绝对地址。然而在oop中,程序直到运行时才能确定代码的地址。
这个过程中涉及到一个概念:向上转型–把导出类看做是它的基类的过程称为向上转型。如:把猫和狗都看做动物,并作为参数传入方法,有不同的表现。

2.6 容器

有些时候我们不知道解决一个问题需要多少个对象,或者不知道他们存活多久,那么就不可能知道怎么存储这些对象,更不知道需要多少存储空间来存储这些对象(只有当运行的时候才能知道)。这是就需要容器来帮你,让容器来帮你处理这些细节,而你只需要创建一个容器对象,把这些对象装入容器中就好。Java中容器有:List(用于存储序列),Map(也叫关联数组,建立对象之间的关联),Set(每种对象类型只能有一个),以及诸如队列,树,堆栈等更多构件。

2.7 泛型

也叫参数化类型。为什么叫参数化类型呢?最初的容器是不能指定装入对象的类型的,统统默认为Object类型,取出的时候再使用向下转型来转成需要的类型。从Java1.5开始就引用参数化类型:

//一个存储Shape的ArrayListArrayList<Shap> shaps = new ArrayList<Shape>();

2.8 异常处理

异常是一种对象。它从出错地点被“抛出”,并被专门设计用来处理特定类型错误的相应的异常处理器“捕获”。异常处理就像与程序正常执行并行、在错误发生时的另一条路径。

2.9 并发执行

  1. 并发执行可以是一个任务分成多个可独立运行的部分,从而提高程序的响应能力。比如:用户点击一个按钮时可以立即得到一个响应,不用等到程序完成当前任务时才得到响应。
  2. 并发执行时要注意对共享资源的使用。
原创粉丝点击