java常用类ArraysCalendarSystemDateMathRandomCollection

xiaoxiao2021-02-28  6

1(1) 、Arrays--->对象数组:存储对象的一个数组           Student[] student = new Student[5] ;     Arrays:针对数组操作的工具类  (提供了一些针对数组排序和二分搜索法)   (2)、常用方法:          public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])          public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序          public static int binarySearch(int[] a,int key):二分搜索法: 在int类型的数组中查找key元素的索引 (3)、源码剖析: //以后在实际开发中,只要有引用类型,在对引用类型数据进行操作的时候,对引用类型的对象进行非空判断, //防止空指针异常(NullPointerException) public static String toString(int[] a) { if (a == null) //对数组进行非空判断 return "null"; int iMax = a.length - 1; //arr.length-1 //a--->arr if (iMax == -1) return "[]";

在Arrays进行二分搜索法时,当所搜索的元素不存在时,返回值的计算过程

int low = fromIndex; //最小索引 int high = toIndex - 1;// 最大索引 4 while (low <= high) { //如果最小索引小于=最大索引 int mid = (low + high) >>> 1; >>> :无符号右移动(位运算符) //中间索引:mid = 2 ,3 ,4 位^:位异或 位&:位与 位|:位或 << :左移动 有符合的数据表示法(原码,反码,补码) 计算机底层运算数据的时候:通过补码进行运算的 int midVal = a[mid]; // 查找中间索引对应的元素:arr[2] = 57 69 80 if (midVal < key) //判断:中间索引对应的元素 < key =577 low = mid + 1; //low = mid + 1; mid = (取到最大的mid的值) 4+1 = 5

2(1)、Calendar类:日历类

          Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间                的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。  (2)、是一个抽象类,如何实例化?            public static Calendar getInstance() :通过一个静态功能来创建日历了对象            Date类:(重点)            public abstract void add(int field,int amount)根据日历规则,为给定的日历字段添加或减去指定的时间量 (常用)            public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值 3(1)、System 类包含一些有用的类字段和方法。它不能被实例化。   (2)、public static void gc()运行垃圾回收器。          public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码;一般情况,需要终止Jvm,那么参数0          public static long currentTimeMillis()返回以毫秒为单位的当前时间   (3)、public static void arraycopy(Object src,int srcPos, Object dest,int destPos, int length)           从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束          src:原数组                                       srcPos :从原数组的哪个位置开始         dest:目标数组                                 destPos:到目标数组的哪个位置结束                    length:长度 4(1)java.util.Date: 类 Date 表示特定的瞬间,精确到毫秒  (2)、  构造方法:     public Date()表示分配它的时间(精确到毫秒)。     public Date(long date):创建一个日期对象,指定毫秒值   (需要将long 时间毫秒值转换成Date对象)     public void setTime(long time):设置毫秒值     public long getTime():将Date--->long的毫秒值    重点:Date的日期格式和日期的文本格式:String类型 之间进行转换 Date---->String(格式化)  String-->Date(解析)  中间的转换:使用中一个中间类:DateFormat,并且DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:   SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。    SimpelDateFormat的构造方法:   public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern(模式:规则)   SimpleDateFormat sdf = new SimpleDateFormat("xxx年xx月xx日") ;   日期和时间模式   年:   yyyy                             月:   MM                               日:   dd                             时:   hh                                 分:   mm                               秒:   ss //Date---String:(格式化) //创建一个日期对象 Date d = new Date() ; //创建SimpleDateFormat类对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); //public final String format(Date date):格式化 String str = sdf.format(d) ; System.out.println("str:"+str); System.out.println("----------------------"); //String:日期文本格式:---->Date:日期格式 // public Date parse(String source):解析 String strDate = "2018-6-25" ; //创建SimpleDateFormat类对象 // SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ; SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ; // 注意 :simpleDateFormat在解析文本格式的时候,里面 模式(规则)一定要和文本格式的模式一直,否则就出现PareseException Date dd = sdf2.parse(strDate) ; System.out.println("dd:"+dd);

