Java 基础之常用API

字符串相关的类

String 类

  • 特点:
    1. String类: 代表字符串。 Java 程序中的所有字符串字面值(如 "abc"都作为此类的实例实现。
    2. String是一个final类,代表不可变的字符序列。
    3. 字符串是常量,用双引号引起来表示。 它们的值在创建之后不能更改。
    4. String对象的字符内容是存储在一个字符数组value[]中的。
  • String 对象的创建
String str = "abc"; 
String s1 = new String(); //本质上 this.value = new char[0]
String s2 = new String(String original);
//this.value = original.value
String s3 = new String(char[] a);
String s4 = new String(char[] a,int startIndex,int count);
//this.value = Arrays.copyOf(value, value.length)
String str1 = “abc”;与String str2 = new String(“abc”)的区别
字符串常量存储在字符串常量池中,目的是共享
字符串对象是存储在堆中
例:
String s1 = "javaEE";
String s2 = "javaEE";
String s3 = new String("javaEE");
String s4 = new String("javaEE");
System.out.println(s1 == s2);//true
System.out.println(s1 == s3);//false
System.out.println(s1 == s4);//false
System.out.println(s3 == s4);//false
  • 字符串拼接
String s1 = "hello";
String s2 = "world";
String s3 = "hello" + "world";
String s4 = s1 + "world";
String s5 = s1 + s2;
String s6 = (s1 + s2).inter();
System.out.println(s3 == s4);//false
System.out.println(s3 == s5);//false
System.out.println(s5 == s4);//false
System.out.println(s3 == s6);//true
结论:
1.常量与常量的拼接结果在常量池。 且常量池中不会存在相同内容的常量
2.只要其中有一个是变量, 结果就在堆中
3.如果拼接的结果调用intern()方法, 返回值就在常量池中
  • String 使用陷阱

    1. String s1 = "a";
    说明:在字符串常量池中创建了一个字面量为"a"的字符串。
    2. s1 = s1 + "b";
    说明:实际上原来的“a”字符串对象已经丢弃了, 现在在堆空间中	
    产生了一个字符串s1+"b"(也就是"ab")。如果多次执行这些改变
    串内容的操作,会导致大量副本字符串对象存留在内存中,降低效
    率。如果这样的操作放到循环中,会极大影响程序的性能。
    3. String s2 = "ab";
    说明:直接在字符串常量池中创建一个字面量为"ab"的字符串。
    4. String s3 = "a" + "b";
    说明: s3指向字符串常量池中已经创建的"ab"的字符串。
    5. String s4 = s1.intern();
    说明:堆空间的s1对象在调用intern()之后,会将常量池中已经存
    在的"ab"字符串赋值给s4
    
  • 字符串常用方法

    1. int length(): 返回字符串的长度: return value.length
    2. char charAt(intndex): 返回某索引处的字符return value[index]
    3. boolean isEmpty(): 判断是否是空字符串:
      return value.length == 0
    4. String toLowerCase(): 使用默认语言环境, 将 String中的所有字符转换为小写
    5. String toUpperCase(): 使用默认语言环境, 将 String 中的所有字符转换为大写
    6. String trim(): 返回字符串的副本, 忽略前导空白和尾部空白
    7. boolean equals(Object obj):比较字符串的内容是否相同
    8. boolean equalsIgnoreCase(String anotherString):与equals方法类似, 忽略大小写
    9. String concat(String str): 将指定字符串连接到此字符串的结尾.等价于用“+”
    10. int compareTo(String anotherString): 比较两个字符串的大小
    11. Stringsubstring(int beginIndex): 返回一个新的字符串, 它是字符串的从beginIndex开始截取到最后的一个子字符串
    12. String substring(int beginIndex, int endIndex) : 返回一个新字符串, 它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串
    13. contains(CharSequence s): 当且仅当此字符串包含指定的 char 值序列 时,返回 true
    14. nt indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
    15. int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出 现处的索引,从指定的索引开始
    16. int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
    17. int lastIndexOf(String str, int fromIndex): 返回指定子字符串在此字符串中最后 一次出现处的索引,从指定的索引开始反向搜索
      注:indexOf和lastIndexOf方法如果未找到都是返回-1
    18. boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
    19. boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
    20. boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的 子字符串是否以指定前缀开始
    21. String replace(char oldChar, char newChar): 返回一个新的字符串, 它是 通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
    22. String replace(CharSequence target, CharSequence replacement): 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
    23. String replaceAll(String regex,String replacement) : 使 用 给 定 的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
    24. String replaceFirst(String regex, String replacement) : 使 用 给 定 的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串
    25. boolean matches(String regex): 告知此字符串是否匹配给定的正则表达式
    26. String[] split(String regex):根据给定正则表达式的匹配拆分此字符串
    27. String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串, 最多不超过limit个, 如果超过了, 剩下的全部都放到最后一个元素中
  • 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(doubled)、 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):提供了将指定索引范围内的字符串存放到数组中的方法
  • String 与字节字符串转换

    • 字节数组 >>> 字符串
      • String(byte[]): 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String
      • String(byte[], int offset, int length) : 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。
    • 字符串 >>> 字节数组
      • public byte[] getBytes() : 使用平台的默认字符集将此 String 编码为byte 序列,并将结果存储到一个新的 byte 数组中。
      • public byte[] getBytes(String charsetName) : 使用指定的字符集将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组

