华杉研发九学习日记15
java常用类库
一,String类总结
String是Java中的不可变字符串类。对象创建的时刻就确定了大小以及内容。在使用过程中,内容不可以修改。虽然String类提供了很多和修改相关的方法(求子串、替换、大小写等),但本质上都是新建了字符串,原来的字符串并未发生任何变化。
二,StringBuffer类
建议使用:一个字符串在短期内需要大量修改。
在建立对象时只能使用 new ,且默认容量为16。
stringBuffer是Java中的可变字符串类,可变指的是字符串的内容可变,即对
字符串进行增、删、改操作,字符串本身会受到影响。
StringBuffer除了内容可变之外,另外一个特点就是线程安全。在多线程环境
下,不同的线程对同一个字符串操作,结果不会紊乱。----多线程是后面的内容
因为StringBuffer类是java.lang包中的类,所以使用的时候无需导包。
String与stringBuffer在内存中的区别:
扩容(使用一次append()为一次扩容):
1.如果加入的致据比默认空间小,则不扩容
2.如果加入的数据超出瓯有空问,则默认扩容 len*2+2
3.如果扩容后空间依然小,则现有的空间是加入字符串后的最大长度即可
java
//容量空间 扩容 2*原来容量+2
StringBuffer sb = new StringBuffer(); // 16
System.out.println(sb);
StringBuffer sb2 = new StringBuffer("abcde");// 16+abcde
System.out.println(sb2);
StringBuffer sb3 = new StringBuffer(10);// 10
System.out.println(sb3);
// capacity() 容量
System.out.println("容量为:"+sb3.capacity());
// append() 追加内容(同一字符串)
sb.append("11111111111111111"); // 34 2*16+2
System.out.println(sb);
System.out.println("容量为:"+sb.capacity());
java
StringBuffer sb = new StringBuffer("helloworld!");
sb.append("!!");
System.out.println(sb);
sb.insert(5,"-");//指定位置插入
System.out.println(sb);
sb.delete(3,5); // 删除范围数据
System.out.println(sb);
sb.deleteCharAt(5); // 删除下标单个字符
System.out.println(sb);
sb.replace(5,8,"???"); //替换字符
System.out.println(sb);
sb.reverse(); //倒置
System.out.println(sb);
System.out.println(sb.toString());
三,StringBuilder类
StringBuilder是Java中的可变字符串类 ,对字符串进行增、删、改操作,字符串本身会受到影响。因为StringBuilder类是 java.lang包中的类,所以使用的时候无需导包,
StringBuilder的基本应用与StringBuffer完全一摸一样。|
唯一区别:不能保证线程安全
面试题
String、StringBuffer、StringBuilder的区别:
String是不可变字符串。
StringBuilder是可变学符串。多线程下不安全,执行效率比StringBuffer高。
StringBuffer也是可变字符串。多线程下安全,但执行效率低.
四,Math类
Math类是Java中的数学类,这个类提供了各种数学相关的方法(三角函数,绝对
值,指数运算,开方,最值,角度弧度互转等等),这个类的方法和属性都是静态的.在
使用的时候通过类名访问方法.
Math类在java.lang包中,不用导包
java
// 字段
System.out.println(Math.PI);
// 方法
System.out.println(Math.abs(-123.1));// 绝对值
System.out.println(Math.ceil(12.33));// 向上取整
System.out.println(Math.floor(12.33));// 向下取整
System.out.println(Math.sqrt(4)); // 开方
System.out.println(Math.pow(2,4)); // 幂运算
System.out.println(Math.round(24.4999));// 四舍五入
System.out.println(Math.random()); // 随机数 [0,1)
System.out.println(Math.max(12,23)); // 最大值
System.out.println(Math.min(111,2)); // 最小值
// 随机数
int n=(int)(Math.random()*100);
System.out.println(n);
五,Random类
六,UUID
-
UUID:通用唯一识别;:Universally Unique ldentifier;在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。形式一般如下:50bdf2d0-87ab-4110-802c-20bfe1454da4
-
UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID,由于UUID总有一个长度限制,所以理论是UUID是可能会发生冲突的,但是只要重复率满足一定条件我们就可以认为UUID是唯一的。
-
我们一般用来表示:随机的唯一的字符串
UUID在java.util包中,使用时需要导包。
七,Date类
java
//使用无参构造器构造对象 -- 系统当前时间
Date da1 = new Date();
System.out.println(da1);
// 基准时间;1970-01-01 00:00:00 格林尼治时间 中国东八区-->
// 有参的构造器 -- 时间是从基准时间过了多少毫秒后的时间
Date da2 = new Date(1000); // 毫秒数
System.out.println(da2);
// getTime()
// 从基准时间到当前时间所过的毫秒数
long time = da1.getTime();
System.out.println(time);
System.out.println(da2.getTime());
System.out.println("==============了解即可");
//
int year = da1.getYear()+1900; //得到年,需要加1900
System.out.println(year);
int month = da1.getMonth()+1; //得到月,需要加1
System.out.println(month);
System.out.println("=============");
Date now = new Date();
Date back = new Date(124,6,24);// 退货最终时间
System.out.println(back);
if(now.before(back)){ //before方法,判断是否在莫一天之前
System.out.println("您可以退货");
}else System.out.println("您不可以退换货");
八,Calendar类
日历类(Calendar):是抽象类,表示日历.比Date更强大
Calendar在java.util包中,需要导包
Calendar是一个抽象类,无法通过直接实例化得到对象.因此, Calendar提供了一个方法getInstance,来获得一个Calendar对象,得到的Calendar由当前时间初始化.
创建对象,使用静态方法进行实例化
获取时间相关信息,使用get方法和Calendar中的字段
java
// 创建对象 -- 使用静态方法进行实例化
Calendar calendar = Calendar.getInstance();
// 使用get方法根据不同字段来获取不同的时间相关信息
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
System.out.println(calendar.get(Calendar.MONTH)+1);
System.out.println(calendar.get(Calendar.DATE));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
System.out.println(calendar.get(Calendar.MILLISECOND));
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)+1);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));