final
- final 可以用于成员变量,本地变量(局部变量),方法以及类
- final 成员变量必须在声明的时候初始化或者在构造器中初始化,否则会编译报错
- 你不能对final变量再次赋值
- 本地变量(局部变量)必须在声明的时候赋值
- 在匿名类中所有变量都必须是final变量
- final方法不能被重写
- final类不能被继承
- 没有在声明时初始化final变量的成为空白final变量(blank final variable),它们必须在构造器初始化,或者调用this()初始化。不这么做的话,会报错
类型转换
byte short char int long float double
只要两个操作数有一个double,结果也为double。如果两个操作数有一个float,另一个自动转为float,结果为float。如果两个操作数一个是long类型,则另一个自动转为long,结果也为long。否则(byte,char,int,short),两个数都会被转换为int,结果也为int。
注意:被final修饰的类型不会自动类型转换,当两个final修饰相操作时,结果根据左边变量的类型而转化。
byte b1=1, b2=2,b3,b6,b8;
final byte b4=4,b6=6,b7;
b3 = b1+b2; //1
b6 = b4+b5; //2
b8=b1+b4; //3
b7=b2+b5 //4
结果除了2都转换成了int,而左边是byte,所以编译报错。而2正确
static
- 修饰成员变量,方法和类,不包括本地变量
静态方法
public class HelloWorld{
//使用静态关键字声明静态方法
public static void print(){
System.out.println("hello");
}
public static void main(String[] args){
//类调用 或者直接调用
HelloWorld.print();
print();
//对象调用,更推荐使用类调用
HelloWorld hello = new HelloWorld();
hello.print();
}
在静态方法中可以直接调用同类中的静态成员和静态方法,但是不能直接调用非静态成员和非静态方法
public class HelloWorld{
String name = "lds";
static hobby = "love";
public static void print(){
System.out.println(hobby);
//System.out.println(name); //错误使用
HelloWorld hello = new HelloWorld();
System.out.println(hello.name); // 正确使用非静态成员或非静态方法,要声明对象
}
}
网友评论