1.java基本数据类型所占字节数
整形:byte 1 short 2 int 4 long 4
浮点型: float 4 double 8
布尔 :boolean JVM规范中Boolean被当作int处理 4
字符型:char 字符型
1.1String 和 char
- 形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的 0 个或若干个字符
- 含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
- 占内存大小 字符常量只占 2 个字节; 字符串常量占若干个字节
2.String和StringBuilder、StringBuffer的区别?
String是不可更改的数据类型
StringBuider和StringBuffer是字符串对象使用前需要声明。例:StringBuffer sbr = new StringBuffer();
不同的是,StringBuffer 是线程安全的支持多线程,多线程情况下必须遵守规范使用StringBuffer
而StringBulider适合单线程速度更快。
method:
append delete replace reverse(翻转) insert...
3.反射的用途及实现
Java 反射机制是一个非常强大的功能,在很多的项目比如 Spring,MyBatis 都都可以看到反射的身影。通过反射机制,我们可以在运行期间获取对象的类型信息。利用这一点我们可以实现工厂模式和代理模式等设计模式,同时也可以解决 Java 泛型擦除等令人苦恼的问题。
获取一个对象对应的反射类,在 Java 中有下列方法可以获取一个对象的反射类
- new 一个对象,然后对象.getClass()方法
- 通过 Class.forName() 方法
- 使用 类.class
4.BigDecimal概述
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作。
BigDecimal所创建的是对象,故我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须