黑马程序员——排序、正则表达式、时间类
来源:互联网 发布:淘宝付费流量是什么 编辑:程序博客网 时间:2024/06/09 20:58
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------
一.排序
1选择排序
int[] arr = {66,55,44,33,22,11};
原理:如果拿0角标上的元素依次和后面的元素进行比较,
第一次内循环结束后,最小值出现在了0角标位置。
arr[0]与arr[1-5]比了五次
arr[1]与arr[2-5]比了四次
arr[2]与arr[3-5]比了三次
arr[3]与arr[4-5]比了二次
arr[4]与arr[5]比了一次
arr[x]与arr[y]比较
数组长度是6
for (int x = 0;x < arr.length - 1;x++){ for (int y = x + 1;y < arr.length;y++){ if (arr[x] > arr[y]){ int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } }}
2冒泡排序
int[] arr = {66,55,44,33,22,11};
原理:两个相邻元素进行比较,第一次比较完以后,最大值出现在了最大角标处。
第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4],arr[4]与arr[5],比了五次
第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比了四次
第三次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比了三次
第四次:arr[0]与arr[1],arr[1]与arr[2]比了二次
第五次:arr[0]与arr[1]比了一次
for (int x = 0;x < arr.length - 1; x++){ //-1防止角标越界 //-x为了提高效率 for (int y = 0;y < arr.length - 1 - x;y++){//6 if (arr[y] > arr[y+1]){ int temp = arr[y]; arr[y] = arr[y+1]; arr[y+1] = temp; } }}
3,查找
A:无序数组
int[] arr = {33,22,11,44,55,66};public static int getIndex(int[] arr,int key) { for (int x = 0;x < arr.length;x++){ if (key == arr[x]){ return x; } } return -1;}
B:有序数组 二分查找
数组长度是6,最大角标值是5
public static int getIndex(int[] arr,int key) { int min = 0; int max = arr.length-1; int mid = (min + max)/2; while (key != arr[mid]){ if (key > arr[mid]){ min = mid + 1; }else if (key < arr[mid]){ max = mid - 1; } if (min > max){ return -1; } mid = (min + max)/2; } return mid;}
二.正则表达式
1.什么是正则表达式
是一种字符串的约束格式, 例如在某些网站上填写邮箱的时候, 如果乱写会提示输入不合法, 这种验证就
是使用正则表达式做的.
2.匹配
String里的matches() 验证一个字符串是否匹配指定的正则表达式"18612345678".matches("1
[34578]\d{9}");
3.分割
String里的split() 用指定正则表达式能匹配的字符作为分隔符, 分割字符串
4.替换
String里的replaceAll("","") 把字符串中能匹配正则表达式的部分替换为另一个字符串
5.查找
Pattern.compile() 创建正则表达式对象
Pattern.matcher() 用正则表达式匹配一个字符串, 得到匹配器
Matcher.find() 查找字符串中是否包含能匹配正则表达式的部分
Matcher.group() 获取匹配的部分
三.BigInteger
1.创建对象
可以使用BigInteger(String)来创建一个很大的整数, 精度可以无限大, 值创建之后不会被改变(类似
String)
2.常用方法
BigInteger add(BigInteger val) //加
BigInteger subtract(BigInteger val) //减
BigInteger multiply(BigInteger val) //乘
BigInteger divide(BigInteger val) //除
BigInteger mod(BigInteger m ) //模
BigInteger max(BigInteger val) //两个数的最大值
BigInteger min(BigInteger val) //两个数的最小值
四.BigDecimal
1.创建对象
BigDecimal(double); //不建议用,运算结果不精确
BigDecimal(String); //可以,但是每次都要传字符串给构造函数
static BigDecimal valueOf(double) //可以,而且可以直接传double数
因为double数是不精确,是无限接近那个数,用BigDemal这个类可以让其精确
2.常用方法
BigDecimal add(BigDecimal augend)
BigDecimal subtract(BigDecimal subtrahend)
BigDecimal multiply(BigDecimal multiplicand)
BigDecimal divide(BigDecimal divisor)
五.时间类
1.Date
比较古老的一个类, 大多数方法已过时, 但通常我们还会用它来获取当前时间,new Date()可以创建日期
对象, 然后使用SimpleDateFormat可以将其格式化成我们需要的格式,通常使用的格式为: "yyyy-MM-dd
HH:mm:ss", 具体格式说明详见SimpleDateFormat类yyyy年MM月dd日 E HH:mm:ss
a.获取当前时间的毫秒值
Date d = new Date();
d.getTime(); //获取的是1970年1月1日0时0分0秒到当前时间的毫秒值
System.currentTimeMillis();
b.将毫秒值转换成时间对象
Date d = new Date(毫秒值) //通过毫秒值获取时间对象
Date d = new Date(); //创建时间对象
d.setTime(毫秒值); //根据毫秒值修改时间对象
2.Calendar
很多方法都是替代了Date类的方法, 最常用的就是
int get(int field)(Calendar.YEAR) //通过传入的字段获取对应的值,(获取年对应的值)
void add(int field, int amount) //field代表传入的时间字段可以是年月日等,amount代表是数值,正
数就是在传入的字段上加,负数减
void set(int field, int value) //field代表传入的时间字段可以是年月日等,value代表设置的值,想
设置哪一年或月日等,就写哪个值
void set(int year, int month, int date)
可以对指定的字段获取, 设置, 以及增减 六.Math
提供了一些和数学运算相关的方法,
static double PI //获取π(派)的值
static double floor(double a) //是小于等于a这个double值的最大整数对应的double值
static double ceil(double a) //是大于等于a这个double值的最小整数对应的double值
static long round(double a ) //四舍五入,返回是一个long值
static double sqrt(double a) //开平方
static double pow(double a, double b) //a是底数,b是指数返回的是a的b次幂
-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
- 黑马程序员——排序、正则表达式、时间类
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员—正则表达式
- 黑马程序员———正则表达式
- 黑马程序员———正则表达式
- 黑马程序员———正则表达式
- 黑马程序员———正则表达式
- 黑马程序员——正则表达式
- 黑马程序员——正则表达式
- 黑马程序员——正则表达式
- 黑马程序员——正则表达式
- 最近学习的一些知识点
- jws jax-ws jax-rs jaxb cxf axis2 关系
- 感悟
- 注册型网站设计——阶段总结
- TOMCAT JAVA_HOME or JRE_HOME environment variable is not defined correctly
- 黑马程序员——排序、正则表达式、时间类
- 一个HR人给应届生的面试建议,关于应届生面试自我介绍、常见问题及回答、面试礼仪、技巧等,非常全面、非常专业,面试前必看,晚了后悔呀。
- 查看数据最后修改时间,建立时间
- Spark发展现状与战线
- 解汉诺塔问题心得
- i2s 协议
- 从程序员到技术总监,分享10年开发经验
- 黑马程序员——JAVA基础---正则表达式切割组的问题
- [挑战程序设计竞赛] AOJ 0558 - Cheese