java---常用类

来源:互联网 发布:二级备案域名免费注册 编辑:程序博客网 时间:2024/06/05 22:04

字符串

字符序列:把多个字符按照一定顺序排列起来
字符串:把多个字符串串起来
字符串的分类:
1.不可变的字符串: String : 当前对象创建完毕后,该对象的内容是不能改变的。一旦内容改变就是一个新的对象。
2.可变的字符串: StringBuilder/StringBuffer : 当对象创建完毕后,该对象的内容可以发生改变,当内容改变的时候,对象保持不变

字符串的本质(其实就是char[]数组):
String str = "ABCDEFG"; //定义一个字符串对象
char [] cs = new char[] {"A","B","C","D","E","F"}; // 定义一个char[]数组



String类: 当改变的时候,变量的名称不会改变,但是内存的地址已经改变了。所以是一个新对象

String对象的创建:
1):直接附一个变量值   String xx = "ABCDE" ;
2):通过构造器创建      String xx =  new String("ABCDE");
-------------------------------------------------------------------------------------------------------------------------------------------------------
两种方式有什么区别,分别在内容中如何分布?
String 对象的空值:
1): 表示引用为空 : String str = null ; 没有初始化没有分配内存空间
2):内容为空字符串:String str2 = "" ; 已经初始化了,只不过没有内容
----------------------------------------------------------------------------------------------------------------------------------------------------------
判断字符串非空
1):引用不能为空(null)
2):字符内容不能为空("")
----------------------------------------------------------------------------------------------------------------------------------------------------------
字符串的比较操作:
1) : 使用 "=="           只能比较引用的内存地址是否相同
2) :使用equals方法   在Object类中和"=="相同,但是在String类中覆盖equals方法,比较的是字符内容
--------------------------------------------------------------------------------------------------------------------------------------------------------=
String str1 = "ABCDEF";
最多创建一个String对象,最少不创建对象。如果常量池中有"ABCDEF",那么就直接引用不需要在创建一个String对象
否则要在常量池中先创建一个"ABCDEF"内存空间,再引用


String str1 = new String("ABCDEF"); 
最多创建两个String对象,至少创建一个String对象
new关键字绝对会在堆空间中,创建内存区域,所以至少创建一个String对象

-----------------------------------------------------------------------------------------------------------------------------------------------------------
String str1 = "ABCD";
String str2 = "AB"+"CD";
String str3 = new String("ABCD");
String str4 = "AB";
String str5 = str4 + "CD";
System.out.println(str1==str2);// true
System.out.println(str1==str3);// false

System.out.println(str1==str5);// false


1. 单独使用""引号创建的字符串都是直接量,编译期就已经确定存储到常量池中;

2.使用new String(“”)创建的对象会存储到堆内存中是 运行期才创建的;

3.使用只包含直接量的字符串连接符 如 “aa”+“bb” 创建的也是直接量,编译期就能确定,已经确定存储在常量池中

4.使用包含String直接量创建的对象是运行期才创建的,存储在堆中

5.通过变量/调用方法去连接字符串,都只能在运行时期才能确定变量的值和方法的返回值,不存在编译优化操作

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

String类中的常用方法:



详见day03Demo


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

String/StringBuilder/StringBuffer 的对比

String:做字符串拼接的时候,性能很低,因为Stirng 是不可变的,每次改变都会创建新的对象

StringBuffer:StringBuffer中的方法都使用了synchronized修饰符,表示同步,在多线程的时候可以保证线程安全
StringBuilder:没有使用sychronized修饰符,不安全,但是性能高

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Random随机数:

random类产生一个伪随机数(通过相同的种子,产生的随机数是相同的)
 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ThreadLocalRandom随机数

ThreadLocalRandom是java7新增的类,是Random类的子类,在多线程并发的情况下,ThreadLocalRandom相对于Random可以减少多线程资源的竞争
从而保证了线程的安全
因为构造器是默认访问权限,只能在java.util包中创建对象,提供了一个方法,用于返回当前类对象


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

UUID随机数

UUID:通常唯一识别:在一台机器上生成的数字,它保证对在同一时空中额所有的机器都是唯一的。
UUID是一个128位长的数字,一般用16进制表示,算法的核心思想是结合机器的网卡,当地时间,一个随机数来生成UUID
我们一般用来表示:随机的唯一的一个字符串

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Date时间类

直接可以使用java.util包中的对象

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DateFormat时间类

DateFormat:可以完成日期的格式化操作
格式化( format ) : Date类型对象-------》String类型对象
解析 ( parse ) : String类型时间 -----》Date类型对象

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DateFormat转换的格式是固定的,我们可以根据自己的风格来转换

SimpleDateFormat类:是DateFormat的子类

String model = "yyyy-MM-dd HH:mm:ss"; //自定义的时间显示格式
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern(model); // 申请使用哪一种时间模式

Date date = new Date();
String time = sdf.format(date);// 转换为String类型






--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Calendar 日历类:

是一个抽象类,表示日历,比Date更强大
创建日历对象: 通过  Calendar cl = Calendar.getInstance();   
cl.get(field); 返回给定日历字段(年,月,日,时,分,秒)的值

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

正则表达式:

主要用于匹配判断,分割操作,替换操作 (详见 图 和 day03 j14)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原创粉丝点击