java基础-常用类

1. String类:不可变的字符序列(如:String str = "atguigu"; str += "javaEE")
1.关注于String常用的方法!
2.String类与基本数据类型、包装类;与字符数组、字节数组;
* 1.字符串 与基本数据类型、包装类之间转换
* ①字符串 --->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
* ①基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法

* 2.字符串与字节数组间的转换
* ①字符串---->字节数组:调用字符串的getBytes()
* ②字节数组---->字符串:调用字符串的构造器

* 3.字符串与字符数组间的转换
* ①字符串---->字符数组:调用字符串的toCharArray();
* ②字符数组---->字符串:调用字符串的构造器
   4.String与StringBuffer的转换
   ①String --->StringBuffer:使用StringBuffer的构造器:new StringBuffer(String str);
   ②StringBuffer----->String:使用StringBuffer的toString()方法

   StringBuffer类:可变的字符序列
   StringBuilder类:可变的字符序列,jdk5.0新加入的,效率更高,线程不安全。
    常用的方法:添加:append(...)  删除 delete(int startIndex, int endIndex)  修改:setCharAt(int n ,char ch)  查询:charAt(int index)
插入:insert(int index, String str)  反转reverse()  长度:length()


注:String类的不可变性:


String类被final修饰,不可继承
string内部所有成员都设置为私有变量
不存在value的setter
并将value和offset设置为final。
当传入可变数组value[]时,进行copy而不是直接将value[]复制给内部变量.
获取value时不是直接返回对象引用,而是返回对象的copy.


优点
1.字符串常量池的需要.
字符串常量池可以将一些字符常量放在常量池中重复使用,避免每次都重新创建相同的对象、节省存储空间。但如果字符串是可变的,此时相同内容的String还指向常量池的同一个内存空间,当某个变量改变了该内存的值时,其他遍历的值也会发生改变。所以不符合常量池设计的初衷。


2. 线程安全考虑。
同一个字符串实例可以被多个线程共享。这样便不用因为线程安全问题而使用同步。字符串自己便是线程安全的。


3. 类加载器要用到字符串,不可变性提供了安全性,以便正确的类被加载。譬如你想加载java.sql.Connection类,而这个值被改成了myhacked.Connection,那么会对你的数据库造成不可知的破坏。


4. 支持hash映射和缓存。
因为字符串是不可变的,所以在它创建的时候hashcode就被缓存了,不需要重新计算。这就使得字符串很适合作为Map中的键,字符串的处理速度要快过其它的键对象。这就是HashMap中的键往往都使用字符串。


缺点:


如果有对String对象值改变的需求,那么会创建大量的String对象。




2.时间、日期类:
  2.1System类  currentTimeMillis():返回当前时间的long型值。此long值是从1970年1月1日0点0分00秒开始到当前的毫秒数。
      此方法常用来计算时间差。
   2.2 Date类:java.util.Date
1.  Date  d = new Date();//返回当前时间的Date:Mon May 12 15:17:01 CST 2014
             Date d1 = new Date(15231512541241L);//返回形参处此long型值对应的日期
//getTime():返回当前日期对应的long型值。 toString()
   2.3SimpleDateFormat:java.text.SimpleDateFormat
格式化 :日期--->文本 使用SimpleDateFormat的format()方法    
解析:文本--->日期 使用SimpleDateFormat的parse()方法
//1.格式化1
SimpleDateFormat sdf = new SimpleDateFormat();
String date = sdf.format(new Date());
System.out.println(date);//14-5-12 下午3:24
//2.格式化2
SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
date = sdf1.format(new Date());
System.out.println(date);//星期一, 12 五月 2014 15:29:16 +0800

//3.解析:
Date date1 = sdf.parse("14-5-12 下午3:24");
System.out.println(date1);

date1 = sdf1.parse("星期一, 12 五月 2014 15:29:16 +0800");
// date1 = sdf1.parse("14-5-12 下午3:24");
System.out.println(date1);
   2.4 Calendar:日历类
         2.4.1获取实例:Calendar c = Calendar.getInstance();
         2.4.2 get()/set()/add()/date getTime()/setTime()


3.Math类


4.BigInteger  BigDecimal类

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章