------- android培训、java培训、期待与您交流! ----------
1:数组的高级操作
(1)数组:存储同一种数据类型的多个元素的容器。
(2)特点:每个元素都有从0开始的编号,方便我们获取。专业名称:索引。
(3)数组操作:
A:遍历
public static void printArray(int[] arr) {
for(int x=0; x
}
}
B:获取最值
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x
max = arr[x];
}
}
return max;
}
C:排序
a:冒泡排序
原理:相邻元素两两比较,大的往后放。第一次完毕,最大值在最大索引处。
public static void bubbleSort(int[] arr) {
for(int x=0; x
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
b:选择排序
原理:从0索引元素开始,依次和后面的所有元素比较,小的往0索引处放。
第一次完毕后,最小值在最小索引处。
public static void selectSort(int[] arr) {
for(int x=0; x
arr[y] = arr[x];
arr[x] = temp;
}
}
}
}
D:查找
a:普通查找
原理:遍历数组,从头找到尾
public static int getIndex(int[] arr,int value) {
int index = -1;
for(int x=0; x
index = x;
break;
}
}
return index;
}
b:二分查找(折半查找)
前提:数组必须是有序的。
原理:每次都从中间开始找,如果比中间数据小,就在左边找,
如果比中间数据大,就在右边找,如果相等,就返回中间的索引值。
public static int getIndex(int[] arr,int value) {
int start = 0;
int end = arr.length-1;
int mid = (start+end)/2;
while(arr[mid]!=value){
if(value>arr[mid]) {
start = mid + 1;
}else if(value
}
if(start > end) {
return -1;
}
mid = (start+end)/2;
}
return mid;
}
2:Arrays工具类的使用
(1)Arrays是针对数据进行操作的工具类。
(2)要掌握的功能:
A:把数组转成字符串
public static String toString(int[] arr)
B:排序
public static void sort(int[] arr)
C:二分查找
public static int binarySearch(int[] arr,int value)
(3)Arrays工具类的源码。(理解)
3:StringBuffer类
(1)StringBuffer:是字符串缓冲区类,容量可以改变。
(2)面试题:
String和StringBuffer的区别?
String的长度固定。
StringBuffer的长度可变。
StringBuffer和StringBuilder的区别?
StringBuffer的线程安全,效率低。
StringBuilder的线程不安去,效率高。
(3)StringBuffer的构造方法
A:StringBuffer sb = new StringBuffer();
B:StringBuffer sb = new StringBuffer(int capacity);
C:StringBuffer sb = new StringBuffer(String s);
注意:StringBuilder的功能和StringBuffer一模一样。前者是JDK5以后出现的。
(4)要掌握的功能:(请自己把对应的方法写出来)
A:添加功能
B:删除功能
C:其他功能
替换功能
截取功能
反转功能
(5)案例:
把一个字符串反转。
4:基本数据类型包装类
(1)由于我们对基本类型只能做一些最简单的操作,
为了让我们有更多的操作,java就针对每种基本类型提供了保证类。
(2)八种基本类型对应的包装类是谁?
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
(3)Integer类的构造方法
A:Integer i = new Integer(int x);
B:Integer i = new Integer(String s);
注意:这里的s必须是有数字字符组成的字符串。
(4)Integer的功能
A:String -- int
String s = "100";
int i = Integer.parseInt(s);
B:int -- String
int i = 100;
String s = String.valueOf(i);
(5)JDK5以后的新特性
A:自动装箱 从int--Integer
B:自动拆箱 从Integer--int
请大家解释下面的代码:哪里体现了自动装箱,哪里体现了自动拆箱
Integer i = 100;
i += 200;
System.out.println(i);
注意:
让我们操作变得简单,但是隐含了一个问题,这个时候,我们在使用对象前,最好做不为空的校验。
(6)面试题:(看代码 IntegerTest.java)
byte常量池。
(7)案例:
预习后,试着把字符串"-34 29 76 11 27"中的数据排序并输出。
5:Random
(1)是产生随机数的类。
(2)构造方法:
A:Random r = new Random();
B:random r = new Random(long seed);
注意:种子一样,随机数一样。
(3)掌握的方法:
public int nextInt(int n):产生在[0,n)之间的随机数。
0:
冒泡排序*****
选择排序***
二分法查找***
1:正则表达式(
(1)符合一定规则的字符串。
(2)规则:
A:字符
x 字符 x
\\ 反斜线字符
\r 回车符
\n 换行符
B:字符类
[abc] a、b 或 c
[^abc] 任何字符,除了 a、b 或 c
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内
[0-9] 包括0-9之间的字符
C:预定义字符类
. 任何字符
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是指这里出现的不能使单词字符。
he;wor xixi
E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
F:组的概念(按照小括号从左开始编号,每一个对应着一个组)
(a(b(c)d(e)))
第一组:a(b(c)d(e))
第二组:b(c)d(e)
第三组:c
第四组:e
将来我们就可以通过编号来获取组中内容。组0表示整个表达式。
(3)通过String类的功能使用正则表达式
A:判断功能
public boolean matches(String regex)
B:分割功能
public String[] split(String regex)
C:替换功能
public String replaceAll(String regex,String newString)
记住:
叠次:
在同一个字符串中,右边引用左边:"(.)\\1+"
在后一个字符串中引用前面的字符串的组内容:"(.)\\1+","$1"
(4)案例:
A:校验电话号码
B:校验邮箱
C:我要学编程
2:日期
(1)Date:
表示一个日期类。大部分方法过时,被Calendar替代。
构造方法:
Date d = new Date();
Date d = new Date(long time);
获取毫秒值:
getTime();
(2)DateFormat:
对日期进行格式化和对字符串解析的类
String -- Date:
解析:parse(转换的意思)
//将一个字符串日期,转成一个date日期>>>经常做的
String date = "2014年09月25日 12时24分15";
DateFormat dateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss");
Date parse = dateFormat2.parse(date);
System.out.println(parse);
Date -- String:
格式化:format(“要符合的日期格式”)
DateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//格式 yyyy年MM月dd日 HH时mm分ss秒
String format = dateFormat.format(new Date());
System.out.println(format);
(3)Calendar:
日历类,对日期进行了更细的划分,可以获取日历的每个字段值。
根据日历字段获取对应的值:
get(Calendar.相应字段)
设置年月日:
一般情况下,都是由getInstance()获取Calendar对象
在特殊业务需求时,需要进行判断
set(int year,int month,int date)
修改指定日历的值:
add(int field,int value)
3:System
(1)系统类,通过了静态的方法供我们使用。
(2)要掌握的功能:
A:exit(int i) //推出VM
B:currentTimeMillis() //获取当前毫秒值 可以用来测算程序运行的时间
C:arraycopy() //arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
D:getProperties(String key) getProperties() 获取系统属性值
gc():跟finalize()进行辨析 //调用垃圾回收器(暗示!)
4:Math
X abs(X x) 获取绝对值
double random() 获取随机数
double ceil(double a) 向上取整
double floor(double a) 向下取整
X max/min(X x,X y) 取最值
double pow(double a, double b) a^b
round(double a) 四舍五入取整