javase 基础之常用类

javase 基础之常用类

前言
本文将会介绍:

  • 字符串相关的类及常用方法:String类、StringBuffer类、String Builder类
  • 日期类
  • Math类
  • Random类
  • System类
  • Biglnteger类
  • BigDecimal类

String类
String是一个final类,代表不可变的字符序列
String 的实例化方式:
一:通过字面量定义的方式。
二:通过new+构造器的方式
说明:
通过字面量定义的方式:此时的s1、s2的数据声明在方法区中的字符串常量池中
String s1=“javaEE”;
String s2=“javaEE”;
通过new+构造器的方式:此时的s3、s4保存的地址值,是数据在堆空间开辟空间以后对应的地址值。
String s3=new String(“javaEE”);
String s4=new String(“javaEE”);
内存结构解析
在这里插入图片描述String类常用方法:
返回字符串的长度:return value.length

int length()

返回某索引处的字符 return value[index]

char charAt(int index)

判断是否是空字符串:return value.length==0

boolean isEmpty()

比较字符串的内容是否相同

 Boolean equals(Object obj)

比较两个字符串的大小

int compareTo(String anotherString)

返回一个字符串。它是此字符串的从beginIndex开始截取的,包含到endIndex前一位。

String substring(int beginIndex,int endIndex)

返回一个新的字符串,它是此字符串的从beginIndex开始截取的

String substring(int beginIndex)

大小写转换

 String toLowerCase():使用默认语言环境,将string中的所有字符转换成小写
 String toUpperCase(): 使用默认语言环境,将string中的所有字符转换为大写

String与基本数据转换
字符串 --> 基本数据类型、包装类
Integer包装类的public static int parseInt(String s):可以将由“数字”字符组成的字符串转换为整型。
类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应
的类方法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。
基本数据类型、包装类 —>字符串
调用String类的public String valueOf(int n)可将int型转换为字符串
相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)
valueOf(double d)、valueOf(boolean b)可由参数的相应类型到字符串的转换
String与字符数组的相互转换
字符数组 --> 字符串
String 类的构造器:String(char[]) 和 String(char[],int offset,int
length) 分别用字符数组中的全部字符和部分字符创建字符串对象。
字符串 —> 字符数组
public char[] toCharArray():将字符串中的全部字符存放在一个字符数组
中的方法。
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):提供了将指定索引范围内的字符串存放到数组中的方法。

StringBuffer类

  • java.lang.StringBuffer代表可变的字符序列,JDK1.0中声明,可以对字符串内容进行增删,此时不会产生新的对象。

  • 很多方法与String相同。

  • 作为参数传递时,方法内部可以改变值。

实例化方式
StringBuffer类不同于String,其对象必须使用构造器生成。有三个构造器:
StringBuffer():初始容量为16的字符串缓冲区
StringBuffer(int size):构造指定容量的字符串缓冲区
StringBuffer(String str):将内容初始化为指定字符串内容

StringBuffer常用方法
提供了很多的append()方法,用于进行字符串拼接

StringBuffer append(xxx)

删除指定位置的内容

StringBuffer delete(int start,int end)

把[start,end)位置替换为str

StringBuffer replace(int start, int end, String str)

在指定位置插入xxx

StringBuffer insert(int offset, xxx)

把当前字符序列逆转

StringBuffer reverse()

说明

  • 当append和insert时,如果原来value数组长度不够,可扩容
  • 如上这些方法支持方法链操作
  • 方法链原理
@Override
public StringBuffer append(String str)
{
	super.append(str);
	return this;
} 

StringBuilder类
StringBuilder为JDK5.0新增。
StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,
提供相关功能的方法也一样。
StringBuffer中定义的方法全是synchronized的。所以线程安全。

面试题:对比String、StringBuffer、StringBuilder

String(JDK1.0):不可变字符序列
StringBuffer(JDK1.0):可变字符序列、效率低、线程安全
StringBuilder(JDK 5.0):可变字符序列、效率高、线程不安全
注意:作为参数传递的话,方法内部String不会改变其值,
StringBufferStringBuilder会改变其值

执行同一段代码所花费的时间
SringBuilder<StringBuffer<String

日期类

java.util.Date类
子类:java.sql.Date
两个构造器的使用:
构造器一:Date():无参构造器创建的对象可以获取本地当前时间。

   Date date = new Date();

