课程咨询 :13691148991

上海java培训 > 合作企业 > 企业笔试题 > Java API中String和集合框架区别
  • Java API中String和集合框架区别

    发布:上海java培训      来源:企业笔试题      时间:2016-02-23

  • Java API学习(String和集合框架部分)

    1.String 字面量赋值会重用对象:

    String s1 = "HelloWorld";

    String s2 = "HelloWorld";

    System.out.println(s1==s2)//true

    new创建则不会重用

    String s1 = "HelloWorld";

    String s2 = new String("HelloWorld");

    System.out.println(s1==s2)//false

    造成这种情况的原因是String 类型有常量池,字面量形式创建对象,会存入常量池(地址),以后创建字面量形式的对象时会查询常量池,若发现内容相同的,则会重用该地址;而new创建的对象不会存入常量池

    特别的:java编译器有一个优化措施,就是若计算表达式运算符两边都是字面量,那么编译器在生成class文件时就将结果计算完毕并保存到编译后的class文件中了,所以代码String s4 = "hello"+"123";在class文件里是:

    String s4="hello123";

    2.StringBuffer和StringBuilder

    需求:如果我们需要对字符串进行更复杂如查找,删除,连接,替换等操作,需要使用到这2个类

    这两个类的主要区别是:

    StringBuffer:线程安全的可变字符序列,是同步的,当用于多个线程时更安全

    StringBuilder : 非同步的,当单个线程使用时,推荐使用它,因为它比 StringBuffer 要快

    注意:在String类中有一个replace()方法,用于替换指定字符,当调用时,返回的是一个新的String

    在StringBuffer类中有一个append()方法,它是在原有的基础上继续添加,例如:

    String str = "javaphp";

    str.replace( "p", "c");

    System. out.println(str);//打印结果为javaphp

    System. out.println( "------------------");

    StringBuffer sb = new StringBuffer( "javaphp");

    sb.append( "c++");

    System. out.println(sb.toString());//打印结果为javaphpc++

    3.Date

    Date类有2个构造函数,有参和无参,无参构造创建出的是此刻时间,有参构造创建的是参数所表示的那个时间

    DateFormat:作用:进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。位于java.text包下的一个抽象类,是日期/时间格式化子类的抽象类,使用时,我们可以用如下方式获取格式器对象,并传入风格参数(风格参数就是以什么格式格式化日期对象):

    ①:格式化(日期 -> 文本)

    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat. FULL);

    String str = dateFormat.format(date);

    System. out.println(str);

    ②:解析(文本-> 日期)

    String str_date = "2012年12月12日";

    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat. FULL );

    Date date = dateFormat.parse(str_date);

    System.out.println(date);

    注:DateFormat定义了4种风格:DateFormat.MEDIUM,DateFormat.LONG,

    DateFormat. FULL,DateFormat.SHORT

    特别的:如果我们需要的格式在这四种风格中不存在,怎么办呢?

    我们可以使用DateFormat的子类SimpleDateFormat,将风格传给它的构造器:

    Dateformat format = new SimpleDateFormat("yyyy/MM/dd hh--mm--ss");

    String str_date = "2012/12/12 12--12--12";

    Date date = dateFormat.parse(str_date);

    System.out.println(date);

    Calendar:由于Date类中的许多方法已经废弃,所以日期和时间字段之间转换,获取字符串中指定的日期信息时,应当使用Calendar类

    Calendar也是抽象类,获取日历对象的方法和DateFormat类似:Calendar c = Calendar.getInstance();

    Calendar内部维护者一个Map集合,因此可以由键取值如:

    int year = c.get(Calendar.YEAR);

    int month = c.get(Calendar.MONTH)+1;

    int day = c.get(Calendar.DAY_OF_MONTH);

    注意:Date类中的月份是从0-11的整数表示,0表示一月,11表示十二月

    4.集合public class CollectionDemo1 {

    public static void main(String[] args) {

    Collection coll = new ArrayList();

    Collection coll2 = new ArrayList();

    coll2.add("1");

    coll.add("1");

    coll.add("3");

    coll.add("4");

    coll.add("1");

    coll.remove("1");//remove()方法只会删除第一个equles的元素,不会检测后面还有没有equles的元素

    System.out.println(coll);

    coll.removeAll(coll2);//若想删除coll中所有的"1",可以使用这种方式

    System.out.println(coll);

    }

    }

    集合中存储的全是引用,如果add()方法中写的是基本数据类型,那么会自动装箱

    IT免费课程咨询:http://sh.java.tedu.cn/baidu3/wmkc02/

上一篇:关于CSS的作用有哪些?

下一篇:java用swing写游戏有哪些共性?

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:4.28

 Java--零基础业余班

Java--零基础业余班

开班日期:4.28

Java--大数据全日制班

Java--大数据全日制班

开班日期:4.28

Java--大数据业余制班

Java--大数据业余制班

开班日期:4.28

  • 地址: 上海达内12大校区,就近安排,提供住宿(浦东/徐汇/人广/静安/虹口等)
  • 课程培训电话:13691148991     24小时咨询电话:150-2157-9486
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56