包(package):
分门别类管理不同类,类似于文件夹。
建包:
导包:
相同包下的类可直接访问,不同包下的类必须导包:
如果一个类使用了不同包下的相同类名,此时只能默认导入一个类的包,另一个要全名访问
权限修饰符:
final
表示,可以修饰类、方法、变量:
修饰类:表明该类是最终类,不能被继承。
修饰方法:表明该方法是最终方法,不能被重写。
修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
final修饰变量
final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。
package wryyyyy;
public class test
{
public static void main(String[] args)
{
final Dog d = new Dog("属性1","属性2","属性3");
//d = null;//错误,不能改变final修饰对象变量的指向
d.setall("新属性1","新属性2","新属性3");//正确的,只改变内容
}
}
常量(public static final):
相当于c++中的const修饰符;
执行原理:
编译阶段会进行宏替换,常量会全部替换成字面量(相较于变量,常量所需性能少);
枚举:
包装类:
其实就是引用类型
基本操作:
自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量
int a = 10;
Integer a1 = 11;
Integer a2 = a;//把a包装成一个对象
自动拆箱:包装类型数据变量可以赋值给基本类型数据和变量
Integer it = 100;
int it1 = it;
包装类变量的默认值可以是null,容错率更高
//int age = null;
Integer age = null;
包装类可以把基本数据类型转换成字符串类型
Integer i3 = 123;
String rs = i3.toString();
System.out.println(rs+1);
//也可以这样:
String rs1 = Integer.toString(23);
String rs2 = i3 + "";
包装类可以把字符串类型的数值转换成真实数据类型
String number = "123";
// int age1 = Integer.parseInt(number);
int age1 = Integer.valueOf(number);
System.out.println(age1 + 1);