5(1)、Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。 

 (2)、常用的方法:    public static int abs(int a):绝对值    public static double ceil(double a):向上取整    public static double floor(double a):向下取整    public static int max(int a,int b):求最大值    public static int min(int a,int b):求最小值    public static double pow(double a,double b):a的b次幂    public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0    public static int round(float a):四射五入    public static double sqrt(double a):一个数的正平方根 (3)面试题:有两个变量,让他们的值进行互换 (考官想问的是:你能否指定位^的特点)--->两数交换,用位异或    -->实际开发中:中间变量的方式进行互换   --> 位异或,位^的特点:一个数据被另一个数据位^两次,其值是它本身  System.out.println(a^b^b);  System.out.println(a^b^a);   System.out.println("a:"+a+",b:"+b);      //=号左边: a ,b,a   //=右边: a^b   a = a ^ b ;   b = a ^ b ;//b = a^b ^ b   a = a ^ b ; 6(1)、Random:是一个可以获取随机数的    (2)、public Random():无参构造方法           public Random(long seed) :指定long类型的数据进行构造随机数类对象            public int nextInt():获取随机数,它的范围是在int类型范围之内           public int nextInt(int n):获取随机数,它的范围是在[0,n)之间    7(1)、patten:正则表达式验证qq号,邮箱等   (2)、public String replaceAll(String regex,String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正             则表达式的子字符串。           public String[] split(String regex) :字符串的分割功能 

字符

x  字符 x

\\ 反斜线字符

\t 制表符 ('\u0009')

\n 新行(换行)符 ('\u000A')

\r 回车符 ('\u000D')  

 

字符类

[abc] ab c(简单类)

[^abc] 任何字符,除了 ab c(否定)

[a-zA-Z] a z A Z,两头的字母包括在内(范围)

  

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配)

\d 数字:[0-9]

\D 非数字: [^0-9]

\s 空白字符:[ \t\n\x0B\f\r]

\S 非空白字符:[^\s]

\w 单词字符:[a-zA-Z_0-9]

\W 非单词字符:[^\w]   

  

边界匹配器

^ 行的开头

$ 行的结尾

\b 单词边界  

\A 输入的开头

\Z 输入的结尾,仅用于最后的结束符(如果有的话)

\z 输入的结尾

  

Greedy 数量词

X? X,一次或一次也没有

X* X,零次或多次

X+ X,一次或多次

X{n} X,恰好 n

X{n,} X,至少 n

X{n,m} X,至少 n 次,但是不超过 m

8(1)、集合collection导入:数组 ,字符串缓冲区(StringBuffer)对于字符串缓冲区来说,在内存中始终存储的是字符串,不能满足要            求;数组呢,数组的长度是固定的,不符合长度编号的要求,所有Java提供了一个Collection 集合; (2)、面试题:  数组和集合的区别?    1)长度区别:     数组长度固定    集合长度可变    2)内容的区别     数组可以存储同一种类型的元素     集合可以存储多种类型的元素    3)存储类型的区别     数组:可以存储基本类型,也可以存储引用类型  String[] str = {"hello","world","java",100} ; 错误的     集合:只能存储引用类型

(3)、Collection:层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有       重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。       JDK 不提供此接口的任何直接 实现:它提供更具体的子接口,更具体的实现类  基本功能:  添加功能:boolean add(Object e) add()方法的源码 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; //只要添加就返回true,所以直接添加即可,不用赋值输出; }

删除功能: void clear() :删除集合中所有元素(暴力删除)                 boolean remove(Object o):删除集合中的指定元素 判断功能: boolean contains(Object o):集合中是否包含指定的元素 获取功能: int size() :获取集合中的元素数                boolean retainAll(Collection c) :交集功能:   A集合对B集合取交集元素  :思考                boolean removeAll(Collection c):删除一个集合中所有元素:  转换功能:Object[] toArray() :将集合转换成数组

转载请注明原文地址: https://www.6miu.com/read-2649988.html

最新回复(0)