java 基础
Java中final关键字
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
-
修饰类 当用final修饰一个类时,表明这个类不能被继承。
-
修饰方法
使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。
- 修饰变量 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
java包(package)
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。 2.如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。 3.包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
java包与C#命名空间的区别
相同点
1.都是为了重用性(reusebility)——软件工程中一个非常重要的目标。 2.C#里面的命名空间和java中的包都属于访问权限的控制机制。
不同点:
1.C#命名空间只是一种逻辑上的结构,它允许所组织的类文件的物理存放位置与逻辑结构不一致,而Java中类文件的物理结构必须与逻辑结构一致。 2.Java的package本身没有子包的概念,所有package都是并列的关系,没有谁包含谁的问题。C++/C#的namespace方案则不然,一个namespace可以有自己的sub-namespace,我们不妨将namespace也称为package,那么C++/C#的package之间就可能存在包与子包的关系。 3.Java中使用import语句而C#中使用using namespace语句.
java instanceof
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
java Iterator
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。java.util.Iterator为一个接口,它只提供了迭代了基本规则,提供一种方法访问某个容器(container)对象中的各个元素,而又不需暴露该对象的内部细节/底层结构。
Java中的Iterator功能比较简单,并且只能单向移动:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。