- 推荐把private方法放到最后,因为我们主要关注的是public方法,它对外提供调用。
- 嵌套类:一个类的内部定义了其它的类,嵌套类允许访问private方法或属性。
- protected主要用于继承关系,定义为protected的方法和属性可以被它的子类以及子类的子类访问
- 没有public,protected,private修饰的类或方法或属性,默认为作用域为package作用域,仅限在这个包内访问
- 注意,包名必须完全一致,包没有父子关系,
com.apache
和com.apache.abc
是不同的包。 - String s =new String(); s.toLowerCase();//转换为小写字母,s.toUpperCase();//转换为大写字母;
- 使用局部变量时,应该尽可能把局部变量的作用域缩小,尽可能延后声明局部变量
- final修饰符与访问权限不冲突:用final修饰的class不能被继承,final修饰的方法不能被重写,final修饰的属性一旦赋值不能更改,也就是常量
- 一个.java文件只能包含一个public类,且类名必须和文件名相同。但可以包含多个非public类
-
String s2 = new String(new char[] {'H', 'e', 'l', 'l', 'o', '!'});和String s2 = "Hello!";等价
- 比较字符串内容是否相等,必须用equals()方法而不能用==。Integer 等包装类也必须用equals()
- 【4.16日更新】
- 包装类和基本类型之间的转换:装箱和拆箱会影响代码的执行效率,而且有时候会引起空指针报错。如Integer In = null; int i =In;
- 不推荐使用Integer n = new Integer(123);创建实例,而是通过Integer n = Integer.valueOf(123);因为new 总是创建新的Integer实例,方法2把内部优化留给
Integer
的实现者去做,即使在当前版本没有优化,也有可能在下一个版本进行优化。我们把后者称为静态工厂方法(优先选用) - 程序设计的一个重要原则:数据的存储和显示要分离。
-
// int可表示的最大/最小值: int max = Integer.MAX_VALUE; // 2147483647 int min = Integer.MIN_VALUE; // -2147483648
// long类型占用的bit和byte数量: int sizeOfLong = Long.SIZE; // 64 (bits) int bytesOfLong = Long.BYTES; // 8 (bytes)
- 枚举:用enum定义 如
enum Country{
CN,US,EN,JP,KO,RS
} -
Java使用
enum
定义枚举类型,它被编译器编译为final class Xxx extends Enum { … }
; -
enum通过
name()
获取常量定义的字符串,注意不要使用toString()
;通过
ordinal()
返回常量定义的顺序(无实质意义);可以为
enum
编写构造方法、字段和方法enum
的构造方法要声明为private
,字段强烈建议声明为final
;enum
适合用在switch
语句中。 - Java规定,应该捕获的异常,包括Exception及其子类,但是不包括RuntimeException,及其子类,这种异常通常称为Checked Exception(已检查异常)
- Error是无需捕获的严重错误
- Java编译器要求程序必须捕获所有或声明非运行时异常,但对运行时异常可以不做处理。
- 在catch中捕获的异常,不会影响finally语句执行(后于catch语句执行)。使用finally可以维护对象的内部状态,并可以清理费内存资源。
- JVM 自带的日志包:java.util.logging.Logger。打印日志:Logger logger = Logger.getGlobal();
- logger.info("这是一个日志信息");logger.warning("这是一个警告信息");类似的还有以下:
SEVERE ,WARNING,INFO(默认,此级别以下的会被覆盖)CONFIG,FINE,FINER,FINEST
26. 泛型:List<Integer> 不是List<Number>的子类。