1、基本数据类型
变量就是申请内存来存储值【当创建变量的时候,需要在内存中申请空间】
Java提供了八种基本类型(内置数据类型):【四个整数型,两个浮点型】
byte【8】、short【16】、int【32】、long【64】、float【32】、double【64】、char【16】、boolean【表示一位的信息】
Java提供了引用类型:【所有引用类型的默认值都是null】【一个引用变量可以用来引用任何与之兼容的类型】
对象、数组
Java常量:
不能被修改、使用final关键字来修饰常量、通常用大写
2、自动类型转换
低-------------------------------->高
byte、short、char->int ->long ->float ->double
3、变量类型
Java语言支持的变量类型:
类变量【即静态变量】:独立于方法之外的变量,用static修饰,可以使用ClassName.VariableName方式访问
实例变量:独立于方法之外的变量,不过没有static修饰,具有默认值、数值默认0、布尔默认false、引用默认null
局部变量:类的方法中的变量,访问修饰符不能用于局部变量,是在栈上分配,没有默认值、必须经过初始化(设置数值)、才可以使用
PS:protected不能修饰类(内部类除外)
PS:被final修饰的实例变量必须显示指定初始值,final修饰符通常与static修饰符一起使用创建类常量
PS:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充
PS:一个类不能同时被abstract和final修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误
PS:任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类,抽象方法的声明以分号结尾
PS:synchronized关键字声明的方法同一时间只能被一个线程访问;
PS:transient包含在定义变量的语句中,用来预处理类和变量的数据类型,序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量
PS:volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
一个 volatile 对象引用可能是 null。
4、访问控制和继承
方法继承规则:
父类中声明为public的方法在子类中也必须为public
父类中声明为protect的方法在子类中要么声明为protected,要么声明为public,不能声明为private
父类中声明为private的方法,不能够被继承
5、相关语句
Java增强for循环
for(声明语句:表达式){
//代码句子
}
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块中,其值与此时数组元素的值相等
表达式:是要访问的数组名,或者返回值为数组的方法
Java中switch case语句:
switch(expression){
case value :
break;
case value : //语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
ps:switch语句中的变量类型可以byte、short、int、char、string
每个case后面跟一个要比较的值和冒号
case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量
如果case语句块中没有break语句,匹配成功后,从当前case开始,后续所有case的值都会输出,如果后续中有break则会跳出
6、补充
valueOf():返回一个Number对象指定的内置数据类型
abs():返回参数的绝对值
isUpperCase():是否是大写字母
isLowerCase():是否是小写字母
7、Java StringBuffer 和 StringBuilder类
当对字符串进行修改的时候,需要使用StringBuffer【线程安全】和StringBuilder【不是线程安全,不能同步访问,速度快】类,此类的对象能够被多次修改,并且不产生新的未使用对象