视频出处 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) 楷书转化的位置和转化的个数
- 字符数组转字符串
- 字符数组不查询编码表
- byte 转 字符串
- 其他常用方法
- 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() 返回一个全是小写的字符串
- str.length() 字符串中有多少个字符
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索引的所有字符替换成新的字符串 注意
- 包括开始不包括结束
- 字符串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) 步骤如下
- 创建SimpleDateFormat对象sdf并写入字符串的日期格式
SimpleDateFormat sdf = new SimpleDateFormat(‘yyyy-MM-dd HH:mm:ss’) 一般中国的时间格式
小大小大小小 E表示星期 使用时可能会出现点问题 到时候再百度吧。 - 调用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
- 注意 在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
- 静态方法
- 将字符串转化成int类型 parseInt 的运行结果都是十进制
- 返回值int Integer.parseInt(“num”) 将一个全部是数字的字符串转化成int类型量
- 返回值int Integer.parseInt(“num”,int radix) 将一个全部是数字的字符串通过radix进制转化成10进制 转化成int进行返回
- 将int类型转化成字符串类型
- 当无关进制时 通过加空字符串的形式转化成字符串 例:String str = 10+“”;
- 当有关进制时 使用Integer.toString(num,radix) 将十进制 num 转化成radix进制后返回字符串
- 将十进制转换成相应进制的字符串
- 返回值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 表示保留模式 (不是取整 是在保留指定位数的情况下进行类似取整的操作)
- ROUND_UP 向上取整
- ROUND_DOWN 向下取整
- ROUND_HALF_UP 四舍五入