Java学习笔记

基础语法

    变量

            成员变量:定义在类之内,方法体外的变量
            局部变量:定义在方法内的变量
            Java中不存在全局变量,因为java是纯面向对象语言

     变量在使用时需要先声明,再赋值,之后才能使用。

     变量其实是内存中的一块区域

            成员变量定义后没有赋值,使用时会默认赋值
            局部变量定以后没有赋值,使用时会报错

     变量作用域

            在大括号中定义的变量,出了大括号就没人认识。

    数据类型

        整数类型-- byte short int long+L
        浮点类型--float+f double

  • 整型 int
  • 单精度浮点型 float 值后面要加f
  • 双精度浮点型 double
  • 字符 char ''
  • 字符串 String ""
  • 常量 final 变量名字大写

    基本数据类型转换

  • 容量小的类型自动转换为容量大的数据类型 byte,short,char,->lnt->long->float->double  前三个不会互相转换,计算时会转换程int类型
  • 容量大的数据类型转换为容量晓得数据类型时,需要强制转换,但可能造成精度降低或溢出。

    switch语句

        switch(这里只能放可以转换成int类型的内容){
        case 0:
        ..........
        }

    内存

            

            基本数据类型在内存中占一块区域
            引用数据类型占两块区域

面向对象

  面相对象编程的思考方式

  1. 这段程序应该有几个类几个对象
  2. 每个类每个对象应给有什么属性和方法
  3. 类之间对象之间的关系

  命名规则

    类名首字母大写
    变量名首字母小写
    驼峰命名法

  类

        类是具有共同特征的一类事物的一个抽象


        成员变量(属性)    静态变量
        方法                    动态方法


        类的具体某一个实例是对象
        类可以看成一类对象的模板
        实例==对象==object

  对象

        首先定义类才有对象


        对象:
            属性(成员变量、静态属性)
            方法(动态属性)

 

        成员变量的作用域在当前类中

  类(对象)关系

  1.  关联关系:关系最弱
  2. 继承关系: xx是一种xx
  3. 聚合关系: xx是xx的一部分 整体和部分 聚集、组合
  4. 实现关系:。。。没太懂。。。
  5. 多态??

  内存分析

        

  重载(overload)

        名字相同,参数不同(类型不同,个数不同)。

  this

        

  static关键字

        在类中,用static声明的成员变量为静态成员变量,作为该类的公用变量。

  package和import语句

        package语句定义类所在的包,一般公司域名倒写,例如:com.sxd.xxxxxx  

                            若没有该条语句,视为无名包。(裸体类)

 

        如果把一个类放到包里,首先编写package,package后可以跟任意层包名,但是你编译出来的class文件,必须位于正确的目录下。和包的层次完全一致的包层次。

        如果在另一个类中使用这个包中的类,必须要把包名写全,否则机器读不到你要找的类。

 

        import 引入制定包中的类.   例如: import com.sxd.java.Cat.

 

        访问相同包中的类不需要引入 import 

  类的继承和权限控制

        Java中使用extends关键字实现类的继承机制。

        继承后,子类自动拥有父类parentsclass(基类superclass)的所有成员(成员变量和方法)

        一个子类只有一个基类,一个基类可以派生出多个子类

        Java只支持单继承,不允许多继承

 

        继承内存图解:

            

  访问控制符(权限修饰符)

          Java权限修饰符,用来限定其他对象对该类兑现成员的访问权限。

            

  • private :
  • default : 默认修饰符 什么都不写  包权限
  • protected :
  • public :      

        对于class的权限修饰只可以用public 的 default

  • public类可以在任意地方被访问
  • default类只可以被同一个包内部的类访问

  重写(OverWrite)

  • 在子类中可以根据需要对从基类中继承来的方法进行重写
  • 重写方法必须和被重写方法具有想阿瞳方法名称、参数列表个返回类型  copy paste
  • 重写方法不能使用比被重写方法更严格的访问权限

  super关键字

        

  继承中的构造方法

  • 子类的构造的过程中必须调用其基类的构造方法
  • 子类可以在自己的构造方法中使用 super(argumentt_list)调用激烈的构造方法

               使用 this(argument_list)调用本类的另外的构造方法

               如果调用 super 必须写在子类构造方法的第一行

  • 如果子类构造方法中没有显示调用基类构造方法,则系统默认调用基类无参数的构造方法。
  • 如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有不带参数的构造方法,则编译出错。

  Object类

  • toString():
  • equals();判断两个对象是否相等(不指向同一内存的对象是不相等的)
  • instanceof运算符:判断对象是否是一个类的实例

                                        用法:
                                                    result = object instanceof class
                                        参数:
                                                    Result:布尔类型。
                                                    Object:必选项。任意对象表达式。
                                                    Class:必选项。任意已定义的对象类。
                                         说明:
                                                    如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者                                                 object 是 null,则返回 false。

  final关键字

                final的变量的只不能够被改变
                    final的成员变量
                    final的局部变量
                final的方法不能被重写
                final的类不能被继

   多态 

                动态绑定是指在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
                动态绑定将可扩展性达到极致。

 

                多态的存在有三个必要条件:
                    1、要有继承
                    2、要有重写
                    3、父类引用指向子类对象  

 

                多态==动态绑定==chi绑定

                new的是谁就找谁的方法

 

        ( 课时53)是不是可以理解为,在执行中cat的enjoy方法将animal的enjoy方法覆盖了,所以Cat c作参数传入执行的时候才打印的Cat 的enjoy

  abstract 抽象类

                用abstract关键字来修饰一个类时,这个类叫做抽象类;
                用abstract来修饰一个方法时,该方法叫做抽象方法。
                含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写
                抽象类不能被实例化
                抽象方法只需声明,而不需实现。

View Code

 

      
posted @ 2016-10-18 09:59  一壶烧开的水  阅读(134)  评论(0)    收藏  举报