一、API 现成的类(程序)
  1. Java API是java(Oracle)提供的系统标准API。
  2. 第三方的jar包API,如:JUnit.jar。
  3. 可以自己开发一些API。
  4. 一般情况下任何技术都有现成的API。
 
二、文档注释
  1. java源代码中,/**...*/可以用于生成手册。
  2. 在文档中,可以使用@定义手册的段落,格式:@author @see
  3. 利用java开发工具命令javadoc可以生成JavaHTML版本的手册。(也可以用eclipse的图形界面的export命令调用javadoc生成手册)
  4. javadoc命令是利用JDK的命令,需要配置好JDK以后才能使用。
  5. API都提供了javadoc手册。javadoc手册是利用文档注释写在源码中的
  6. 可以利用JDK的javadoc工具抽取为HTML版本的手册。
 
三、String 及其重要的API类
  1. java中“最重要”的基础API类。
  2. 字符串的长度是字符的个数。
  3. String类不能被继承,否则会报编译错误。
  4. 字符串操作,本身是数组的扩容与复制。
 
四、String常量池 性能优化现象
  1. 静态字符串:字面量/常量/常量的连接结果
  2. “==”比较的是:变量的值(对象的地址)
 
五、String类的静态缓冲池优化现象
  1. 静态字符串:编译器能够确定内容的字符串,如字符串常量。
  2. 字符串字面量:字面量常量的运算结果。如:public static final int ROWS=20; //ROWS称为常量;20称为字面量;
  3. 相同静态字符串,在运行期间引用同一个对象。
 
六、关于String API
  1. 如果返回值与原字符串不同,就返回新字符串对象。
  2. 如果返回值与原字符串相同,经常返回原字符串对象。
 
七、关于String
  1. String是final类型。
  2. String对象是不可改变的(改变后指向新的String对象)。
  3. String API如果改变了内容,就返回新对象。
  4. String API方法是对char数组的操作运算。
  5. 没有API或者不用API,可以利用for循环处理字符数组,实现相应的功能,如果优化的好的话,性能有可以好与String API。
 
八、String常用API
  1. indexOf(String str)
  2. int indexOf(String str, int fromIndex)
  3. int lastIndexOf(String str, int from)
  4. String substring(int beginIndex, int endIndex)
  5. .trim()
  6. char charAt(int index)
  7. startsWith和endsWith
  8. toUpperCase和toLowerCase
  9. String.valueOf(...)
 
九、StringBuilder及其API
  1. StringBuilder内部的字符数组内容和长度可变。
  2. StringBuilder可改变字符串。
  3. StringBuilder的字符操作性能好于String。
  4. String的连接计算是使用StringBuilder实现的。
  5. 输入输出简单操作时用String,复杂的更改使用StringBuilder,极致性要求时使用字符数组计算。
  6. append(String str)
  7. insert(int dstOffset, String s)
  8. delete(int start, int end)
  9. replace(int start, int end, String str)
  10. reverse()
总结:
  • StringBuilder是可变字符串,字符串的内容计算建议采用StringBuilder实现,这样性能会更好些。
  • java的字符串连接过程就是利用StringBuilder实现的。
  • StringBuffer和StringBuilder
StringBuffer是线程安全的,同步处理的,性能稍慢。
StringBuilder是线程不安全的,并发处理的,性能稍快。
 
十、正则表达式   Regular Expression (regex)
  1. 正则表达式:字符串的规则定义,字符串中字符出现的次序规律
  2. 业务规则:检查一段话中是否出现了“国骂”
  3. 是字符的“规则”定义,用在:1)文本内容的检索,在文件中查询需要的内容;2)文本内容的检查:检查文字中是否符合规范;3)文本的处理,拆分,替换等。
  4. java,PHP,javaScript等很多语言都支持正则
  5. 开发工具,操作系统,也支持正则表达式,不同系统的正则规范不同,可查看API手册 java.util.regex.Pattern
  6. boolean str.matches(regex); String[] split(String regex); String replaceAll(String regex, String replacement);
 
十一、Object
  1. 任何类型的父类型,一切皆对象
  2. Object类型的变量,可以引用任何对象,超级多态。
  3. Object定义了很多重要的方法,被子类继承,Java系统方法:toString, equals, hashCode
 
