SE
1)访问限定符
1.顶级 2.成员级
四种访问限定符
1.public 2.package -private 3.protected 4.private
1.public 2.空白 3.protected 4.private
2) static限定符
静态属性/静态方法
静态属性保存类(方法区)中
static最关键作用就是和对象解绑
1>.属性 没有存在对象中,存在类中
2>.方法 没有一个隐式的当前对象的引用 this
特点:
1.在静态方法中(静态上下文)无法使用非静态的内容静态方法中,无法访问普通属性,无法调用普通方法,无法使用this
2. 静态属性的存在并且只存在一份,表现出共享的特性,类似全局变量。
规范:
访问限定符 static
public static(推荐使用)
static public (语法没错,但不是最好的)
3)属性(包括静态属性)的初始化规则
初始化的方法:
静态属性:
1.定义时直接初始化
2.静态代码块初始化
语法 static {初始化语句}
普通:
1.定义时初始化
2.初始化代码块初始化
语法{初始化语句}
3.在构造方法中
时机:
静态属性:类被加载到内存中时
普通属性: 对象被实例时
顺序:
1).类的加载一定发生在对象实例化之前
静态属性的初始化一定在普通属性初始化之前
2).静态属性初始化顺序,按照定义类时的书写顺序初始化
3).普通属性初始化顺序:定义时和构造代码块按照书写顺序初始化
构造方法中的初始化一定发生在最后
== 数据结构-复杂度==
复杂度:不求甚解地衡量算法好坏的刻度尺
时间复杂度(重点) 空间复杂度
n: 输入数据的规模
f(n): 在n数据规模的情况下,基本数据个数
== 二分查找==
public static class BinarySearch{
public static void main(String[] args){
}
public static int binarySearch(int[] a,int v){
int left=0;
int right=a.lenght-1;
while(left<=right){
int mid=(left+right)/2;
if(v>a[mid]){
left=mid+1;
}else{
if(v<a[mid]){
right=mid-1;
}else{
return mid;
}
}
}
return -1;//没找到
}
}
/*while(left<=right){
int mid=(left+right)/2;
if(v==a[mid]){
return mid;
}else{
if(v>a[mid]){
left=mid+1;
}else{
right=mid-1;
}
}
}
*/