构造器二:Date(long date) 创建指定毫秒数的Date对象

  Date date2= new Date(1623051026736L);
  //指定毫秒数:指距离1970年 1 月 1 日 00:00:00的时间。

常用方法

 -->toString():显示当前的年月日时分秒
 -->getTime():获取当前Date对象对应的时间戳。
  //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
  //称为时间戳
  -->int getYear()  获得年
  -->int getMOnth()  获得月
  ...........

java.text.SimpleDateFormat类
允许进行格式化:日期–>文本
解析:文本—>日期
格式化:

SimpleDateFormat() :默认的模式和语言环境创建对象
 public SimpleDateFormat(String pattern):该构造方法可以用参数pattern
指定的格式创建一个对象,该对象调用:
public String format(Date date):方法格式化时间对象date

解析

public Date parse(String source):从给定字符串的开始解析文本,以生成
一个日期。

java.util.Calendar(日历)类
Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
获取Calendar实例的方法

  • 使用Calendar.getInstance()方法
  • 调用它的子类GregorianCalendar的构造器。

常用方法演示

 //2.常用方法
     //get()
      int days = calendar.get(Calendar.DAY_OF_MONTH);
        //当前时间是这个月的第几天
      System.out.println(days);
     System.out.println(Calendar.DAY_OF_YEAR);

      //set()
     calendar.set(Calendar.DAY_OF_MONTH,22);
     //void 类型。改的是这个对象本身
    System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//22

        //add()
  calendar.add(Calendar.DAY_OF_MONTH,-3);//void
   System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//19

        //getTime() :日历类-->Date
     Date date = calendar.getTime();
     System.out.println(date);
     //setTime():Date-->日历类
    Date date1=new Date();
    calendar.setTime(date1);
    System.out.println(date1);

System类

void gc(): 该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
String getProperty(String key): 该方法的作用是获得系统中属性名为key的属性对应的值。
系统中常见的属性名以及属性的作用如下表所示:
在这里插入图片描述

Math类

java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回
值类型一般为double型。
abs 绝对值
acos,asin,atan,cos,sin,tan 三角函数
sqrt 平方根
pow(double a,doble b) a的b次幂
log 自然对数
exp e为底指数
max(double a,double b)
min(double a,double b)
random() 返回0.01.0的随机数
long round(double a) double型数据a转换为long型(四舍五入)
toDegrees(double angrad) 弧度—>角度
toRadians(double angdeg) 角度—>弧度

Biglnteger类

java.math包的BigInteger可以表示不可变的任意精度的整数。
BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。
另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作
构造器

BigInteger(String val):根据字符串构建BigInteger对象

常用方法

public BigInteger abs():
返回此 BigInteger 的绝对值的 BigIntegerBigInteger add(BigInteger val) :
返回其值为 (this + val)BigInteger
BigInteger subtract(BigInteger val) :
返回其值为 (this - val)BigInteger
BigInteger multiply(BigInteger val) :
返回其值为 (this * val)BigInteger
BigInteger divide(BigInteger val) :
返回其值为 (this / val)BigInteger。整数相除只保留整数部分。  
BigInteger remainder(BigInteger val) :
返回其值为 (this % val)BigIntegerBigInteger[] divideAndRemainder(BigInteger val):
返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。
 BigInteger pow(int exponent) :
 返回其值为 (thisexponent)BigInteger

BigDecimal类

  • 一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。
  • BigDecimal类支持不可变的、任意精度的有符号十进制定点数。

构造器
public BigDecimal(double val)
public BigDecimal(String val)

常用方法与Biglnteger类类似,参数名改了即可。

最后

贴上几道算法题

  1. 模拟一个trim方法,去除字符串两端的空格。

  2. 将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”

  3. 获取一个字符串在另一个字符串中出现的次数。
    比如:获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数

4.获取两个字符串中最大相同子串。比如:
str1 = "abcwerthelloyuiodef“;str2 = “cvhellobnm”
提示:将短的那个串进行长度依次递减的子串与较长的串比较。

5.对字符串中字符进行自然顺序排序。
提示:
1)字符串变成字符数组。
2)对数组排序,选择,冒泡,Arrays.sort();
3)将排序后的数组变成字符串。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值