StringBuffer

StringBuffer类不同于String,其对象必须使用构造器生成。有三个构造器:

	StringBuffer():初始容量为16的字符串缓冲区
	StringBuffer(int size):构造指定容量的字符串缓冲区
	StringBuffer(String str):将内容初始化为指定字符串内容
  • StringBuffer 常用类

      StringBuffer append(xxx):提供了很多的append()方法, 
      用于进行字符串拼接
      StringBuffer delete(int start,int end):删除指定位置
      的内容
      StringBuffer replace(int start, int end, String str):
      把[start,end)位置替换为str
      StringBuffer insert(int offset, xxx):在指定位置插入xxx
      StringBuffer reverse() :把当前字符序列逆转
      注: 
      1. 当append和insert时,如果原来value数组长度不够,可扩容。
      2. 如上这些方法支持方法链操作。
    
方法链原理:
public StringBuider append(String str){
	super.append(str);
	return this
}

StringBuider 类

  • StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列, 而且提供相关功能的方法也一样

  • 面试题:对比String、 StringBuffer、 StringBuilder

      String(JDK1.0): 不可变字符序列
      StringBuffer(JDK1.0): 可变字符序列、效率低、线程安全
      StringBuilder(JDK 5.0):可变字符序列、效率高、 线程不安全
    

注意:作为参数传递的话,方法内部String不会改变其值, StringBuffer和StringBuilder会改变其值

System 类

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。

由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的, 所以也可以很方便的进行调用。

成员变量

System类内部包含in、 out和err三个成员变量,分别代表标准输入流
(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

成员方法

  • native long currentTimeMillis():该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
  • void exit(int status):该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。 使用该方法可以在图形界面编程中实现程序的退出功能等。
  • void gc():该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
  • String getProperty(String key):该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示:
属性名属性说明
java.versionJava的版本
java.homeJava的安装目录
os.version操作系统的版本
os.name操作系统的名称
user.home用户的主目录
user.name用户的名称
user.dir用户的当前工作目录

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.0到1.0的随机数
long round(double a) double型数据a转换为long型(四舍五入)
toDegrees(double angrad) 弧度  >>>  角度
toRadians(double angdeg) 角度  >>> 弧度

BigInteger与BigDecimal

Biglnteger

Integer类作为int的包装类,能存储的最大整型值为231-1, Long类也是有限的,最大为263-1。 如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。

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

构造器

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

常用方法

public BigInteger abs():
	返回此 BigInteger 的绝对值的 BigInteger。
BigInteger 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) 的 BigInteger。
BigInteger[] divideAndRemainder(BigInteger val):
返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组
BigInteger pow(int exponent) :
	返回其值为 (this^exponent) 的 BigInteger。

BigDecimal

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

构造器

public BigDecimal(double val)
public BigDecimal(String val)

常用方法

public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值