一.String类

  字符串是使用率最高的数据类型,日常生活中,上网使用各种软件发出的各种信息基本上都是字符串形式;java设计了String类算是非常特殊的类了.

  1.特点:String类是final类型的,无法被继承;

     String类重写了equals方法比较的是字符串内容;

     String可以这样使用:String str = "hello"; 这种叫做常量对象,字符串常量在加载期就会放入内存数据区的常量池而且每种字符串常量有且只有一个;

     String也可以像普通类一样new出对象:String ste = new String("hello");这样会产生两个"hello"字符串,一个处于常量池,一个处于堆空间;

     String类字符串一旦产生内容不能改变;在做字符串拼接操作或是改变字符串对象时其实是产生了一个新的字符串对象,所以在对String类型字符串修改时会产生大量的字符串,效率低;

     String类中""和null是两个概念,前者是空串,后者是字符串为空;所以在做字符串非空验证时需要:if(str == null) || str.equals(""){}要使用短路或判断并且必须先判断费null,保证不会出现空指针异常.

   2.String中常用方法:

char数组相关

toCharArray方法:把一个字符串转换为char数组;

length方法:得到字符串长度;

charAt方法:根据传入下标得到该位置字符串;

indexOf方法:得到某个字符在字符串中第一次出现的位置,字符串中没有该字符返回-1;

lastIndexOf方法:得到某个字符在字符串中最后一次出现的位置;

subString方法:传入两个下标,截取第一个坐标到第二个坐标之间的字符串返回,前闭后开;

subStirng方法(重载):传入一个下标,截取该下标开始到最后,返回字符串;

英文大小写相关

toUpperCase方法:字符串所有字母转为大写;

toLowerCase方法:转小写;

equalsIgnoreCase方法:忽略大小写判断是否相同;

compareTo方法:按英文字典顺序比较字符串;

compareToTgnoreCase方法:忽略大小写按英文字典顺序比较字符串;

字符串内容相关

concat方法:连接传入字符串(相当于"+");

contains方法:传入字符串,判断字符串是否包含传入字符串;

startsWith方法:传入字符串,判断字符串是否以传入字符串开头;

endsWith方法:传入字符串,判断字符串是否以传入字符串结尾;

replace方法:传入两个字符,将字符串中的某个字符(第一个传入字符)替换为第二个传入字符;

replace方法:传入两个字符串,将字符串中的某个字符串(第一个传入字符串)替换为第二个传入字符串;

最常用

trim方法:去掉一个字符的前后空格;

split方法:传入一个字符或字符串或正则表达式,将字符串按传入数据拆分,返回String[](如果拆分字符出现前面或中间,就算连在一起也会拆分出空串,在末尾则不拆分出一个新的元素) ;

matches方法,对字符串做正则表达式校验,符合规范返回true;

 

  3.三种字符串类型:String类,StringBuilder类;StringBuffer类;三种字符串都继承自Object,都是final类;

  不同的是能够直接使用+号进行字符串拼接的只有String;能够直接String str = "hello";的也只有String;但是String类的对象一旦生成不能改变,其他两个类的字符串对象是可操作的可改变的,所以在做大型字符串拼接操作(大到影响内容存量)时使用其他两个类;

  StringBuilder类;StringBuffer类区别在于:StringBuffer类是线程安全但是效率低;StringBuilder类是线程不安全效率高;其他没有不同.

  

  二.包装类

  八个基本数据类型各自对应一个包装类.包装类的作用是:

  1.把基础数据类型包装成一个对象,并提供大量方法和常量,提升基础数据类型的丰富度;

  如:

  int i = 100;

  Integer in = new Integer(i);

  也可以: Integer in = i;(自动装箱,内存操作跟上面一样);

  也可以把包装类转换为基础数据类型

      如:int i = in;(自动拆箱)

  2.可以作为工具类,提供工具方法可以直接使基础数据类型与引用数据类型相互转换;

  如:int i = 450;

   String str = Integer.toString(i);

  或:

  Stirng str = "270";

  int i = Integer.parseInt(str);

  3.包装类也可以与String互相转换;

  如:

  String str = "120";

  Integer in = new Integer(str);//调用带参构造

  或:

  Integer in = new Integer(320);

  String str = in.toString;

  三.时间,日期类

  计算机保存时间是一个数字(单位:毫秒 1秒 = 1000毫秒),这个数字记录了当前距离时间原点过了多少毫秒.如今的时间原点是(1970年1月1日时0分0秒0毫秒);

  System.currntTimeMillis方法可以得到这个数字;

  最常用的表示当前时间的类:java.util.Date类,直接new一个Date对象调用无参构造,可以得到当前时间,配合SimpleDataFormat类(简单时间格式化),可以按自定义格式打印当前时间.

  设置一个时间使用Calendar类,他产生对象的方式是工厂模式,如:Calendar cal = Calendar.getInstance();

  注:设置月份是 0到11月.