Java应用程序编程接口APIDay2

一、大数运算类

1.BigInteger类 - 和整形相关
  1)创建方式
   new BigInteger(int)
   new BigInteger(String)
  2)常用API
   BigInteger add(BigInteger val):加法
    BigInteger subtract(BigInteger val):减法
    BigInteger multiply(BigInteger val):乘法
    BigInteger divide(BigInteger val):除法

2.BigDecimal类 - 和浮点型相关
  1)创建方式
   new BigDecimal(double)
   new BigDecimal(String)

  2)常用API
   BigDecimal add(BigDecimal val):加法
    BigDecimal subtract(BigDecimal val):减法
    BigDecimal multiply(BigDecimal val):乘法
    BigDecimal divide(BigDecimal val):除法
  3)注意:
   存在问题:
     在使用除法的时候有可能出现除不尽的情况,会产生ArithmeticException异常.
   解决方式:
     明确规定,要保留的精度,和舎入模式
     divide(BigDecimal divisor, int scale, int roundingMode)
      参数1:要相除的数据
      参数2:要保留的精度位数
      参数3:舎入模式

二、包装类

1.概念:将基本数据类型封装成类的形式.
2.好处:在类中可以定义多功能的方法,然后使用对象的形式进行调用.
  常见方法:用于基本数据类型和字符串之间的转换问题
   例如:
     int -> String
     double -> String

3.基本数据类型对应的包装类
   byte   -  Byte
   short  -  Short
   int    -  Integer
   long   -  Long
   float  -  Float
   double -  Double
   char   -  Character
   boolean -  Boolean

4.包装类之Integer类
1)特点
  a.包装类是final修饰的,不可被继承的类
  b.包装类数值可以进行运算,但是数值不可变
  c.包装类和基本数据类型使用上基本一致,只是包装类多了一个null值.

2)装箱与拆箱
  装箱: int 转换成 Integer
   编译器自动调用: Integer.valueOf(int);
  拆箱: Integer 转换成 int
   编译器自动调用: i1.intValue();

3)常量池
  a.常量池范围:
   直接赋值的方式并且符合byte范围的整数会存储到常量池中.
   byte范围(-128 ~ 127)
  b.注意:
   基本数据类型不需要存储到常量池中,因为基本数据类型不存在引用这个说法,所以就是一个实际的值随着方法的存在而存在栈中,随着方法的消失而消失.

  c.不同包装类的常量池范围
   Byte、Short、Integer、Long范围:-128 ~ 127
   Charater范围:0 ~ 127
   Boolean范围:true和fasle都会进入常量池
   Float、Double范围:都不会进入常量池

4) Integer / int 和 String之间的转换
  Integer -> String
   i1.toString()
  String -> Integer
    方式一: new Integer(String)
    方式二: Integer.valueOf(String)

  int -> String
   Integer.toString(int);
  String -> int
    Integer.parseInt("10");

三、String类 - 字符串类
1.概述
  String类代表字符串类,Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
  字符串是常量;它们的值在创建之后不能更改。
  String存在java.lang包下,使用是不需要进行导包。

2.特点
  a.字符串类是final修饰的,不可被继承的类.
  b.字符串不可变,它们的值在创建之后不能更改。
  c.字符串虽不可变,但是可以被共享。
  d.字符串本质上就是一个字符序列(字符数组)

3.创建方式
  a.直接赋值创建
   String str = " "
  b.构造方法创建
   new String():不携带任何内容
   new String(String):通过字符串构建
   new String(char[]):通过字符数组构建
   new String(byte[]):通过字节数组构建,默认编码集
   new String(byte[],charset):通过字节数组构建,指定编码集

4.常量池
  a.常量池中存放的都是常量
  b.只要是直接赋值的字符串,都是指向常量池

5.字符串的比较
  ==的作用:
   比较基本数据类型: 比较的是具体的值
   比较引用数据类型: 比较的是对象的地址值
  equlas的作用:
   专门用于比较两个对象是否相等

6.常用API
1)内存编码问题
  a.编码方式
   java使用的字符集: Unicode字符集,在JVM中读取.
      1字符 = 2字节

   操作系统编码:
      UTF-8: 1字符 = 3字节
      GBK:   1字符 = 2字节

  b.编码:字符 -> 字节(人:把看得懂的变成看不懂的)
      getByte(String): 默认编码方式,按照ut-8方式进行编码
      getByte(String,"字符集"):指定编码方式

   解码:字节 -> 字符(人:把看不懂的变成看得懂的)
      new String(byte[]):默认解码方式
      new String(byte[],"字符集")"自定解码方式

  c.乱码问题:
   ①.产生原因
     如果按照UTF-8编码出来的数组,然后按照GBK的方式解码,由于两种编译方式不一样,导致乱码的产生.
   ②.解决方式
     1.按照错误的方式进行编码
     2.得到字节数组,重新解码

2)其他常用方法解析参照代码Demo05 / 06 / 07
   char charAt(int index)
    String concat(String str)
    boolean contains(CharSequence s)
    boolean endsWith(String suffix)
    boolean equalsIgnoreCase(String anotherString)
    int indexOf(int ch)
    boolean isEmpty()
    int lastIndexOf(int ch)
    int length()
    String replace(char oldChar, char newChar)
    boolean startsWith(String prefix)
    String substring(int beginIndex)
    String substring(int beginIndex, int endIndex)
    char[] toCharArray()
    String toLowerCase()
    String toUpperCase()
    String trim()
    static String valueOf(Object obj)



面试题:
1.== 和 equals的区别




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值