静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象
什么是静态内部类:
静态内部类是一种特殊的成员内部类
直接创建静态内部类对象的方法:
outer .inner oi=new Outer.inner();
如何调用静态内部类中的方法:
非静态方法:先创建对象,用对象调用
静态方法:外部类名.内部类名.方法名();
局部内部类:
1、将内部类定义在方法里面就叫做局部内部类。类似于方法里面的局部变量。
2、外界是无法直接使用,需要在方法内部创建对象并使用
3、该类可以直接访问外部类的成员,也可以访问方法内的局部变量
匿名内部类:
1.什么是匿名内部类:
隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置
2.匿名内部类的格式;
3.格式的细节:
包含了继承或实现,方法重写,创建对象
// 闭区间写法
int lower_bound(vector &nums, int target) {
int left = 0, right = (int) nums.size() - 1; // 闭区间 [left, right]
while (left
// 循环不变量:
// nums[left-1] < target
// nums[right+1] >= target
int mid = left + (right - left) / 2;
if (nums[mid] < target)
left = mid + 1; // 范围缩小到 [mid+1, right]
else
right = mid - 1; // 范围缩小到 [left, mid-1]
}
return left; // 或者 right+1
}
// 左闭右开区间写法
int lower_bound2(vector &nums, int target) {
int left = 0, right = nums.size(); // 左闭右开区间 [left, right)
while (left < right) { // 区间不为空
// 循环不变量:
// nums[left-1] < target
// nums[right] >= target
int mid = left + (right - left) / 2;
if (nums[mid] < target)
left = mid + 1; // 范围缩小到 [mid+1, right)
else
right = mid; // 范围缩小到 [left, mid)
}
return left; // 或者 right
}
// 开区间写法
int lower_bound3(vector &nums, int target) {
int left = -1, right = nums.size(); // 开区间 (left, right)
while (left + 1 < right) { // 区间不为空
// 循环不变量:
// nums[left] < target
// nums[right] >= target
int mid = left + (right - left) / 2;
if (nums[mid] < target)
left = mid; // 范围缩小到 (mid, right)
else
right = mid; // 范围缩小到 (left, mid)
}
return right; // 或者 left+1
}