美国上市公司,专注Java培训21年

Java API学习笔记和总结(String和集合框架部分)


1.String 字面量赋值会重用对象:
String s1 = "HelloWorld";
String s2 = "HelloWorld";
System.out.println(s1==s2)//true
ew创建则不会重用
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()方法中写的是基本数据类型,那么会自动装箱



【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • 一个故事讲完https
    一个故事讲完https
    感谢大家阅读由java培训机构分享的“一个故事讲完https”希望对大家有所帮助 详情>>

    2017-08-31

  • GitHub 上火的 Java 框架
    GitHub 上火的 Java 框架
    Java 是目前最需要的编程语言之一。在这里,我们已经挖掘了一些关于框架趋势的有用信息,也就是最受开发者青睐的 Java 框架,名单如下 详情>>

    2017-10-24

  • Java入门学习路径,没有之一
    Java入门学习路径,没有之一
    作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多的困惑。今天java培训班就来为大家讲解下Java入门学习路径 详情>>

    2017-11-23

  • java初学者学习心得
    java初学者学习心得
    学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java),兴趣最重要。下面请看java培训机构带来的分享 详情>>

    2017-12-12

  • Java开班时间

    收起