java数组的排序和查找难点解析.docx
- 文档编号:27027510
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:11
- 大小:18.76KB
java数组的排序和查找难点解析.docx
《java数组的排序和查找难点解析.docx》由会员分享,可在线阅读,更多相关《java数组的排序和查找难点解析.docx(11页珍藏版)》请在冰豆网上搜索。
java数组的排序和查找难点解析
1数组高级
●排序
•冒泡排序
•相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
•选择排序
•从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
●查找
•基本查找数组元素无序
•二分查找数组元素有序
2Arrays类概述及其常用方法
●Arrays类概述
•针对数组进行操作的工具类。
•提供了排序,查找等功能。
●成员方法
•publicstaticStringtoString(int[]a)
•publicstaticvoidsort(int[]a)
•publicstaticintbinarySearch(int[]a,intkey)
3Arrays类常用方法源码详细解释
●publicstaticStringtoString(int[]a)
源码解析
●publicstaticintbinarySearch(int[]a,intkey)
源码解析
4基本类型包装类概述
●将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
●常用的操作之一:
用于基本数据类型与字符串之间的转换。
●基本类型和包装类的对应
•Byte,Short,Integer,Long,Float,Double
Character,Boolean
5Integer类概述及其构造方法
●Integer类概述
•Integer类在对象中包装了一个基本类型int的值
•该类提供了多个方法,能在int类型和String类型之间互相转换,还提供了处理int类型时非常有用的其他一些常量和方法
●构造方法
•publicInteger(intvalue)
•publicInteger(Strings)
6Integer类成员方法
●int类型和String类型的相互转换
•int–String
•String–int
•publicintintValue()
●publicstaticintparseInt(Strings)
●publicstaticStringtoString(inti)
●publicstaticIntegervalueOf(inti)
●publicstaticIntegervalueOf(Strings)
●常用的基本进制转换
•publicstaticStringtoBinaryString(inti)
•publicstaticStringtoOctalString(inti)
•publicstaticStringtoHexString(inti)
●十进制到其他进制
•publicstaticStringtoString(inti,intradix)
●其他进制到十进制
publicstaticintparseInt(Strings,intradix)
Java程序中的进制范围
2-36
6JDK5的新特性
●JDK1.5以后,简化了定义方式。
•Integerx=newInteger(4);可以直接写成
•Integerx=4;//自动装箱。
•x=x+5;//自动拆箱。
通过intValue方法。
●需要注意:
•在使用时,Integerx=null;上面的代码就会出现NullPointerException。
●通过工具XJad查看底层调用的方法
7Integer的面试题
●Integeri=1;i+=1;做了哪些事情
●缓冲池(看程序写结果)
•通过查看源码知道为什么
●Integeri1=newInteger(127);
●Integeri2=newInteger(127);
●System.out.println(i1==i2);
●System.out.println(i1.equals(i2));
●Integeri3=newInteger(128);
●Integeri4=newInteger(128);
●System.out.println(i3==i4);
●System.out.println(i3.equals(i4));
●Integeri5=127;
●Integeri6=127;
●System.out.println(i5==i6);
●System.out.println(i5.equals(i6));
●Integer.valueOf(127);
●Integeri7=128;
●Integeri8=128;
●System.out.println(i7==i8);
●System.out.println(i7.equals(i8));
8Character类概述及其构造方法
●Character类概述
•Character类在对象中包装一个基本类型char的值
•此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然
●构造方法
•publicCharacter(charvalue)
9Character类成员方法
●publicstaticbooleanisUpperCase(charch)
●publicstaticbooleanisLowerCase(charch)
●publicstaticbooleanisDigit(charch)
●publicstaticchartoUpperCase(charch)
●publicstaticchartoLowerCase(charch)
10正则表达式概述及基本使用
●正则表达式:
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
其实就是一种规则。
有自己特殊的应用。
●举例:
校验qq号码.
1:
要求必须是5-15位数字
2:
0不能开头
11正则表达式的组成规则
●规则字符在java.util.regexPattern类中
●常见组成规则
•字符
•字符类
•预定义字符类
•边界匹配器
•数量词
12正则表达式的应用
●判断功能
•publicbooleanmatches(Stringregex)
●分割功能
•publicString[]split(Stringregex)
●替换功能
•publicStringreplaceAll(Stringregex,Stringreplacement)
●获取功能
•Pattern和Matcher类的使用
●判断功能:
校验电话号码
●分割功能:
●aa,bb,cc
●aa.bb.cc
●aabbcc
●文件路径
●替换功能:
●把数用*替换
获取功能:
●dajiatingwoshuo,jintianyaoxiayu,bushangwanzixi,gaoxingbu?
13Math类概述及其成员方法
●Math类概述
•Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
●成员方法
•publicstaticintabs(inta)
•publicstaticdoubleceil(doublea)
•publicstaticdoublefloor(doublea)
•publicstaticintmax(inta,intb)min自学
•publicstaticdoublepow(doublea,doubleb)
•publicstaticdoublerandom()
•publicstaticintround(floata)参数为double的自学
publicstaticdoublesqrt(doublea)
获取随机数:
1-100之间
intnumber=(int)(Math.random()*100)+1
获取随机数:
start到end之间
publicstaticintgetRandom(intstart,intend){
return(int)(Math.random()*(end-start+1))+start;
}
14Random类概述及其构造方法
●Random类概述
•此类用于产生随机数
•如果用相同的种子创建两个Random实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
●构造方法
•publicRandom()
•publicRandom(longseed)
Random类成员方法
●publicintnextInt()
●publicintnextInt(intn)
15System类概述及其成员方法
●System类概述
•System类包含一些有用的类字段和方法。
它不能被实例化。
●成员方法
•publicstaticvoidgc()
•publicstaticvoidexit(intstatus)
•publicstaticlongcurrentTimeMillis()
•publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)
●System.gc()可用于垃圾回收。
当使用System.gc()回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源。
在没有明确指定资源清理的情况下,Java提高了默认机制来清理该对象的资源,就是调用Object类的finalize()方法。
finalize()方法的作用是释放一个对象占用的内存空间时,会被JVM调用。
而子类重写该方法,就可以清理对象占用的资源,该方法有没有链式调用,所以必须手动实现。
●从程序的运行结果可以发现,执行System.gc()前,系统会自动调用finalize()方法清除对象占有的资源,通过super.finalize()方式可以实现从下到上的finalize()方法的调用,即先释放自己的资源,再去释放父类的资源。
●但是,不要在程序中频繁的调用垃圾回收,因为每一次执行垃圾回收,jvm都会强制启动垃圾回收器运行,这会耗费更多的系统资源,会与正常的Java程序运行争抢资源,只有在执行大量的对象的释放,才调用垃圾回收最好
16BigInteger类概述及其构造方法
●BigInteger类概述
•可以让超过Integer范围内的数据进行运算
●构造方法
•publicBigInteger(Stringval)
●Integeri=newInteger("2147483648");
●System.out.println(i);
●BigIntegerbi=newBigInteger("2147483648");
●System.out.println(bi);
17BigInteger类成员方法
●publicBigIntegeradd(BigIntegerval)
●publicBigIntegersubtract(BigIntegerval)
●publicBigIntegermultiply(BigIntegerval)
●publicBigIntegerdivide(BigIntegerval)
●publicBigInteger[]divideAndRemainder(BigIntegerval)
●BigIntegerbi1=newBigInteger("100");
●BigIntegerbi2=newBigInteger("50");
●System.out.println(bi1.add(bi2));
●System.out.println(bi1.subtract(bi2));
●System.out.println(bi1.multiply(bi2));
●System.out.println(bi1.divide(bi2));
●BigInteger[]b=bi1.divideAndRemainder(bi2);
●System.out.println(b[0]);
●System.out.println(b[1]);
18BigDecimal类概述及其构造方法
●由于在运算的时候,float类型和double很容易丢失精度,演示案例。
所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
●BigDecimal类概述
•不可变的、任意精度的有符号十进制数。
●构造方法
publicBigDecimal(Stringval)
问题的引出:
在运算的过程中,float类型和double类型容易引起精度的丢失
System.out.println(0.09+0.01);
System.out.println(1.0-0.32);
System.out.println(1.015*100);
System.out.println(1.301/100);
publicBigDecimal(doubleval)查看API的解释,说其有不可预知性。
而字符串参数的是结果可预知的。
19BigDecimal类成员方法
●publicBigDecimaladd(BigDecimalaugend)
●publicBigDecimalsubtract(BigDecimalsubtrahend)
●publicBigDecimalmultiply(BigDecimalmultiplicand)
●publicBigDecimaldivide(BigDecimaldivisor)
●publicBigDecimaldivide(BigDecimaldivisor,intscale,
introundingMode)
BigDecimalbd1=newBigDecimal("0.09");
BigDecimalbd2=newBigDecimal("0.01");
System.out.println(bd1.add(bd2));
BigDecimalbd3=newBigDecimal("1.0");
BigDecimalbd4=newBigDecimal("0.32");
System.out.println(bd3.subtract(bd4));
BigDecimalbd5=newBigDecimal("1.015");
BigDecimalbd6=newBigDecimal("100");
System.out.println(bd5.multiply(bd6));
BigDecimalbd7=newBigDecimal("1.301");
BigDecimalbd8=newBigDecimal("100");
System.out.println(bd7.divide(bd8));
System.out.println(bd7.divide(bd8,2,BigDecimal.ROUND_HALF_UP));
20Date类概述及其方法
●Date类概述
•类Date表示特定的瞬间,精确到毫秒。
●构造方法
•publicDate()
•publicDate(longdate)
●成员方法
•publiclonggetTime()
•publicvoidsetTime(longtime)
21DateFormat类概述及其方法
●DateFormat类概述
•DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
•是抽象类,所以使用其子类SimpleDateFormat
●SimpleDateFormat构造方法
•publicSimpleDateFormat()
•publicSimpleDateFormat(Stringpattern)
●成员方法
•publicfinalStringformat(Datedate)
•publicDateparse(Stringsource)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 数组 排序 查找 难点 解析