泛型与枚举
Posted macro-renzhansheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泛型与枚举相关的知识,希望对你有一定的参考价值。
1:集合当中使用泛型:
【1】统一集合当中的数据类型,更方便的操作数据。
【2】参数化的类型
【3】规定要操作的数据类型
2:泛型类||泛型方法||泛型接口
【1】泛型表示:大写字母
【2】默认为object;自定义 T E V K
[!]:泛型方法与泛型类中的方法区别
泛型形参 &&& 泛型实参
【3】通常来说:不会对泛型方式传入的数据操作!|||用反射也是特殊场景。【本身对操作什么数据类型不明确!
【4】泛型鳄梨和泛型接口的泛型,在实现或者继承的情况下,重写或者结成的方法,泛型参数和返回值类型必须保证类型一致。
【5】泛型接口必须指定,而实现类可以不必指定!如果不指定,则沿用其接口的泛型类型。
3:泛型通配符 <?> :既可以规定泛型形参,也可以规定泛型实参!
[1]? 代表任意泛型; ?是泛型实参,不是泛型形参!
<? extends Number>
<? super Object>
??<? implements C>
4:泛型方法:该方法的泛型是独立在当前方法当中,不与该类当中的其他方法公用同一个类型。
【1】在方法的修饰符和返回值之间声明。
枚举:不建议使用!!
【1】枚举的构造必须是私有的!构造是针对所有的枚举的元素。
【2】每一个枚举的元素都相当于一个类。
【3】枚举中的类型是单例,有几个类型创建几个单例。
【4】枚举元素(T t)---对应相应的构造方法!
-接口组织枚举
--枚举常见的问题:
【1】有可能会大量产生单例{非致命的问题}
【2】在网络当中,枚举和很多主流的数据结构不兼容。{web开发中}
异常的本质:标识!
【1】捕获异常
【!】不要把一个代码块中所有的代码都放在一个try…catch 代码块中捕获异常中!
【2】自动抛出异常
{!}异常最终抛无可抛,则必须进行处理。
在中途被处理过的异常,则调用者就不必再处理了。
【3】手动抛出异常
---根据使用者的实际情况!
---运行时异常不是必须被处理的!
---checked异常时必须被处理的异常!
[4]自定义异常
---创建一类类,符合异常命名规范
包装类:
【1】Java当中,JDK为基本数据类型设定了包装类。——集合中必须用包装类
【2】NumberFormatException:对于数值,其包装类型的构造和方法当中,如果用了不属于数值的书写方式,报前所述异常。ex: “123aabc” 、 “123L”、”234D”等
【3】字符的包装类型,只有其本身类型的构造,没有字符串类型参数的构造。ex: ‘A’ ;
【4】布尔类型的包装类: s!=null && s.equalsIgnoreCase(“true”);才会返回 true.否则,任意其他类型或NULL 为 false.
包装类性的方法:
【1】XXvalue():包装类变为基本数据类型。 intValue()、byteValue(){对象调用 }
【2】Integer.toString(123) || 对象.toString() || 123+””
【3】Integer.parseInt(“123”) 将字符串变为基本数据类型
【4】Integer.valueOf(123) || Integer.valueOf(“123”) 把基本数据类型或者字符串变为包装类型
自动装箱、自动拆箱
---针对自己的框架设计相应的包装类型,如 Hadoop当中
【5】在尾部工程当中的实体类,其中作为参数的数值类型,通常都定义为包装类,因为包装类型有 null值。
字符串
【1】直接以双引号赋值,相当于常量。常量之间是相等的;
【2】new出来的String对象存在于堆内存中,所以不可以与常量比较。
【3】字符串对象.intern(),相当于一个常量。
static常量,内存唯一
【4】字符串的本质:char[]数组
【5】equals(Object obj)源码
(1)instanceOf String
(2)比较长度
(3)遍历数组
【6】替换元素:replaceAll的匹配规则——正则表达式
【7】注意: . 比较特殊,需要转义。
ex: 字符串对象.split(“\.”)
【8】获取字符串编码:以UTF-8的格式,获取当前字符串编码集
String string = new String(str1.getBytes(“UTF-8”),”ISO-8859-1”);
【9】字符串的拼接本质是操作数组,所以可以类比 ArrayList.add()grow()
---StringBuffer、StringBuilder,是一种高效扩展string对象。
在实际的web开发当中,我们的应用,通常是被分配到某一个单独的线程里,除非他们处于常量状态,或者单例模式,使用StringBuffer。
SimpleDateFormat
sdf = new SimpleDateFormat(str formate);
sdf.formate(Date date)
Date dt = new Date();
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); return myFmt.format(dt);
sdf.parse(str_date)
使用Calendar的原因:
-Calendar为单例模式
-Date不唯一,程序执行中的生成Date对象的时间比较基准不唯一!
以上是关于泛型与枚举的主要内容,如果未能解决你的问题,请参考以下文章