华杉研发九学习日记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 分钟前
选择排序笔记
java·算法·排序算法
Naive_714 分钟前
蓝桥杯准备(前缀和差分)
java·职场和发展·蓝桥杯
吴梓穆15 分钟前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
头顶秃成一缕光35 分钟前
若依——基于AI+若依框架的实战项目(实战篇(下))
java·前端·vue.js·elementui·aigc
Three~stone39 分钟前
MySQL学习集--DDL
数据库·sql·学习
齐尹秦1 小时前
HTML 音频(Audio)学习笔记
学习
白露与泡影1 小时前
Java面试题及答案整理( 2025年 4 月最新版,持续更新)
java·开发语言
瞌睡不来1 小时前
(学习总结32)Linux 基础 IO
linux·学习·io
hunzi_11 小时前
选择网上购物系统要看几方面?
java·微信小程序·小程序·uni-app·php
Moonnnn.1 小时前
运算放大器(四)滤波电路(滤波器)
笔记·学习·硬件工程