第八天学习
数据类型转换
常量优化机制
byte b1 = 30;
//编译正确,数字大小没有超过范围
byte b2 = 128;
//编译错误,超过最大范围127
byte b3 = 10 + 20;
// 编译正确,常量优化机制,会在编译阶段计算常常量大小,常量没有超过byte类型大小,自动转换为byte类型
byte a = 10;byte b = 20; byte c= a + b;
//编译错误,a和b是变量,在编译的时候不能计算其大小,所以不能自动转换类型
字符转换为int类型
- int a = (int) 'a';
- int a = 'a' + 0;
二分法查找
此方法只能查找相同元素位置
int lo = 0;
int hi = n.length;
while (lo <=hi) {
int mid = (lo + hi)/2;
if (nums[mid] == target
return mid;
if (nums[mid] > target)
hi = mid - 1;
if (nums[mid] < target)
lo = mid + 1;
}
return -1;
优化方法:可判断插入有序数组的元素的位置
int lo = 0;
int hi = nums.length-1;
while(lo<hi) {
int mid =lo + (hi - lo)/2;
if (nums[mid] == target) {
return mid;
}
if (nums[mid] > target)
hi = mid;
if (nums[mid] < target)
lo = mid + 1;
}
return lo;
递归实现
static int erSherch2(int[] nums, int target, int lo, int hi) {
/**
* 递归实现二分法查找
* 返回和target相同值的数组下标,没有值返回-1
*/
if (lo > hi)
return -1;
int mid = lo + (hi - lo)/2;
if (nums[mid] == target)
return mid;
else if (nums[mid] < target)
return erSherch2(nums, target, mid + 1, hi);
else
return erSherch2(nums, target, lo, mid-1);
}