十二、toString方法
  1. toString方法:用于返回当前这个对象的文字描述,任何东西都可以用文字说明(描述)
  2. java认为任何对象都可以用文字描述,所以在Object类上定义了toString()方法,任何类型都可以继承这个方法。
  3. 建议子类重写这个方法,提供具体的文字描述
  4. 一般都在子类中重写这个方法
  5. java很多API都会回调这个方法的结果。println(obj)就会调用toString()。记住:以后只要写类,就写toString(),便于调试输出数据。
  6. 如何重写toString()?一般返回属性值。
  7. 默认返回结果是:classValue@hashCode
 
十三、equals方法
  1. equals用于比较对象的相等
  2. 建议子类重写
  3. 采用“模版”重写
  4. 要了解默认的equal方法(等同于==)
  5. java的很多方法会回调这个方法比较对象,如:Arrays.equals(arg1, arg2)
  6. String重写了equals方法
重写“模版”
public boolean equals(Object obj){
   if(obj==null){
      return false;
   }
   if(this==obj){
      return true;
   }
   if(obj instanceof cell){
      Cell cell = (Cell) obj;
      return cell.row == row && cell.col == cell; //每个属性相同则认为是equals的
   }else{
      return false;
   }
}
 
十四、equals和==的区别
  1. ==用于比较变量的值,可以应用于任何类型,如果用于引用类型,比较的是两个引用变量中存储的值(地址信息),判断两个变量是否指向的是同一个对象。
  2. equals是Object的方法,重写以后,可以用于比较两个变量的内容是否“相等”。
  3. 需要注意的是,Object默认的equals方法的比较规则同==。
 
十五、包装类
  1. 提供了字符串的数据向基本类型转换的算法,这些算法是人类输入与计算机处理的二进制之间的重要转换桥梁,如果输入数据(字符串)格式有误,转换不能成功,会抛出异常 NumberFormatException
  2. 还提供了将基本类型转换为String的方法,这个方法是用于输出基本类型的数据。
  3. 包装类都是final的,不能定义它们的子类。
  4. 包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值。
 
十六、八种基本类型包装类
  1. 因为基本类型不是对象,包装类可以把基本类型包装为对象。
  2. 将基本类型包装成对象有两种方式:1)用构造器创建 Object o = new Integer(1); 2)用方法创建 Object o = Integer.valueOf(1);
  3. 也可以将包装类拆包成基本类型:integer i = Integer.valueOf(5);  int u = i.intValue();
  4. 包装类提供了与字符串类型的相互转换方法:String -> int    Integer.parseInt(s);
  5. java 5提供了自动拆包和包装
           Integer i = 5; //自动包装
           int n = i+3;   //自动拆包
           java是利用编译器进行语法替换的,经编译后:
           Integer i = Integer.valueOf(5);
           int n = i.intValue() + 3;
 
十七、Number
  1. 抽象类Number是Byte,Double,Float,Integer,Long和Short类的父类。
  2. java 5开始,自动将123.45包装成Double类型。
 
十八、关于java的时间
  1. java的时间是long类型的毫秒数。
  2. 人类的时间系统:年月日时分秒
  3. java提供API解决java时间和人类的时间之间的计算。
  4. Date:简单时间封装和“过期”的时间计算方法。
  5. Calendar:复杂历法算法,可以获取设置时间分量,以及进行复杂的时间分量计算。
  6. SimpleDateFormat:提供了时间的输入与输出
  7. 时间API的使用:Date是时间类型的简单封装;Calender用于复杂的时间计算,简单时间计算直接使用long毫秒数计算。
 
十几、Date及其常用API
  1. API能将计算机的时间转换为“年月日时分秒”的格式,也能将“年月日时分秒”转换为计算机的时间。
  2. Date类的内部,是个long类型的时间,是当前时间的毫秒数,还提供了历法算法,可以计算年份/月份/日期等。
  3. Date类重写了toString()方法和equals()方法。
  4. SimpleDateFormat简介:是一个以语言环境有关的方式来格式化和解析日期的具体类,允许进行格式化(日期->文本),解析(文本->日期)和规范化。Date ->String sbf.format(date);  String -> Date sbf.parse(string)
  5. 日期模式匹配字符
字符 含义  
y yyyy-2013年   yy-13年
M MM月-01月   M月-1月
d dd日-06日   d日-6日
E 星期 E-星期日(Sun)
a AM或PM标识  
H 小时(24小时制)  
h 小时(12小时制)  
m 分钟  
s  
 
二十、Calendar
  1. 用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。
  2. Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。
  3. Calendar提供了一个类方法getInstance,以获得此类型的一个通用对象。Calendar c = Calendar.getInstance();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted on 2019-02-25 01:27  独_行_侠  阅读(149)  评论(0编辑  收藏  举报