首页 > 代码库 > JAVA初步之基础

JAVA初步之基础

概述:

Java是完全OOP语言,最外层实体永远只能是对象(类其实也是特殊的对象而已),所有的属性或方法最外层都只能通过对象来引用,所有的实例方法都默认且只能是虚方法;入口点为:

1 public static void main(String[] args);

 

基本数据类型:

Java提供了8种基本数据类型:

    4种整形:      byte         short          int            long                               长度分别为1字节、2字节、4字节、8字节

    2种浮点型:   float         double                                                             长度分别为4字节、8字节

    字符型:        char                                                                               Unicode代码点(一般为2字节)

    布尔型:        boolean                                                                          值只有true和false两个

注:void呢?C中void主要有两种用途,第一种用于表示函数什么都不返回,Java中与之一致;第二种用于表示无类型指针void *,java中显然不需要使用了。至于数组,字符串

      都是类类型。

 

标识符规则:字母开头,由字母和数字组成的序列。

变量:         基本类型变量         对象引用

运算符:

java中运算符与C++类似,注意一下几点:

1. 逻辑运算符只能应用于布尔型变量,其中&&和||表示短路方式,&和|表示不短路方式。

2. 位运算符中,>>表示算数右移动,>>>表示逻辑右移

3. 强制类型转换:最好不要在字符型和其他类型之间转换,永远不要在布尔型和其他类型之间转换

4. 没有delete,因为有垃圾收集嘛

 

控制流程与C基本一致,需要注意的是:

1. 分支条件只能是布尔型

2. switch条件可以是字符串(编译时会将其进行转换和其他必要处理),枚举常量,整形和字符型及其包装器(long不行)

 

类是对象的描述,它描述了对象的属性和行为等元信息;而类本身也是一种对象,姑且称为类对象,因而一个实例对象的元数据就存储在它对应的类对象,类对象就是该类在运行时

的实际表示,类中的static 成员实际上就是这个类对象的属性和方法了;那么所有的类对象又是什么类型的实例变量呢,那就是Class<T>,因而最终归结为这么个东西,那么这个

类在运行时又怎么表示呢?显然它是终极Boss,只需要一个对象来存储这个类的元信息就可以了,那么这个唯一对象的类是啥呢?还是Class<T>,因为这时无所谓知道它的类型了

,而且也不会继续递归下去,因为就在这两者之间循环往复了,或者干脆让这个Boss对象没有类型也就完了,因为这都在虚拟机管理范围了,虚拟机知道这个Boss对象本身的布局

就可以了。

 

OK,除了基本类型变量,Java中就只有对象了,对象的类型是类。

注:

1. Java中的所有类有一个唯一的祖先同志是Object

2. 类本身有两种访问控制:public > (default)

    类成员有四种访问控制:public > protected > (default) > private       值得关注的是成员的访问权限是基于类的

3. 访问器和更改器:不要编写返回引用可变对象的访问器方法,而应该返回一个副本

4. static成员是类对象本身的成员,通过类引用,也就是通过类对象引用

5. Java的所有的参数传递都是值传递,Java的引用更类似C++的指针,这从其默认多态方法也能看出来,一个子类对象的引用能赋值给一个父类对象的引用。

6. Java的final不同于C++的const,final用于类表示最终类,不允许再被继承;final用于属性,表示不可变属性;final用于方法,表示不可override的方法。

7. this的使用:引用对象自身;调用本类另一个构造器

8. super的使用:编译器期符号,用于调用父类方法;调用父类的构造器

9. a instanceof B表示测试a是否是B及B的子类的实例或实现了B接口的类及其子类的实例

10. abstract用于类表示类是抽象类,抽象类不能实例化;abstract用于方法表示方法是抽象方法,表示方法未实现。

11. 常量的定义方式通常是public static final

12. 初始化问题:类加载时,默认初始化所有static属性,然后执行定义初始化,最后执行static初始化块;new对象时,默认初始化对象属性,然后执行定义初始化,然后执行

                      初始化块,最后执行构造器(如果存在继承,按类层次从上往下依次执行)

13. Java是单继承的

14. 不能多继承,交互上存在问题咋办?-----接口,接口可以看成是所有方法都是public abstract方法的抽象类,但是一个类可以实现多个接口,因此,接口是作为协定存在的,

      它是为了让类之间交互而规定的协约,任何遵守这个协约的类之间就都可以交互了;把接口用于回调也是很自然的了,想想C++中的仿函数,C++中通过函数调用运算符

      重载隐式的规定了协议,而Java中使用接口显式的规定协议。

      接口中声明的所有方法都是public abstract的,所有属性都是public static final的

15. 为什么使用内部类?

     可能有三种理由:第一种是,对同一个包中的其他类隐藏起来;第二种是内部类可以访问外围类的任何属性;第三种是用于回调。

     内部类分为以下三种:静态内部类;对象内部类;局部内部类(包括匿名内部类)。