华杉研发九学习日记15 java常用类库

华杉研发九学习日记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));
相关推荐
一只小菜鸡..4 分钟前
241118学习日志——[CSDIY] [ByteDance] 后端训练营 [06]
学习
岁岁岁平安8 分钟前
springboot实战(15)(注解@JsonFormat(pattern=“?“)、@JsonIgnore)
java·spring boot·后端·idea
Oak Zhang9 分钟前
TheadLocal出现的内存泄漏具体泄漏的是什么?弱引用在里面有什么作用?什么情景什么问题?
java·系统安全
数据小小爬虫11 分钟前
如何利用Java爬虫获得1688店铺详情
java·开发语言
天若有情67312 分钟前
c++框架设计展示---提高开发效率!
java·c++·算法
Reese_Cool31 分钟前
【数据结构与算法】排序
java·c语言·开发语言·数据结构·c++·算法·排序算法
TheITSea1 小时前
云服务器宝塔安装静态网页 WordPress、VuePress流程记录
java·服务器·数据库
AuroraI'ncoding1 小时前
SpringMVC接收请求参数
java
Hacker_Oldv2 小时前
网络安全的学习路线
学习·安全·web安全
蒟蒻的贤2 小时前
vue学习11.21
javascript·vue.js·学习