标识符:
可以由中文字符、英文字符、下划线,$,和数字构成
不能以数字打头
避开Java的关键字(例如 abstract,case,for等)
标识符没有长度限制
修饰符,private,default(默认,不加任何修饰符),protected,public,对类,类的属性以及类的方法进行访问权限的控制
private->default->protected->public
类内部,同一包中,子类中,其他
this(当前类的实例)关键字经常出现在方法中,用途:
1.返回调用当前方法的对象的引用
2.在构造方法中调用当前类中的其他构造方法
3.当方法参数名和成员变量名相同时,进行区分
super(父类的实例):
调用父类的构造方法或调用父类中的方法或属性
在static修饰的方法中,不能调用没有static修饰的方法和属性,也不能使用this和super关键字
一个对象修改静态属性值后,会影响其他对象
public class A(){
public static int p=0;
}
A.p
或者
A a=new A();
a.p;
都可以
static{
...
}
静态自由块,通常用于初始化静态变量
final修饰类,表示该类不能再被继承;修饰属性,表示该变量是一个常量;修饰方法,表示该方法不能在子类中重写
instanceof是运算符
if(o instanceof A){
A a=(A)o;
}
简单数据类型和引用数据类型
boolean
char
byte,short,int,long
float,double
Integer.MAX_VALUE<Float.MAX_VALUE
float f=3.4错
float f=3.4f对
局部变量必须先初始化(如果后面的代码有访问到它),成员变量有默认初始值,
成员变量存储在堆内存,而局部变量存储在栈内存
传参:值传递,引用传递
Java中不存在“运算符重载”
&逻辑与,&&短路与
x++和++x
boolean flag=age>30?true:false;
short s=0;
s=s+1;(对)
s+=1;(错,Java会自动进行强制类型转换)
字符串的+操作,底层实现时靠StringBuilder类的实例方法append
==和equals()是不同的
String s="abc" //采用的是字符串缓冲池机制,效率高
String s=new String("abc")//
String[]a;
a=new String[]{"1","2"};
或者
String[]a={"1","2"}
int[][]a={{1,2},{3,4}};
for(int[]a1:a){
for(int a2:a1){
System.out.println(a2);
}
}
数组的复制:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Array.sort(int[]a),经过调优的快速排序算法
数组索引越界异常