javaSE复习(2)(常用API)

视频出处 https://pan.baidu.com/s/1SLrZkCCbtkO-VhhOklT6eA
提取码: xcqy
从一个微信公众号里看到的 感觉还可以
常用API中

  • String StringBuffer Data SimpleDateFormat Random 和两个大数据类的普通方法居多 需要创建对象调用方法
  • System Calendar 包装类 Math Arrays类 以静态方法居多 直接通过类调用

随看随记

  • Java的各个包详解
  • 引用类型的==表示比较的是两个引用类型的内存地址是否相同
  • println 会默认调用 toString方法
  • JDK1.7 及之后版本的 JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池。 JDK1.8开始,取消了Java方法区,取而代之的是位于直接内存的元空间(metaSpace)。
  • char[] 中 无法输入‘67’ 因为被识别成两个字符 6 和 7 编译失败 char数组会认为是编码以后的字符
    而char a = 67 没有问题是因为还没有经过编码在这里插入图片描述
  • 回车与换行
  • 正则表达式一定要注意 [ \ \ . ] [ \ \ d ]
  • DateFormat 设置星期
  • SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 E”,Locale.国家代码);这样就可以了,注版意以上代码中:一个E是缩写,要完全形式的话4个E就好了 如"yyyy年MM月dd日 EEEE"。
  • 在calendar中的月份是从0到11 因此需要+1
  • 在各种与时间有关的类中 Data是与毫秒值打交道 SimpleDataFormat是与字符串打交道 calendar事对时间的某些字段打交道。

object

  • object是所有引用类型的超类 与基本类型无关
  • object的构造函数的第一行不是super(); 因为没有父类
  • 接口不继承object类

equals方法

  • ·boolean equals(object obi) 返回布尔值 参数是object 也就是所有的类型
  • equals重写时会触发多态的问题 需要把object类型的对象向下转化成我们需要的类型
  • 因为参数时object类型 权限很高 需要在重写时增强健壮性
    • 判断其是否能进行相互转换
    • 判断其是否和自己比较 (提高执行效率) if (this==obj) {return ture;}
    • 判断其是否为空(提高执行效率)

在这里插入图片描述

string

  • priviat final char[] value; 字符串是 私有的 常量 字符串数组
  • string是常量 是被放到常量池中的 一旦创建不可更改 因为string是引用类型 所以
    new str = “abc” ; str = “def”; 是在方法区开辟了两块内存 改变的只是str的引用位置。
  • String内 自己重写了equals 比较的是字符串的内容 所以 str1==str2为false str1.equals(str2)为ture
  • String str1 = new String(“abc”) 是先开辟了一个abc的常量字符串 再开辟了一个 new stringt的匿名对象指向“abc” 再创建了一个str1的对象 指向new string
    在这里插入图片描述
  • String 构造方法的重载形式
    • byte 转 字符串
      • 对照编码表输出 例如 {97,98,99} 转化后 为 “abc” 如果字节是负数 则输出的是汉字 汉字的编码是负数 一个汉字用两个字节表示
      • String (byte[] bytes,int offset,int length) 楷书转化的位置和转化的个数
    • 字符数组转字符串
      • 字符数组不查询编码表
  • 其他常用方法
    • str.length() 字符串中有多少个字符
      • 其是一个方法 对于普通数组 arr.length不是方法没有括号
    • 返回string str. sbustring(int beginIndex , int endIndex) 返回从beginIndex索引到endIndex索引的所有内容的字符串 需要一个新的字符串进行接收 包含begin 但是不包含 end
      • str. sbustring(int beginIndex) 取出字符串 包含头部及其后面所有的字符串
    • 返回Boolean str.startsWith(String prefix) 判断此字符串是不是以prefix字符串 为开头
    • 返回Boolean str.startsWith(String prefix , int toffset) 判断此字符串从指定索引开始是不是以prefix字符串为开头
    • 返回Boolean str.endsWith(String suffix) 判断此字符串是不是以suffix字符串 为结尾 其没有重载方法
    • 返回Boolean str.contains (CharSequence s) 判断字符串中是都含有指定的CharSequence CharSequence其是一个接口 但是String 实现了他 因此 可以使用为该字符串中是否包含指定字符串
    • 返回int str.indexOf(char ch) 返回指定字符第一次出现所在的索引 如果不存在则 返回-1
    • 返回int str.indexOf(String string) 返回指定字符串第一次出现所在的索引 如果不存在则 返回-1
    • 返回byte[] str.getBytes() 把字符串转换成字节数组
    • 返回char[] str.toCharArray() 把字符串转换成字符数组
    • 返回ch str.charAt(int index) 取出指定索引的字符
    • 返回boolen str.equals(Object obj) 比较字符串中内容是否相等
    • 返回boolen str.equalsIgnores(Styring s) 比较字符串中内容是否相等不区分字母大小写
    • 返回string str. toUpperCase() 返回一个全是大写的字符串
    • 返回string str. toLowwerCase() 返回一个全是小写的字符串

