Java版本:
1、Java ME(Java Micro Edition):开发移动应用和嵌入式应用。
2、Java SE(Java Standard Edition):开发桌面应用。
3、Java EE(Java Enterprise Edition):开发Web应用。
Java类之间的继承只支持单一继承,不支持多继承。
Java支持类与接口之间的多继承,即一个类可以继承(实现implements)多个接口。
Java是体系中立的:
Java程序(.java文件)通过JVM中的java编译器编译成字节码文件(.java文件)再通过解释器和JIT(Java即时编译器)解释成本地机器码文件执行,实现跨平台运行,即Java程序的一次编译,到处运行。
Java语言是动态的:
Java语言的设计目标之一是适应于动态变化的环境。通过反射的方式(Class.forName("类名称")),Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
一些特殊的关键字:
abstract:
1.修饰类时,这个类称为抽象类,抽象类不能实例化对象,因此必须被继承才能使用。
2.修饰方法时,该方法称为抽象方法,抽象方法没有函数体,成员函数为抽象方法的类必须是抽象方法。
final:
1.修饰变量时,该变量初始化后就不能再改变。
2.修饰类时,该类不能被继承。
3.修饰方法时,该方法不能被重写。
synchronize:修饰一段代码块,该代码块同一时间只能被一个线程访问。
volatile:在多线程环境下,某个共享变量如果被其中一个线程给修改了,其他线程能够立即知道这个共享变量已经被修改了,当其他线程要读取这个变量的时候,最终会去内存中读取,而不是从自己的工作空间中读取,这称为可见性。例如当线程1对t进行了加1操作并把数据写回到主存之后,线程2就会知道它自己工作空间内的t已经被修改了,当它要执行加1操作之后,就会去主存中读取。这样,两边的数据就能一致了。假如一个变量被声明为volatile,那么这个变量就具有了可见性的性质了。这就是volatile关键的作用之一了。详见:https://www.cnblogs.com/kubidemanong/p/9505944.html
Java数据类型:
一、八大内置数据类型:
byte:
包装类:Byte
位数:8位(8个二进制位,下同)
范围:有符号,-2^7 ~ 2^7-1
short:
包装类:Short
位数:16位
范围:有符号,-2^15 ~ 2^15-1
int:
包装类:Integer
位数:32位
范围:有符号,-2^31 ~ 2^31-1
long:
包装类:Long
位数:64位
范围:有符号,-2^63 ~ 2^63-1
float:
包装类:Float
位数:32位
默认值:0.0f,单精度
double:
包装类:Double
位数:64位
默认值:0.0d,双精度
char:
包装类:Character
位数:16位
boolean:
位数:1位
二、引用数据类型:
类的实例,对象和数组都是引用数据类型,所有引用数据类型默认值都是null。
String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。 如果需要对字符串做很多修改,那么应该选择使用StringBuffer & StringBuilder 类。
StringBuilder相较于SringBuffer类有速度优势,多数情况下使用StringBuilder类,但是它不是线程安全的,所以在要求线程安全的情况下需使用StringBuffer类。
方法重写(Override)和重载(Overload)的区别:
Java反射机制
定义:
在运行过程中,动态的获取类信息以及动态的调用类方法或属性的机制称为Java反射机制
反射机制中相关的类:
Class类:代表类和接口的实体
Filed类:代表类的成员变量(属性)
Method类:代表类的方法
Constructor类:代表类的构造方法