轻松java学习之路3

来源:互联网 发布:motivation letter知乎 编辑:程序博客网 时间:2024/06/10 22:46

一.final的作用

1.final可以修饰类、成员变量、以及方法

2.修饰类时,此类不能派生子类

3.修饰方法时,此方法不能被重写

4.修饰变量时,此变量获得初值就不能被改写,不能被重新赋值


二.引用变量

           1. 所有引用型的变量都继承了Object类(如:string),都可以当作Object变量使用,若有个方法需要Object类型的参数,但是实际变量却是1,2,3 

            等数值,则这个时候就需要使用包装类,把基本类型包装成Object型

           2. 除了int 和char之外,其他对应的基本类型的数据的包装类直接将其首字母大写就好,int的包装类为Integer ,char的包装类为Character
           3.在jdk 1.5 之后,java提供了自动装箱和自动拆箱的功能,程序不需要实行繁琐的操作,简化了基本类型和包装类对象的转化过程
           4.自动包装和自动拆装还可以实现基本类型和字符串之间的转化,利用包装类提供的parseXxx(String s)静态方法,和Xxx(String s)构造器    

            java 7 又增强了包装类的功能他为所谓有的类提供了一个静态的compare(xxx val1,xxx val2)


三.处理对象

          1.妙用tostring,把输出对象转化为字符串类型

          2.== 和equal 的区别,== 是比较基本类型是否相等,equal能比较更多的东西

四.类的成员

          1.static可以修饰的是类里的成员变量、方法、初始化块、内部类

          2.static修饰的就是类成员,类成员属于整个类,可以直接由类访问,实例化后的对象不能访问

          3.final 修饰的类成员变量,赋予了初始值就不可以改变,赋值必须显示赋值,直接赋值,或者使用初始化块货构造器赋值

             但是系统不会对局部变量进行初始化,所以final修饰的局部变量可以定义是赋予默认值,也可以不赋予默认值

            final在修饰基本变量时,希望不改变值,但是修饰引用变量时,他只能保证引用变量所指的地址不变,但是对象可以改变

           (p是一个引用变量,p不能被重新赋值,但是p引用的对象的成员的值可以被改变)

          4.final方法: 有时候,不希望子类重写某一个方法,则可以使用final修饰该方法,但final只是不能被重写,但是可以被重载

          5.final类:final修饰的的类不可以有子类,例如java.lang.Math就是一个final类            

          6.不可变类:创建不可变类的实例后,该实例的实例变量是不可改变的。java的8个包装类和java.lang.String类都是不可变类


五.抽象类和接口

            1.抽象类和抽象方法:抽象类和抽象方法必须使用abstract来修饰,抽象类不能被实例化,无法使用new创建抽象类的实例
               抽象类不能实例化,只能当作父类被其他类继承  抽象类的作用:当作模版,让子类去实现父类定义的各种方法
               抽象类提供了多个子类共同通用的方法,让子类在模版上扩展,改造
            2.接口:接口定义了一批类所需要遵守的规范,接口不关心这些类的内部的状态数据,也不关心类里的实现方法规则
               他只规定这些类必须实现的一些方法,接口不需要实现任何方法,但是java 8 中可以实现默认default方法,这样java可以实现多继承
                java中不支持多继承,但是可以多实现,java  8 允许接口里定义一个类方法,但是要用static修饰
                接口和接口之间完全支持多继承,一个类也可以实现多个接口,

            3.接口是一种规范,继承它的一些子类必须实现他的对所有方法,抽象类是一种中间产品,他已经实现的一些功能,但是需要被完善


六.内部类

            1. 内部类:内部类可以访问外部类的private的成员,反过来不可以             
                 java不允许静态类里定义静态成员
                 静态内部类:静态内部类里可以包含静态成员,也可以包含非静态成员,根据静态成员不能访问非静态成员
                 静态内部类也不可以访问非静态内部类成员,
            2.局部内部类:如果把内部类放在方法里定义,则这个内部类就是一个局部内部类
                           它仅在方法里有效

            3.匿名内部类:匿名表示木有名字,前面说道没有名字的类不能实例化,只能当垃圾回收

                                    创建匿名内部类时会立即创建一个类的实例,这个类定义就立即消失,匿名内部类不能重复使用

                                    匿名内部类不能是抽象类,
                                    匿名内部类不能定义构造器,系统会提供一个隐式构造器
                                    匿名内部类只使用一次,

             4.java  8 新增的lambda表达式  

1>他支持代码块作为函数参数 java允许使用更简洁的代码创建一个只有一个抽象类的接

                          lambda表达式类型也被称为是目标类型,lambda的目标类型必须是明确的函数式接口如Runnable

                        2>如果它的代码块中只有一条代码,则可以省略花括号,还可以在代码块中使用方法引用和构造器引用

                     

七.枚举类

              1.    枚举类:java新增了一个enum的关键字用来定义枚举类
              2.enum类实现了一个或者多个接口,他继承了java.lang.Enum类
              3.使用enum定义.非抽象的枚举类会默认使用final修饰符,因此不能派生子类
              4.枚举类的构造器只能使用private访问控制符,如果省略了,系统会默认使用了private

              5 .枚举类的所有实例必须在第一行显示列出,否则这个枚举类永远不可以产生实例

              6.枚举类默认使用了一个values()方法,该方法可以很方便的遍历所有的枚举值

八.垃圾回收

              概念:当对象、数组等引用类型实体时,系统会在内心村中为它分配一块内存区域,当这块内存不被任何引用变量引用时,这块内存将会变成垃圾
                特征:1.垃圾回收机制只负责回收对内存中的对象,不会回收任何物理资源
                            2.程序无法精确的控制垃圾回收的运行,垃圾回收只在合适的时候运行,当对象永久性的失去引用时,系统会回收它所占的类存
                            3.当垃圾回收机制回收人和对象之前,总会先笤俑他的finalize方法,该方法可能使对象再次复活
                            4.对象在内存中的状态:可达状态。可恢复状态。不可回复状态,调用system的gc()方法或者runtime对象gc()实例方法 可以强制垃圾回收
0 0
原创粉丝点击