1.    在一个Java文件里面,可以后多个类,但是最多只能有一个public类,否则.Java文件无法命名。

生成chm格式文档 javadoc -d person -author -version person.java

   Java严格区分大小写,格式自由

2.    标识符:由数字,字母,下划线,美元符组成,不能由数字开头,不能包含关键字

3.    数据类型:

(1).整数:

      十进制【0-9】

      八进制 以0开头【0-7】

      十六进制 以ox开头【0-9】【a-f】

      二进制【0-1】

计算机内存最小的内存单元是位,只能存0,1

一个字节=8位

1T=1000G1G=1024M 1M=1024k 1K=1024位

byte 1个字节 -2^7-2^7-1

short 2个字节 -2^15-2^15-1

int 4个字节 -2^31-2^31-1(整数的默认类型)

long 8个字节 -2^63-2^63-1,如果数值能被int装下,自动降级为int,如需强制,则在值后面加L

(2).浮点数:

     单精度4个字节 float 需在值后面加f,最大幂指次方127

      float能存下所有整数

  双精度8个字节 double(小数的默认类型),值后面的d一般不写,最大幂指次方1023

    两个正无限大相等,两个负无限大相等,两个非数不相等

(3).布尔:

         true false 1个字节

         C/C++中非零就是真

(4).字符:

        必须且只能放一个字符。

永远把字符当做一个整数来处理,Unicode编码,每个字符占两个字节,共16位,0-2^16-1全是数值位。

       转义字符只有在字符串中才有意义。

注:

字符串+任何东西都变成字符串。

同一作用域内的变量不能同名,不同作用域的可以同名,访问变量时就近原则。

全局变量会自动初始化,局部变量使用前必须赋值。

4.    类型转化

      小的转化成大的,自动类型提升

      大的转化成小的,强制类型转化

      表达式的数据类型自动提升

                  byte、short、char类型自动提升为int

                  如果有一个操作数是long型,计算结果是long型

                  如果有一个操作数是float型,计算结果是float型

                  如果有一个操作数是double型,计算结果是double型

5.    运算符:算数运算符

          除法:如果两端都是整数,则取商运算

                      如果有一端为小数,则是正常的数学运算

          取模:符号只跟%前面的数的正负有关

          赋值运算符

          比较运算符

          逻辑运算符:&&为短路与||为短路或

          位运算符:左移<< 左移相当于乘2

                       带符号右移>>右移相当于除2

                        无符号右移>>>

                        移位运算符适用的类型有byte short char int long

                        对于低于int的操作数将先自动转化成int再移位

                        移位不会改变变量本身的值

         三目运算符表达式?值1:值2

6.    类的封装:不允许外界随意修改类的属性

                 隐藏类的实现细节

               只能通过规则来修改属性

7.    构造函数:new的时候被调用

                              完成初始化工作

                 可以有return

8.    static:变量共享,只有一份

           提前生命周期,提前至类,可以通过类名调用

           非静态的可以调用静态的,反之不可以

          静态方法中不能使用this和super

         静态代码块:static{}

                当类第一次被加载的时候执行一次,new的时候加载

                静态代码块可以调用静态方法

{}

                执行顺序:静态代码块-》动态代码块-》构造函数

                每次创建对象都会执行一遍动态代码块

          this:构造函数,在方法内部使用this,谁调用这个方法谁就是this

                调用构造函数

          使用this作为对象传参

9.  Java 重载和重写区别

(静态多态性)重载:方法名相同,参数类型,个数不同

(动态多态性)重写:子类与父类,方法名,参数相同(内容跟父类可以不一样,某个子类特有的特征),访问权限只能相等或者放大,不能更严格

10. 基本成员变量和成员方法可以继承

    私有属性也能继承,只是不能直接访问

    只支持单继承

    不能继承父类构造方法

    调用父类 super

    子类的实例化过程: 要想实例化子类,必须先实例化父类,必须调用父类的某一个构造方法

    先找this,再找super,都没有自动添加super()

    super和this不能出现在一个构造函数里

    final修饰类不能被继承,修饰的方法不能被子类重写,修饰的变量为常量, 只能赋值一次

11. 抽象与接口

    含有抽象方法的类叫抽象类,不能进行实例化,用abstract修饰

    并不是抽象类中的所有方法都是抽象的

    抽象方法只需声明,不需实现

    抽象类之间可以继承,类与抽象类可以继承

    抽象类可以含有构造方法

    抽象类不一定含有抽象方法

    含有抽象方法的类一定是抽象类

    抽象类可以含有正常的方法

    接口中的方法都是抽象方法

    接口之间是继承

    类与接口之间是实现

    接口中定义常量和方法

    一个类继承一个父类,实现多个接口,继承必须位于实现之前

    抽象类适合定义属性,接口适合定义方法

    接口中存取常量的一个bug:java动态加载消失

    接口是用来定义规范