String方法、包装类、枚举、日期

String类

StringBuilder与StringBuffer

StringBuilder可变长字符序列 , 线程不安全 ,单线程下大量操作字符串推荐使用

StringBuffer 可变长字符序列 , 线程安全的 ,多线程下大量操作字符串推荐使用

执行效率:

StringBuilder > StringBuffer > String

方法

以下以StringBuilder为例:

1、构造一个字符串构建器,其中不包含任何字符,初始容量为16个字符

StringBuilder()

2、构造一个字符串构建器,其中没有字符,并且具有 capacity参数指定的初始容量。

StringBuilder(int capacity) 

注意:能够确定容量的情况下可以选择使用StringBuilder

3、修改原串:将 boolean参数的字符串表示形式追加到序列中

StringBuilder append(boolean b)

注意:

扩容机制: int newCapacity = (oldCapacity << 1) + 2; 为原容量的2倍+2

4、删除此序列的子字符串中的字符,结束索引不包含

StringBuilder delete(int start, int end) 

5、将字符串插入此字符序列

StringBuilder insert(int offset, String str) 

6、导致此字符序列被序列的反向替换

StringBuilder reverse()

Math

数据相关的类,是个静态工厂

算术计算

  • Math.sqrt() : 计算平方根
  • Math.cbrt() : 计算立方根
  • Math.pow(a, b) : 计算a的b次方
  • Math.max( , ) : 计算最大值
  • Math.min( , ) : 计算最小值
  • Math.abs() : 取绝对值

例:

System.out.println(Math.sqrt(16)); // 4.0
System.out.println(Math.cbrt(8)); // 2.0
System.out.println(Math.pow(3, 3)); // 27.0
System.out.println(Math.max(3.3, 4.6));// 4.6
System.out.println(Math.min(3.3, 4.6));// 3.3
System.out.println(Math.abs(-10.8)); // 10.8
System.out.println(Math.abs(10.2)); // 10.2

进位

  • Math.ceil(): 天花板的意思,就是逢余进一
  • Math.floor() : 地板的意思,就是逢余舍一
  • Math.rint(): 四舍五入,返回double值。注意.5的时候会取偶数
  • Math.round(): 四舍五入,float时返回int值,double时返回long值

例:

System.out.println(Math.ceil(-10.1)); // -10.0
System.out.println(Math.ceil(10.7)); // 11.0

System.out.println(Math.floor(-10.1)); // -11.0
System.out.println(Math.floor(10.7)); // 10.0

System.out.println(Math.rint(10.1)); // 10.0
System.out.println(Math.rint(10.7)); // 11.0
System.out.println(Math.rint(11.5)); // 12.0
System.out.println(Math.rint(10.5)); // 10.0
System.out.println(Math.rint(10.51)); // 11.0

System.out.println(Math.round(10)); // 10
System.out.println(Math.round(10.1)); // 10
System.out.println(Math.round(10.7)); // 11
System.out.println(Math.round(10.5)); // 11
System.out.println(Math.round(10.51)); // 11

随机数

  • Math.random(): 取得一个[0, 1)范围内的随机数

公式:

随机整数:[min,max]

(int)(Math.random() * (max-min+1) + min)

例:

//[5,12]的随机整数
(int)(Math.random() * (12-5+1) + 5)

包装类

Java有8种基本数据类型:整型(byte、short、int、long)、浮点型(float、double)、布尔型boolean、字符型char。

相对应地,Java提供了8种包装类ByteShortIntegerLongFloatDoubleBooleanCharacter。包装类创建对象的方式就跟其他类一样。

基本数据类型对应包装类名称
byteByte字节型
shortShort短整型
intInteger整型
longLong长整型
floatFloat单精度
doubleDouble双精度
charChar字符型
booleanBoolean布尔型

1、包装类是类,类中可以定义成员,增强使用能力(成员变量,成员方法…)

2、类似集合,要求只能存储引用数据类型的数据

3、基本数据类型与引用数据类型的默认值(null)

为什么存在包装类还要保留基本数据类型???

