您的位置 首页 java

《JAVA编程思想》5分钟速成:1-4章:概述

前言:

1、面向对象的特征有哪些方面?

2、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少?

3、float f=3.4;是否正确?

4、short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?

5、int 和Integer 有什么区别?

6、 JAVA 有没有goto?

7、在Java 中,如何跳出当前的多重嵌套循环?

8、&和&&的区别?

9、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

10、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是 值传递还是引用传递 ?


第一章、对象导论

1.1 抽象过程

面向对象编程:( OOP ,Object Oriented Programming 面向对象的程序设计):

成功的面向对象的五个特性:

(1)万物皆为对象;

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

(3)每个对象都可以拥有其他对象(has-a);

(4)每个对象(Instance)都有类型(Class);

(5)某一类型的所有对象都可以接收同样消息(is-a)。

1.2 对象类型

类:具有相同的特性(数据元素)和行为(功能),实际上就是一个数据类型。包含:

基本数据类型:

抽象数据类型 :比如容器(即JAVA类库)

接口(interface):类似于定义了类的某些功能。

备注:Unified Modeling Language (UML)又称统一建模语言或标准建模语言。

1.3 封装

被隐藏的具体实现:

(1)不让客户端程序员访问他们不应该访问的部分;

(2)修改类内部而不用担心影响到客户端程序员;

1.4 复用

复用的具体实现方法(两种):

组合(has-a)/聚合:建议优先采用此方式。

继承(is-a):

备注:is-like-a : 派生类新增了methods或fileds。

1.5 多态

多态 (也称作 动态绑定 后期绑定 运行时绑定 )。

前期(编译时)绑定&后期(运行时)绑定:

  • 方法重载( overload )实现的是编译时的多态性(也称为前绑定);
  • 方法重写( override )实现的是运行时的多态性(也称为后绑定)。

一个非面向对象语言在调用时会引起所谓的前期绑定,然而在OOP中,程序直到运行时才能确定代码的地址,因此面向对象语言使用了后期绑定的概念。在java中,动态绑定是默认的。

1.6 单继承

Java 特性(不同于C++):

单根继承结构使垃圾回收器的实现变得容易得(?)。

Object是所有类的基类。

1.7 容器

List/Map/Set/Queue/Tree/Stack etc..

1.8 对象的创建和生命期

对象的创建: Java完全采用了动态内存分配方式(基本类型只是一种特例) 。每当想要创建对象时,就要使用new关键字来构建对象的动态实例。

对象的生命期:jvm gc自动实现内存(垃圾)回收。

1.9 异常( Exception )&并发& C/S编程

Java内置Exception和并发机制,并擅长于 C/S编程领域。

第二章、一切皆对象

2.1 对象引用

String s = a; //借助对象引用,来操控对象

2.2 创建对象

String s = new String(“abc”);

2.3 基本数据类型(内存一致性):

Java的基本类型所占存储空间大小不随机器硬件架构的变化而变化。 这种所占存储空间大小的不变性是Java程序比用其他大多数语言编写的程序更具可移植性的原因之一。

2.4 作用域(scope):

Java对象不具备和基本类型一样的生命周期 。当用new创建一个Java对象时,它可以存活于作用域之外。如:

{

String s = new String(“a string”);

} // End of scope

引用 s 在作用域终点就消失了。然而,s 指向的 String 对象仍继续占据内存空间

2.5 import 关键字

import关键字指示编译器导入一个包,也就是一个类库(在其他语言中,一个库不仅包含类,还可能包括方法和数据,但是Java中所有的代码都必须写在类里)。

备注:特定类 java.lang 会被自动导入到每一个Java文件中。

2.6 static 关键字

2.6.1 通过 static 关键字可以满足以下两方面情形的需要:

  • 只想为某一 特定域分配单一存储空间 ,而不去考虑空间要创建多少对象,甚至根本就不创建任何对象。
  • 希望某个方法不与包含它的类的任何对象关联在一起。也就是说,即使 没有创建对象,也能够调用这个方法

2.6.2 static 字段(类字段,单一存储空间)

如创建两个对象,st1.i 和 st2.i 指向同一存储空间,共享同一个 i (static 字段),因此它们具有相同的值47。

2.6.3 static 方法(类方法)

a. static方法重要用法: 在不创建任何对象的前提下就可以调用它。这一点对定义main()方法很重要(所以main()方法是一个 satic 方法),这个方法是运行一个应用时的入口点。

b. 关于static方法内部是否能调用非静态方法:因为没有this,就没有对象,所以不能直接调用非静态方法;但可以传递一个对象引用到静态方法里,然后通过这个引用(和this效果相同)来调用非静态方法和访问非静态数据成员。

c. 有些人认为static方法不是“面向对象”的,因为它们的确具有全局函数的语义;使用static方法时,由于不存在this,所以不是通过“向对象发送消息”的方式来完成的。

2.7 javadoc标签

文档注释的一些标签:

@see 引用其他类

@link package.class#member laber 与@see极其类似,只是它用于行内

@inheritDoc 继承的注释

@version 版本信息

@author 作者

@since 最早使用版本

@param 参数说明

@return 返回值

@throws 抛出异常

@deprecated 过时的 被@Deprecated取代

第三章、操作符

3.1 赋值

两种赋值方式:

引用赋值:a = b; //a变化,b也会变化

方法参数赋值:func(a);//func()中的para a变化,方法调用处的a也会变化。

3.2 算术&关系&逻辑&按位运算符

逻辑运算的短路现象

3.3 类型转换

窄化转换: eg :double ->int 信息丢失( 截尾 ),不安全的方式;

扩展转换:eg:int->double 安全的方式;

备注:舍入:Math.round()来实现四舍五入。

3.4 sizeof ()

Java没有sizeof()操作符: Java不需要sizeof()操作符来满足这方面的需要,因为所有数据类型在所有机器中的大小是相同的。我们不必考虑移植问题——它已经被设计在语言中了。

第四章、控制和执行流程

4.1 true 和 false

注意Java不允许我们将一个数字作为布尔值使用,这与C和C++ 不同(C/C++中,“真”是非零,而“假”是零)。如果将数字作为布尔表达式,Java编译器会直接报错。

4.2 迭代:

while(): 先检查条件,再判断是否执行;

do-while: 先执行,再判断条件( 同上区别:一定会执行一次 );

for :

for-each:

4.3 返回

return/break/continue

关于执行跳转:

  • java中没有用到goto语法。
  • Java中跳出循环的实现方法:break TAG_A;或者continue TAG_B;

下章链接:

文章来源:智云一二三科技

文章标题:《JAVA编程思想》5分钟速成:1-4章:概述

文章地址:https://www.zhihuclub.com/180329.shtml

关于作者: 智云科技

热门文章

网站地图