stringBuffer 字符串缓冲区

  • char[] value 字符串缓冲区不是常量 默认是16个字符
  • stringbuffer 在使用过后会清理内存空间 和变量类似
  • 常用方法
    • 返回StringBuffer strbuf. append( anyone ) 将任意类型的内容转化成char,并在字符串缓冲区的后面进行追加
    • 返回StringBuffer strbuf. delete(int start, int end) 删除缓冲区中的从start 到end索引的字符 包括开始不包括结束
    • 返回StringBuffer strbuf. insert(int index ,anyone) 将任意类型的内容转化成char,并在字符串缓冲区的索引处进行插入
    • 返回StringBuffer strbuf. repalce(int start, int end,String str) 将start索引到end索引的所有字符替换成新的字符串 注意
      1. 包括开始不包括结束
      2. 字符串API str.replce( char oldChar, char newChar) 和 str.replace(CharSequence target, CharSequence replacement) 是把所有的旧字符(字符串)替换成新的字符(字符串) 两者差别较大
    • 返回int strbuf.length( ) 返回字符串缓冲区的长度。
    • 返回StringBuffer strbuf.reverse( ) 字符串缓冲区的字符反转。 (转义字符不会被反转)
    • 返回String strbuf.toString() 将字符串缓冲区的字符转化成静态的字符串
  • StringBuffer 线程安全但是较慢 StringBuilder 线程不安全但是较快

正则表达式 regex Pattern类 正则表达式的接口

  • 区分大小写
    * 在这里插入图片描述
  • 注意:
    • ^ 的位置在[] 内部表示对这个[]的内容取异或
    • ^ 的位置在[] 外部表示要以该内容为开头
    • []表示一个位置的字符 {} 表示该位置字符的个数
    • [\ \ d] 通常表示为数字[\d] 表示把d转义无意义 [\ \ d]是把\d转义为数字 \D表非数字与\d意义相反
    • 不要在[]中加+ 没有意义 因为[]表示只有一个字符 +表示一个或多个字符
  • 字符串中正则表达式的用法
    • 返回boolen str.matches(String regex) 检查内容是否符合正则表达式 符合返回true 不符合返回false
    • 返回String[] str.split(String regex) 使用规则将字符串进行切割 返回一个字符串的数组
      • 当被切割的字符串具有多个该字符时可以用"a+"来表示有多个a字符也会被一起切割
      • 当切割的正则表达式有"."时 需要注意不要切割. 要转义用[ \ \ .] 才是.的意思
    • 返回String str.repalceAll(String regex,String newStr) 按照正则规则替换到新字符串
    • 邮箱格式验证 “123_pale@nuaa.edc.cn”
    • 其正则规则 “[a-zA-Z0-9_]+@[a-z0-9]+(\ \ .[a-z]+)+”

Date类

  • 时间原点是1970 年 1 月 1 日 0:00:00
  • 系统类中也有获取毫秒值的方法 返回值 long time=System.currentTimeMillis() 和 getTime相同
  • 类中已经重写了toString方法
  • 构造方法
    • Date date = new Date(); 空参构造方法其显示的是操作系统当前的时间
    • Date date = new Date(long numL); 将指定的的毫秒值转化成对应的日期对象
  • 常用方法
    • 返回Long time = data.getTime(); 获取当前时间的毫秒值 并返回
    • 无返回值 data.setTime(timeL) 将日期对象设置到指定毫秒值上 将毫秒值转化成日期对象、

DateFormat 和 SimpleDateFormat

将日期按照我们指定的格式进行显示
DateFormat 是抽象类一般通过创建一个子类SimpleDateFormat对象或多态的方法进行设置
下面这两种方法都是DateFormat 的方法 但是由于继承 子类也会有

  • 日期对象转化成字符串 方法 返回值String sdf.format(date) 步骤如下
  1. 创建SimpleDateFormat对象sdf并写入字符串的日期格式
    SimpleDateFormat sdf = new SimpleDateFormat(‘yyyy-MM-dd HH:mm:ss’) 一般中国的时间格式
    小大小大小小 E表示星期 使用时可能会出现点问题 到时候再百度吧。
  2. 调用format方法 sdf.format(date)
  • 字符串转化成日期对象 方法 返回值data sdf.parse(str)
  • 步骤与上相似 改成调用 sdf.parse(str)方法 在字符串转date会有错误 需要抛出错误

calendar

Calendar 写了静态方法getInstance() 直接返回子类的对象
因此其通过 Calendar car = Calendar. getInstance() 进行初始化
以下方法都是对象的方法 需要car.funtion();

  • 返回值int get(int field) field是日历的一个字段
    • 注意 在calendar中的月份是从0到11 因此需要+1
      在这里插入图片描述
  • 无返回值 set(int field , int value) field是日历的一个字段 value是需要具体设置的数值 月份与上同理 需要-1
  • 无返回值 set(int year , int mouth ,int day) field是日历的一个字段 value是需要具体设置的数值 月份与上同理 需要-1
  • 无返回值 add(int field , int value) field是日历的一个字段 value是偏置设置的数值

包装类

