轻松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的包装类为Character3.在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()实例方法 可以强制垃圾回收
- 轻松java学习之路3
- 轻松java学习之路1
- 轻松java学习之路2
- 轻松java学习之路4
- 轻松java学习之路5
- 轻松学习JAVA设计模式
- XML轻松学习手册(3)XML概念之二
- XML轻松学习手册(3)XML概念之二
- 轻松学习SNMP协议之入门篇
- 轻松学习Linux之认识内存管理机制
- 轻松学习Linux之内核编译
- 轻松学习Linux之入门篇
- 轻松学习Linux之认识Shell
- 轻松学习Linux之自动执行任务
- 轻松学习Linux之AWK使用初步
- 轻松学习Linux之本地安装系统
- 轻松学习之 Objective-C消息转发
- 轻松学习之 IMP指针的作用
- 集群通信组件tribes之通道拦截器
- [2015.8.1]C++学习总结
- HDU杭电1276 士兵队列训练问题
- SDWebImage分析--源代码详细分析
- 数据结构01_数据结构基本知识介绍
- 轻松java学习之路3
- Java 内存模型及GC原理 --经典
- hdu2524 矩形A+B
- codeforces 435B Pasha Maximizes
- vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Android设计模式系列-适配器模式
- Python正则表达式指南
- epoll详解
- 【Cocos2d入门教程八】浅析Cocoss2d下的多点触控