第八天学习

数据类型转换

常量优化机制

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);
		
	}
原文地址:https://www.cnblogs.com/zhz-8919/p/10651844.html