Java(16-19)

0、 正则表达式:

str.matches()  //判断字符串是否匹配 

str.split()  // 根据给定正则表达式的匹配规则。拆分此字符串,返回字符串数组。

str.replaceAll() //将符合规则的字符串内容,全部替换为指定字符串。

 

1、DateFormat类常用方法:  (日期/时间格式化子类的抽象类)

DateFormat df = new SimpleDateFormat("yyyy年MM月dd日")。
.format()  作用:用来将Date对象转换成String。          .parse()  作用:把string转换成date对象。

2、Calendar类  .getInstance()作用:使用默认时区和语言环境获得一个日历。 get/set/add方法   

3、注意事项:西方星期的开始为周日,中国为周一。在Calendar类中,月份的表示是以0-11代表1-12月。

4、Date 日期时间类   new Date().getTime()

5、高级算法:日历设置到指定年份的3月1日,用add向前偏移1天,获取到的天数,29则是闰年。

6、SimpleDateFormat     

7、lang包里的类,不需要导入,Integer.parseInt(string);   Integer.toString(int)

8、自动装箱:基本数据类型,直接变成对象。自动拆箱:对象中的数据变回基本数据类型。  共同弊端:有可能出现空指针的异常。  in.inValue();

9、数据在byte范围内,JVM不会重新new对象。127以内,节约内存。

10、system.exit(0);  退出虚拟机,所有程序全停止。 

11、ssystem.gc();收对象垃圾    arrayCopy(); 数组复制

12、Math.ceil(参数);返回大于或等于参数d的最小整数。

12、Math.floor(参数);返回小于或等于参数d的最大整数。

13、Math.pow(2,3)  // 8.0   double类型,2的三次方。

14、Math.sqrt(参数)   //开方    参数为负数,返回NaN

15、   Arrays.sort(参数)  // 对数组升序排序 (快速排序)

16、binarySearch() 数组二分法搜索  ,返回元素在数组中的索引。元素不存在,返回的是 (-插入点-1); 

17、Array.toString(arr)  //  将数组变成字符串。

18、BigInteger  //  java.math     超过long取值范围的整数,使用BigInteger对象 计算。  其构造方法:传递字符串,没有长度限制,数字格式

19、BigInteger的四则运算,通过调方法实现,计算的结果也只能是BigInteger对象;java可以三元运算,减少代码量。 加法:b1.add(b2);  新建BigInteger对象接收返回值。减法:b1.subtract(b2);  乘法:b1.multiply(b2);  除法:b1.divide(b2);    ======>>完成超级大数字运算   (大数据)

20、数值运算中,结果的无限接近与拥有是两回事。java浮点计算精度失真原因:计算机二进制中,表示浮点数不精确造成。

21、超级大型的浮点数据,提供高精度的浮点运算,BigDecimal()        提高运算精度,不要直接带浮点数算四则运算,构造方法传String类型参数。

22、day18>   Collection 集合的基类。多态使用,Collection接口方法:clear(),contains(),toArray(),使用Object[]接收 返回值,remove(),方法返回boolean,删除成功返回true。

23、java三种长度表现形式:1、数组.length   字符串.length()    集合.size()   ==返回值都是int类型 。  获取文件的大小 =>   file.length()

24、集合框架图:  Collection  集合祖宗,擒贼先擒王。

 

25、Iterator迭代器 :作用:帮助我们做集合遍历的。集合的多种,迭代器可屏蔽不同集合取出方法,变成一种方法取出。

 

26、这是一个很严重的思想就是,面向接口思想编程。Iterator it = array.iteractor()  ,,运行结果就是Iteractor接口的实现类的对象。ArrayList重写方法iteractor(),返回了Iteractor接口实现类的对象。it是接口的实现类的对象,调用hasNext 和 next 集合元素迭代。迭代器是迭代集合的通用模式。(Iteractor接口,找实现类)   next()指针初始指向-1索引。 

27、HashSet(),无序集合。 

28、集合迭代器 元素的向下转型:Collection 不加类型,就会存储为Object类型对象。需要调用子类特有的方法,必须向下转型  String s = (String) it.next();

29、增强for循环  for(int i : arr){}   好处:代码简洁,方便对容器遍历。弊端:没有索引,不能操作容器内元素。总结:在不需要改变集合内元素的情况下,可以使用。即只用于遍历,可以调用对象的方法。 s.length();   //字符串增强for遍历    (jdk 1.5以后引入)

 

