void:这是另外一种基本类型,但我们无法进行操作
由类的构造函数创建,所有引用类型的默认值是null,一个引用变量可以用来引用于任何与之兼容的类型。
常量就是一个固定值,使用final标志
byte,int,short,long都可以用十进制,十六进制,八进制来表示,前缀0表示8进制,前缀0X表示16进制
java中,变量在使用前都必须声明
java语言支持的变量类型有:
局部变量:访问修饰符不能用于局部变量,局部变量是在栈上分配的,局部变量没有默认值,必须初始化后,才可以使用。局部变量在方法或者代码块结束时自动销毁
成员变量:在对象创建的时候创建,在对象销毁的时候销毁,实例变量有默认值,可以在声明时指定,也可以在构造方法中指定
类变量:在类中以static关键字声明,无论一个类创建了多少对象,类只拥有类变量的一份拷贝,类变量在程序开始时创建,在程序结束时销毁
主要分为两类
访问修饰符/非访问修饰符
访问控制修饰符
默认的:default,对同一个包内的所有类可见,不在继承范围内
受保护的:protected,对同一包内的类和所有子类可见
私有的:只在本类内可见
共有的:对所有类可见
访问控制和继承
父类中声明为public的方法,子类中也只能声明为public
父类中声明为protected的方法在子类中要么声明成public,要么声明成protected
父类中默认修饰符声明的方法,子类中可以声明为private
父类中声明为private的方法,子类不能继承
final修饰符:
被声明为final 的对象的引用不能指向不同的对象,但是final对象里面的数据可以被改变
abstract修饰符:
如果一个类包含抽象方法,那么该类一定要声明为抽象类。
抽象类可以包含抽象类和抽象方法,抽象方法不能被声明为final,static
transient修饰符:
被transient修饰的变量,不会被持久化(与序列化挂钩)
volatile修饰符:
Volatile修饰的变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存
算术运算符(+,-,*,/等)、关系运算符(==、!=、<、>等)、位运算符(&,|,^,~,<<、>>、>>>)、逻辑运算符(&&,||,!)、赋值运算符、条件运算符(?:),instanceOf运算符(判断某一对象是否属于某一类型)
&:按位与,都为1时,结果才为1
|:按位或,有一个为1时,结果就为1
^:按位异或,不相同时,结果为1
~:按为翻转每一位
12:java Number类
Integer x=5;
x = x+10;
当x被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后为了是x能进行运算,所以要对x进行拆箱
String类是不可改变的,一旦创建了String对象,那他的值就无法改变了。重新赋值并不代表前后位同一个对象
StringBuffer是线程安全的,StringBuilder不是线程安全的。所以StringBuilder快。
StringBuffer是通过在所有方法上添加synchronized的方式保证线程安全的
Father f = new Son();
f.say();
这就是虚拟方法调用
枚举:Enumeration
位集合:bitSet(实现了一组单独设置和清除的位或标志)
向量:Vector(允许空值,很传统数据非常相似,但是Vector的大小能根据需要动态的变化,也能通过索引访问,创建对象时不必给定大小,它的大小会根据需要动态的变化,如果有指定扩大系数,则为当前大小加系数,如果没有,则变为原来的两倍)
栈:Stack(允许空值)
字典:Dictionary(提供键值对的访问方式)
哈希表:Hashtable(不允许空置,因为需要进行hash操作)
属性:Properties(不允许空值,因为需要进行hash操作)