Java语言基础
回归基础。
类型
Java类型必定是class, abstract class,interface, enum ,annotation之一.
基本类型
变量的类型有:
primitive/基本数据类型: byte/char/short/int/long/float/double/boolean 占用字节—————–8 —16 –16—32–64—-32—-64———– 对应封装类型: Byte/Character/Short/Integer/Long/Float/Double/String (不可变)
当变量指向一个对象时,变量被称作对象的引用
注:float和double类型不应该用于精确计算,在需要的场合要使用BigDecimal类
String/字符串
不可变对象。在Java内部使用bytes表示,使用UTF-16编码(即双字节)。
把一系列字符放在双引号中创建"字面量/literal"字符串对象。
在实现上,println() 方法没有直接使用toString() 方法, 而使用了静态方法 valueOf(),这么做是为了避免obj 为null 时抛出NullPointerException异常。
- substring(包含的,不包含的)
- trim():去掉头尾部空白,包括空格、Tab、换行符
- 很多次的字符串连接要使用StringBuilder
- +运算符用作字符串连接,会先创建一个StringBuilder对象表示的工作区,其内容和原始字符串中的字符序列一样.
String three = new StringBuilder(one).append(two).toString();
数字和数学运算
整数的表示方式采用二进制补码,带符号的正数最常使用这种方式:
- 所有位都为1的的位组合表示-1;
- 如果设定了高位,表示的是负数;
- Integer.MAX_VALUE = 2147483647
浮点数表示时机会都会丢失精度,而且根本无法避免舍入误差。
java.util.Random是个伪随机数生成器(PRNG/Pseudorandom Number Generator),如果伪随机数序列总是从同一个地方开始,那么就会生成完全相同的数字流。
伪随机数能满足大多数要求,但对密码应用等需要通过提供随机的种子值(通常使用CPU计数器中的值)增强安全性。
数组/Arrays
数组用以存储同一类型的对象,一旦创建后后无法改变大小。
- length是数组对象的一个属性
- Arrays是针对数组对象进行操作的工具类
- Arrays.binarySearch 返回插入位置的索引-1
// 初始化,{}被称为array literal
int[] ints = { 1,2,3,4,5,6,7,8,9,10 };
// 装箱
Integer boxedValue = Integer.valueOf(18);
// 拆箱
int intValue = boxedValue.intValue();
// 注:Java虽然支持自动装箱和拆箱,但以上显式的写法可读性更好
// 解析字符串
Integer convertedValue = Integer.parseInt("123");
String characterNumeric = convertedValue.toString();
// 注:在String表达式中使用串联运算符时会自动装箱并调用toString()
逻辑结构
for
for(Loop initializer;Loop condition;Post iteration operation)
- continue: 直接跳到下一迭代,而不继续执行之后的循环体
- break: 立即跳出循环,即使循环条件仍满足
注:do while循环在条件被测前至少执行一次
foreach
for的增强简化版本。一般结合泛型使用,适用于不需要引用数组或者集合的索引的情况。
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
switch
支持类型有 byte, short, char, int, String, enum
break跳出switch语句.
类
修饰符static
- 静态类意味着在类加载时(类第一个被引用时)执行,并且只运行一次
- 静态方法或字段属于类,而不是类实例
修饰符final
final字段不能更改它的值,通常与static连用,表示常量
Final关键字的使用场合
- 不允许被继承的类,如:String类。
- 不允许修改引用的域对象,如:POJO类的域变量。
- 不允许被重写的方法,如:POJO类的setter方法。
- 不允许运行过程中重新赋值的局部变量。
- 避免上下文重复使用一个变量,使用final描述可以强制重新定义一个变量,方便更好地进行重构。
访问修饰符
protected 类似于包修饰符,除了子类可以访问(即使子类在包外)
构造函数
- 扩展类不需要集成构造函数
- 子类必须在构造函数调用父类的构造函数
变量
四类变量:
- Non-static fields ( instance variables)
- Static fields ( class variables)
- Local variables ( declared inside a method)
- Parameters