基本数据类型比引用数据类型更节省内存空间,存在性能优势

自动拆装箱机制

将基本类型和包装类进行自动的互相转换

自动装箱

基本数据类型——> 包装类

每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中

例:

int i = 1;
Integer in = i;

自动拆箱

包装类 ——> 基本数据类型

每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和

doubleValue()方法

例:

Integer in = 1;
int i = in;

相关方法:

1、返回整数参数的字符串表示形式,作为基数为2的无符号整数

static String toBinaryString(int i)

2、返回整数参数的字符串表示形式,作为基数为16的无符号整数

static String toHexString(int i)

3、返回整数参数的字符串表示形式,作为基数为8的无符号整数

static String toOctalSting(int i)

4、将字符串参数解析为带符号的十进制整数

static int parseInt(String s)

5、将字符串参数解析为带符号的十进制整数

static int parseInt(String s, int radix) 

比较问题

==

基本数据类型——>数据值

引用数据类型——>地址值

例:

int i1 = 127;
int i2 = 127;
Integer i3 = 127;
Integer i4 = 127;
Integer i5 = new Integer(127);
Integer i6 = new Integer(127);
Integer i7 = 128;
Integer i8 = 128;

System.out.println(i1==i2);  //true
System.out.println(i3==i4);  //true
System.out.println(i1==i3);  //true
System.out.println(i5==i6);  //false
System.out.println(i1==i6);  //true
System.out.println(i3==i6);  //false
System.out.println(i7==i8);  //false

注意:

1、两个基本数据类型int比较,只要数据值相等就相等。i1与i2

2、两个new Integer() 比较,肯定不相等,因为new每个对象堆内存中地址不同。i5与i6

3、Integer与new Integer比较肯定不相等,因为new 不同的地址。i3与i6

4、基本数据类型int与Integer|new Integer比较,如果数据值相等肯定相等,

​ 因为包装类会发生自动拆箱,然后比较数据值。i1与i3、i1与i6

5、两个Integer比较,在缓冲区范围[-128,127]之间就相等,同一个缓冲区对象,如果在范围之外就不相等。i3与i4、i7与i8

Integer缓冲区对象能够表示的数据范围:[-128,127]

String初始化的注意事项:

String str = "abc";  
//创建了1个对象str,在堆中,"abc"在字符串常量池中
String str2 = new String("haha");  
//创建了2个对象str2和new,"haha"在字符串常量池中
String str3 = new String("abc");  
//创建了1个对象str,因为"abc"已经在字符串常量池中直接使用

枚举类 enum

JDK1.5引入了新的类型,同时可以使用switch语句

是类,当能够确定一种事物的所有可能,一个类型的所有对象的时候可以使用

java中所有的枚举类型都会隐式的继承自java.lang.Enum,这是所有Java语言枚举类型的公共基类。

枚举类中的字段,就为做当前枚举类型的一个实例存在,默认被 public static final修饰

定义:

enum 枚举名{}

方法:

1、获取枚举实例的字段名

name()

2、获取实例在枚举类中的序号(从0开始)

ordinal()

3、获取当前枚举类的所有实例

values()

日期类型

Date

Date类表示特定的时刻,精度为毫秒

1、Date() 分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒

Date date = new Date();

2、返回自此 Date对象表示的1970年1月1日00:00:00 GMT以来的毫秒数

getTime()

3、分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。

Date(long date)

4、测试此日期是否在指定日期之后

after(Date when)

5、测试此日期是否在指定日期之前

before(Date when)

6、将此Date对象转换成以下形式的String

toString()

SimpleDateFormat

格式日期转换器

可以实现日期与字符串之间的转换问题

SimpleDateFormat s = new SimpleDateFormat();

默认格式:

SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

一些常见的标记:

年 yyyy
月 MM
日 dd
时 HH
分 mm
秒 ss
毫秒 SSS

format()

将日期对象转换成字符串

例:

System.out.println(s.format(data));

parse()

将字符串转换为日期对象

例:

String datestr = "2021-06-11 17:22:22";
System.out.println(s.parse(datastr));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值