中级任务笔记

1.1 方法的可变参数

Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。

 

可变参数的特点:

 

1)只能出现在参数列表的最后;

 

2...位于变量类型和变量名之间,前后有无空格都可以;

 

3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。

 

public class Varable {

 public static void main(String [] args){

  System.out.println(add(2,3));

  System.out.println(add(2,3,5));

 }

 public static int add(int x,int ...args){

  int sum=x;

  for(int i=0;i<args.length;i++){

   sum+=args[i];

  }

  return sum;

 }

}



1.2 装箱与拆箱

基本类型与其对应封装类之间能够自动进行装换,其本质是java的自动装箱和拆箱过程。

装箱是指将基本类型数据值转换成对应的封装类对象,即将栈中的数据封装成对象存放到堆中的过程。

拆箱是装箱的反过程,是将封装的对象转换成基本型数据值,即将堆中的数据值存放到栈中的过程。

Int a = 10;

Integer obj = new Integer(10);

Integer obj1 = 10;  //装箱

Int b = obj;    //拆箱



1.3 Math和Date关键字

Math

Math类包含常用的执行基本数学运算的方法,如初等指数、对数、平方根和三角函数等。Math类提供的方法都是静态的,可以直接调用,无需实例化。常用的方法如下:

 

 

Date

 

一、Date类型的初始化

Date(int year, int month, int date);

直接写入年份是得不到正确的结果的。

因为javaDate是从1900年开始算的,所以前面的第一个参数只要填入从1900年后过了多少年就是你想要得到的年份,月需要减1,日可以直接插入。

 

二、Date类型的比较

Date a;

Date b;

a.after(b)返回一个boolean,如果a的时间在b之后(不包括等于)返回true

b.before(a)返回一个boolean,如果b的时间在a之前(不包括等于)返回true

a.equals(b)返回一个boolean,如果a的时间和b相等返回true



1.4 final关键字

Final关键字表示“不可改变”的意思,用于修饰变量、方法和类:

final关键字修饰变量时,表示该变量是常量;

final关键字修饰方法时,表示该方法不可被子类重写,即最终方法;

final关键字修饰类时,表示该类不可被子类继承,即最终类。

1.5单例模式

单例模式有以下特点:

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

 

1.6抽象类

定义抽象类

包含抽象方法的类

抽象方法:只有方法声明,没有方法实现的方法称为“抽象方法”

抽象类是对问题领域进行分析后得出的抽象概念,是对一批看上去不同,但本质上相同的具体概念的抽象。

定义抽象类和抽象方法的规则如下:

Abstract关键字放在class前,指明该类是抽象类;

Abstract关键字放在方法的返回类型前,指明该方法是抽象方法,抽象方法没有方法体;

抽象类不能被实例化即无法使用new关键字直接创建抽象类的实例,即使抽象类不包含抽象方法也不行;


使用抽象类

 

抽象类不能实例化,只能被当成父类来继承。从语义角度上来讲,抽象类是从多个具有相同特征的类中抽象出来的一个父类,具有更高层次的抽象,作为其子类的模板,从而避免子类设计的随意性。

 

不能直接实例化一个抽象类,但抽象变量可以指向子类。



1.7抽象类和接口的比较

接口和抽象类有很多相似之处,都具有如下特点:

接口和抽象类都不能被实例化,需要被其他类实现或继承。

接口和抽象类的类型变量都可以指向其实现类或子类的实例对象。

接口和抽象类都可以包含抽象方法,实现接口或继承抽象类时都必须实现这些抽象方法

 

接口和抽象类的区别:

 

接口体现的是一种规范,这种规范类似于总纲,是系统各模块应该遵循的标准,以便各模块之间实现耦合、以及通信功能。

 

抽象类体现的是一种模板式设计。抽象类可以被当成系统实现过程中的中间产品,该产品已经实现了部分功能但不能当成最终产品,必须进一步完善,而完善可能有几种不同方式。

 

 

 

1.8 instanceof关键字

Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

 

用法: 实例对象    instanceof      类名



1.9泛型

泛型定义

泛型是将数据类型参数化,即在编写代码是将数据类型定义成参数,这些类型参数在使用之前再进行指明。泛型提高了代码的重用性,使得程序更加灵活、安全和简洁。

 

通配符

通配符的几种形式:

1.无限定通配符,<?>

2.上限通配符,<?  extends  Number>。表示参数类型只能是Number的子类。

3.下限通配符,<?  supper Number>。表示参数类型只能是Number的父类。

 

有界类型

泛型的类型参数可以有 各种类型,但有时候需要对类型参数的取值进行一定成都的限制。以便类型参数在指定范围内。针对这种情况,java提供了“有界类型”,来限制类型参数的取值范围。有界类型分为两种:

使用extends关键字声明类型参数的上界。

使用super关键字声明类型参数的下界。

 

 

1.10集合类(Set、Queue、Map)

Set接口及其实现类

Set集合类似一个罐子,可以将多个元素丢进罐子里,但不能记住元素的添加顺序,因此不允许包含相同的元素。Set接口继承Collection接口,没有提供任何额外的方法,其用法与Collection一样,只是特性不同。

Set接口常用的实现类包括HashSetTreeSetEnumSet,这三个实现类各具特色:

 

 

Queue接口及其实现类

队列Queue通常以“先进先出”的方式排序各个元素,即最先入队的元素最先出队。Queue接口继承Collection接口,除了Coollection接口中的基本操作外,还提供了队列的插入、提取和检查操作,且每个操作都存在两种形式:一种操作失败时爬出异常;另外一种操作失败时返回一个特殊值。

 

链表列表LinkedListDequeList两个接口的实现类,兼具队列和列表两种特性,是最常使用的集合类之一。

 

Map接口及其实现类

 

Map接口是集合框架的另一个根接口,与Collection接口并列。

Map是以key/value键值对映射关系存储的集合,其key-value键值对映射关系如图所示:

 

 

HashMapTreeMapMap体系中两个常用实现类。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值