注意 Integer Character

  • 静态方法
  1. 将字符串转化成int类型 parseInt 的运行结果都是十进制
    • 返回值int Integer.parseInt(“num”) 将一个全部是数字的字符串转化成int类型量
    • 返回值int Integer.parseInt(“num”,int radix) 将一个全部是数字的字符串通过radix进制转化成10进制 转化成int进行返回
  2. 将int类型转化成字符串类型
    • 当无关进制时 通过加空字符串的形式转化成字符串 例:String str = 10+“”;
    • 当有关进制时 使用Integer.toString(num,radix) 将十进制 num 转化成radix进制后返回字符串
  3. 将十进制转换成相应进制的字符串
    • 返回值String inte.toBinaryString(int num) 将十进制数字转化成二进制数字转化成字符串 并返回
    • 八进制 inte.toOctalString(int num)
    • 十六进制 inte.toHexString(int num)
  • 静态成员变量
    • MAX_VALUE 该数据类型的最大值 MIN_VALUE 该数据类型的最小值
  • 构造方法
    • Integer(String “num”) 构造函数的参数时数字字符串
    • Integer inte = new Integer(“num”); 包装一个数字字符串
  • ‘普通方法
    • 返回值int inte.intValue() 将包装好的对象的数字转化成int类型并返回
  • 特殊性质
    • 自动装箱 :Integer in = 1; ==> Interger in = new Integer(1) ; 直接将int类型装箱成引用对象in
    • 自动拆箱:in = in+1 ;==> in.inValue+1; 自动将引用类型in拆箱成int类型进行运算
    • 弊端 Integer in = null ; in为引用类型 可以为null 但null无法拆箱 需要加判断 再进行拆箱增加其健壮性 if (in=null){} else{in =in+1}
    • i==j 判断的是引用对象的地址 equals被重写过判断的是 拆箱后的内容
    • 当 数据再在byte 的范围内 即(-128 ——127 )内 是相同数字时 JVM不会再开辟一片区域去创建一个新的对象 所以最后一个的==是true。
      在这里插入图片描述在这里插入图片描述在这里插入图片描述

System

  • 静态方法
    • 返回值long System.currentTimeMillis() 获取当前的毫秒值 可以对程序的执行时间进行测试 在程序前和后分别取毫秒值相减
    • 无返回值 System.exit(int status); 一般为0 表示正常终止虚拟机
    • 无返回值 System.gc(); 清理和回收垃圾
    • 无返回值 System.getProperties(); 获取当前操作系统的属性 主要是os.name 获取当前操作系统的名称
    • 无返回值 System.arraycopy(Object src, int srcPos, Object dest,int destPos,int length);
    • src:要复制的源数组 srcPos:源数组的起始索引 dest:目标数组 desPos:目标数组的起始索引 length: 复制几个

Math

  • 静态方法
    • 返回值int Math.abs(int num); 获取参数的绝对值
    • 返回值double Math.ceil(double num) 向上取整 返回double类型
    • 返回值double Math.floor(double num) 向下取整 返回double类型
    • 返回值double Math.round(double num) 四舍五入 返回double类型
    • 返回值double Math.pow(double a,double b) a^b 返回double类型 b可以是小数来进行开n次方的操作 但是类似1/3这种数字 需要小心
    • 返回值double Math.sqrt(double num) num的平方根 返回double类型

随机数建议直接使用Random类

  • 创建一个随机数生成器 Random random = new Random();
  • 生成一个随机数 random.nextInt();返回一个指定类型的随机数 类型可以改变。
  • random.nextInt(int bound);返回一个从0到bound之间的整数不包括bound 。 只有int可以有bound 别的类型不允许有
  • 由于是算法生成的伪随机数 可以通过设置种子再对随机数进行限定 random.setSeed(long numL);

Arrays类L

  • 静态方法
    • 无返回值 Arrays.sort(num[] ); 将任意数据类型的数组进行升序排列
    • 返回int Arrays.binarySearch(num[], key); 查找数组中的key值的位置,并返回索引 如果不存在则返回(-(插入点-1)) 会先将key在数组中排序并返回
    • 返回String Arrays.toString(num[]); 将数组变成字符串;

大数据类

两个类中都重写了toString()方法

BigInteger类

  • 构造方法
    • BigInteger b = new BigInteger(“num”) 输入一段任意长度的字符串数字构造成大整形数据对象
  • 常用方法 返回值全是BigInteger类型
    • b1.add( b2 ) 两个大整形数据相加
    • b1.subtract(b2) 两个大整形数据相减
    • b1.multiply(b2); 两个大整形数据相乘
    • b1.divide(b2);两个大整形数据相除 因为是大整形 因此结果也是一个整数不是小数。

BigDecimal类

提高浮点数的范围和精度 加减乘和大整形相同 主要在除法

  • 除法运算 返回值BigDecimal类型
    • b1.divide(b2,scale,roundingMode);
    • b1表示被除数 b2除数
    • scale 表示保留小数的有效位数
    • roundingMode 表示保留模式 (不是取整 是在保留指定位数的情况下进行类似取整的操作)
      1. ROUND_UP 向上取整
      2. ROUND_DOWN 向下取整
      3. ROUND_HALF_UP 四舍五入
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值