1、JAVA中,所有的数值类型所占据的字节数量与平台无关。
2、JAVA没有任何无符号类型(unsigned)
3、整型值和布尔值之间不能相互转换
4、JAVA中必须使用final定义常量,如final int THREAD_MAX = 1024; final还可以作用与方法、类,都表示“不可改”的意思。
5、大数,java.math包中BigInteger、BigDecimal类
6、static关键字与C++中类似,静态常量用的比较多,如:
public class Math
{
public static final double PI = 3.1415926; //属于类,不属于任何对象
.......
}
7、使用包(package)的主要原因是确保类名的唯一性。嵌套的包之间没有任何关系。
8、类文件(class)可以存储在JAR(Java归档)文件中。
9、JAVA中所有的继承都是公有继承,class A1 extends A {}
10、Object类是Java中所有类的始祖,每个类都是由它扩展而来的。但不需要显示写明。
11、JAVA中只有基本类型不是对象,如数值、字符、布尔类型。所有的数组类型都是对象,都扩展于Object类。
12、getClass().getName()获得类名
13、泛型数组列表ArraryList与C++中vector类似,如ArraryList<ClassA> obj = new ArraryList<>(); obj.add(new ClassA());
14、所有的基本类型都有一个与之对应的类,如Integer类对应基本类型int。这样就可以将int这样的基本类型转化为对象。这些类称为包装器:Integer、Long、Float、Double、Short、Byte、Void、Boolean。
15、反射:分析类的能力、检查类的结构等
StringUtils.equals(monitorSubKpiEnum.getName(), subKpiName)
CollectionUtils.isEmpty
volatile关键字: Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。
关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile。
调试-堆栈信息:
yum install -y java-1.8.0-openjdk-devel.x86_64
jstack 22792 | grep SystemRuntimeInfoMonitor