30、(18_13)   集合没有限制,可以存储任意类型。  Java引 入泛型,来解决Collection 存储自动装箱的类型,调用方法报错问题。  col.add(1)      for(String s : col){  sop(s.length()  }   //会报错。整型int 是调length方法。

31、ClassCastException  类型转换异常。

32、泛型的概念:使用集合时,必须明确集合中元素的类型,这种方式就称为泛型。

33、一切为了程序的安全性:集合当中加入泛型,固定住它的数据类型,是非常有必要的。

34、java靠编译手段来保证程序的安全性,不符合的数据类型,就不让你编译通过。编译后的class文件是没有泛型的,所以说java是假泛型,java反编译回来是没有泛型的。据说c++就有真泛型。

35、(18_16)泛型类。 举例子:ArrayList<Integer>  arr = new ArrayList<Integer>();   泛型类  ArrayList<E>  E为指定的数据类型,贯穿其所有方法属性调用的返回值类型。

36、(17-1) 8种基本类型包装类,作用:扩展基本类型的功能,由浏览器传过来的字符串,可以转int数据类型。 Integer i = parseInt("12");//字符串类型转int类型。同理!

 37、(18_18)泛型的接口:先实现接口,不理会泛型, public class ArrayList(E) implements List(E){}   调用者的好处: new ArrayList<String>();  //实现类实现接口的同时,也指定了数据类型。

38、泛型的好处:保证程序的安全性,避免类型强转的麻烦(classcastexception:数据类型转换异常)。将转换异常提前至编译时期,那么开发人员就知道编译失败====,  避免出现强转自动装箱导致调用方法编译失败等问题出现的可能。

39、编译时期是给开发者看的。运行时期开发者看不了。

40、泛型的通配符:?     以图举例:

41、集合框架==》泛型的限定:   本案例,父类固定Employee,但是 子类可以 无限  ?    

private static void iteractor(ArrayList<?   extends Employee> array) {}

?   extends Employee   :限制的是父类,上限限定,可以传递Employee,传递它的子类对象。

?   super  Employee   :限制的是子类,下限限定,可以传递Employee,传递它的父类对象。

42、List接口派系,继承Collection接口。List接口特点:有序、索引、可重复元素。与set刚好相反。其实现类有ArrayList、LinkedList。

43、java的String是引用类型,所以不能在判断语句里直接用 == ,而是要用 equals()方法。

44、迭代器的并发修改异常 ConcurrentModificationException  产生原因:就是在遍历的过程中,使用集合的方法修改了集合的长度。这是不允许的。

45、LIist集合存储数据的常用存储结构有:堆栈、队列、数组、链表。

46、数组查找快(平时用的多),增删慢,而链表查找慢,增删快。

47、查询用ArrayList(底层数据结构是数组) ,增删用LinkedList(底层数据结构是链表)。两者共同点,线程不安全。

48、ArrayList取代了jdk1.0的vector同步数组,。set接口特点不重复元素,无索引,可用于去重需求。

49、set集合底层本质是借用了map集合。

50、set接口的实现类是HashSet  (哈希表)。

51、集合分两大派系:Collection 和 Map实例。

52、在内存中,数组复制是一个相当耗费内存资源的动作。

53、哈希表(链表数组结合体)---------------数据结构   

 

 54、new HashSet(初始容量,加载因子)  ///初始容量默认16,加载因子默认0.75。

55、字符串对象的哈希值是自己的算的。重写方法。

56、哈希表存储对象的依据:哈希值和equals。  新对象存储过程,其计算哈希值对比表中哈希值,有就再对比equals,如果为true就是重复元素,如果为false,就存储进对应的桶中。让前一个对象记住当前存储对象的地址。(挂桶)

57、(集合框架)哈希表的存储自定义对象。

58、自定义对象重写HasCode和equals

59、LinkedHashSet  基于链表的哈希表实现  ,具有顺序,存储和取出的顺序相同,线程不安全,运行速度快。双向链表特点,保证了迭代的顺序。

60、对象存储哈希表,去掉重复的元素,依据对象自己的hashCode,equals重写目标,让对象中属性值name,age 如果属性值相同,得到相同的哈希值。

61、LinkedHashSet 自身特性:具有存储顺序,存储和取出的顺序相同。维护着一个运行于所有条目的双重链接列表。线程不安全的集合,运行速度快。

62、双向链表含义:第一条:已有的记住后来的。第二条链:后来的记住已有的。

63、LinkedList<String> ll = new LinkedList<String>();//链表底层实现 特点:查询慢增删快。

ArrayList<String> al = new ArrayList<String>();//数组结构底层实现 特点:查询快增删慢。

64、8种基本数据类型以及包装类重写hasCode和equas就是为了判断有无重复元素。

65、hasCode和equals方法的面试题:

 

 

66、当equals方法被重写时,通常有必要重写hacCode方法,以维护hasCode方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

 

转载于:https://www.cnblogs.com/ivan5277/p/9936535.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值