Api - 应用程序接口、常用类、 方法(Object、Date、Calendar、DateFormat、String、StringBuilder、包装类)
Object
所有类的父类
Class getClass()
通过对象的该方法,可以获得对象对应的类的字节码对象Object clone() - 克隆、赋值
调用方法的对象, 需要类实现Cloneable接口
深克隆:复制一份全新的, 属性内容一致的对象
浅克隆:复制的是引用wait() - 与线程有关
(有三个)notify() / notifyAll() - 与线程有关
void finalize()
清理内存时自动调用
GC: 垃圾回收机制, 定时清理内存
也可以手动调用: System.gc() 清理内存hashCode()
获得的是地址 哈希码
(重点)
7. String toString()
直接打印对象时, 自动就会调用对象的toString方法
Object中默认toString的实现方式:(地址)
getClass().getName() + “@” + Integer.toHexString(hashCode());
ZiToString zi = new ZiToString("张三", 28);
// com.zzxx.api.Object.ZiToString@5fe5c6f (地址)
System.out.println(zi);
System.out.println(zi + "");
System.out.println(zi.toString());// 想要打印对象时, 显示对象的属性内容 -- 重写toString方法
System.out.println(zi); // 张三,28
// 重写的 toString()方法
public String toString() {return name + "," + age;
}
// 默认的toString重写方法@Overridepublic String toString() {return "S{" +"name='" + name + '\'' +", age=" + age +'}';}
- boolean equals(Object o)
Object中默认toString的实现方式:(比较地址)
getClass().getName() + “@” + Integer.toHexString(hashCode());
// 重写 equals 方法
public boolean equals(Object obj) {// this-ZiEquals 和 obj-Object// 1.this == obj, 一定相等if (this == obj) {return true;}// 2.类型不一致,一定是不等if (!(obj instanceof ZiEquals)) {return false;}// 3.类型一致,不是同一个对象,才要比较属性内容(这样写有个空值的问题)ZiEquals zi = (ZiEquals) obj;return zi.age == this.age && this.name.equals(zi.name);
}
// 默认的重写方法
@Override
public boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;ZiEquals ziEquals = (ZiEquals) o;// Objects.equals 方法里面判断了空值的问题return age == ziEquals.age &&Objects.equals(name, ziEquals.name);
}
Date
java.util.Date - 时间、日期
构造方法
// 空参构造方法 -> 当前系统时间
Date date = new Date();
// Tue Jul 21 11:48:57 CST 2020
System.out.println(date);// 参数是long类型的构造方法
// 注意的是要加 l(第一个数之后加l 避免数值越界)
// 表示 1个月后的时间
Date date1 = new Date(0l + 30l*24*60*60*1000);
常用的API - (getTime、 setTime)
Date date = new Date();
// 将时间从date类型, 转换成了long类型所表示的毫秒值
long time = date.getTime();
System.out.println("time: " + time);
// 一个月以后的date时间
time += 30l*24*60*60*1000;
date.setTime(time);
System.out.println(date);Date date1 = new Date(0l);
// date1 是否在 date 的后面
boolean b = date1.after(date);
// date1 是否在 date 的前面
boolean b2 = date1.before(date);
Calendar
java.util.Calendar - 万年历
构造方法
// 获得万年历(Calendar是抽象类,调用getInstance()方法)
Calendar cal = Calendar.getInstance();
System.out.println(cal);
常用的API - (get、set、add)
// 1.获得万年历对象
Calendar cal = Calendar.getInstance();
System.out.println(cal);// 2.get set
// 1). 获得cal对应的月份, 月份从0开始
int month = cal.get(Calendar.MONTH);
System.out.println("month: " + month); // 6
// 2). 获得cal对应的年份
int year = cal.get(Calendar.YEAR);
System.out.println("year: " + year); // 2020
// DATE DAY_OF_MONTH
// HOUR MINUTE SECOND DAY_OF_WEEK
// HOUR_OF_DAY// 3) 今天时间是:2020-7-21 ->设置为2020-8-15
cal.set(Calendar.MONTH, Calendar.AUGUST);
cal.set(Calendar.DAY_OF_MONTH, 15);
// 当加的内容结果跨月\年\星期, 自动进行推算
// 生产日期今天,保质期48天 保质期的前两周的星期四搞促销
cal.add(Calendar.DATE, 48);
// 到期日往前推两周
cal.add(Calendar.WEEK_OF_MONTH, -2);
// 要周四
cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
Date、long、Calendar之间的转换(重点)
// 1.Date -> long
Date date = new Date();
long time = date.getTime();// 2.long -> Date
date.setTime(time);
// 如果原先没有Date对象, 可以通过long创建一个新的Date对象
Date date2 = new Date(time);// 3.Calendar -> Date
Calendar cal = Calendar.getInstance();
Date date3 = cal.getTime();// 4.Date -> Calendar
Date date4 = new Date(0);
cal.setTime(date4);// 5.Calendar -> long (了解)
Calendar cal1 = Calendar.getInstance();
long time2 = cal1.getTimeInMillis();// 6.long -> Calendar (了解)
cal1.setTimeInMillis(time2 + 1000);
DateFormat
java.text.DateFormat - 自定义格式
子类SimpleDateFormat
// 为了显示时间 Date -> String
Date date = new Date();
System.out.println(date);// 构造SimpleDateFormat对象, 需要传参 - 格式
// 2020-07-21 16:47:55
// yyyy-MM-dd HH:mm:ss E
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
String str = sf.format(date);
System.out.println(str);// 自行输入日期(String) -> Date 19980228
String s = "19980228";
SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMdd");
Date date1 = sf1.parse(s);
System.out.println(sf.format(date1));
String
正则表达式
字符串的一些排列规则
开始符号: ^
结束符号: $
常用标识
[ ]:表示一个字符的位置
例:
[abc] -> 这个字符的位置内容只能是a或者b或者c
[a-z] -> 这个字符的位置内容可以是所有的小写字母数量词
+:出现一次或多次
?: 一次或者0次
*:0次或者多次
{n}: 刚好n次
{n,m}: n~m次
{n,}:至少n次特殊
例:^abc$ -> “abc”预定义字符类
. : 所有字符
\d : 数字 [0-9]
\s : 空白字符:[ \t\n\x0B\f\r]
\w : 单词字符:[a-zA-Z_0-9]
\D : 非数字 [^0-9]转义: 有特殊意义的字符
表示字符本身, 需要 \字符
\. \\ \+ \? \* \-
特殊:([ ]中出现的特殊字符, 不需要转移, 就代表字符本身)
常用API - (matches、replaceAll、split)
// matchsString str = "ssseeeww@xxx.com.cn.edu.cc";// \w{6,18}@\w{3,8}(\.\w{2,6})+String regex = "^\\w{6,18}@\\w{3,8}(\\.\\w{2,6})+$";boolean m = str.matches(regex);
// replaceAll// (sb|nc|qnm|qnmlgb|nmb)+String regex = "(sb|nc|qnm|qnmlgb|nmb)+";String word = "你怎么回事, 真是个sb, 你这个nc, qnm, 会不会玩!";word = word.replaceAll(regex, "**");System.out.println(word);
// splitString str = "string123date14hello4word34234";// 需求: string date hello wordString regex = "[0-9]+";String[] words = str.split(regex);System.out.println(Arrays.toString(words)); // [string, date, hello, word]
乱码问题
JVM -> 1个char = 2个byte (Unicode编码)
操作系统:GBK、UTF-8、ISO8859-1
String str = "你好";// 字符 -> 字节 (编码)byte[] bs = str.getBytes();// [-28, -67, -96, -27, -91, -67] UTF-8System.out.println(Arrays.toString(bs));// [-60, -29, -70, -61] GBKbyte[] bs1 = str.getBytes("GBK");System.out.println(Arrays.toString(bs1));// 字节 -> 字符 (解码)String s1 = new String(bs);System.out.println("s1: " + s1);String s2 = new String(bs1, "gbk");System.out.println("s2: " + s2);
// 手动制造乱码String str = "你好";byte[] bs = str.getBytes();String s = new String(bs, "ISO8859-1");System.out.println(s); // ä½ å¥½// 将 s 的乱码解决byte[] b = s.getBytes("ISO8859-1");s = new String(b, "UTF-8");System.out.println(s);// 简化成一句话s = new String(s.getBytes("ISO8859-1"), "UTF-8");System.out.println(s);
StringBuilder
可变字符串
StringBuffer : 线程安全的
StringBuilder: 效率高
构造方法
// 无参构造方法StringBuilder sb = new StringBuilder();// 有参构造方法StringBuilder sb1 = new StringBuilder("haha");
常用API - (append、delete、replace、insert、 reverse)
StringBuilder sb = new StringBuilder();// 字符串拼接 - 末尾追加sb.append("haha");sb.append("heihei");System.out.println(sb); // hahaheihei// 在指定位置插入字符串sb.insert(4, "xixi");System.out.println(sb); // hahaxixiheihei// 将start 和end 中间的字符串替换成指定字符串sb.replace(0, 4, "hehe");System.out.println(sb); // hehexixiheihei// 删除start 到 end之间的字符串内容sb.delete(0, 4);System.out.println(sb); // xixiheihei// 字符串反转sb.reverse();System.out.println(sb); // iehiehixix// 将StringBuilder变成StringString str = sb.toString();
包装类
将基本数据类型做了封装
byte -> Byte
short -> Short
int -> Integer
long -> Long
double -> Double
float -> Float
char -> Character
boolean -> Boolean
Integer常用API
跟String一样有常量池
// 1.基本数据类型和包装类型之间可以直接转换int i = 1;// 2.包装类型比基本数据类型多表示一个null值Integer i1 = 2; // null// 3.包装类型除了可以直接赋值, 还可以new对象i1 = new Integer(2);// 1.1 int -> Integer 隐藏了自动装箱的操作i1 = i; // 等同于: i1 = Integer.valueOf(i);// 1.2 Integer -> int 隐藏了自动拆箱的操作i = i1; // 等同于: i = i1.intValue();// 4.字符串 可以转换成 包装类型Integer i3 = Integer.valueOf("12");// 将字符串 转换成基本数据类型(16进制)int i4 = Integer.parseInt("ff", 16);//int i5 = Integer.parseInt("12a"); // (默认10进制)会发生异常 NumberFormatException// 5.整数类型, 类中定义了最大值和最小值字段System.out.println("int的最大值:" + Integer.MAX_VALUE);System.out.println("byte的最小值:" + Byte.MIN_VALUE);
Integer i1 = 100;Integer i2 = 100;Integer i3 = new Integer(100);// 结论1: Integer也有常量池System.out.println(i1 == i2); // truei1 = 128;i2 = 128;// 结论2: 常量池的范围: -128 ~ 127System.out.println(i1 == i2); // falseInteger i4 = Integer.valueOf(127);Integer i5 = Integer.valueOf(127);System.out.println(i4 == i5); // true
Api - 应用程序接口、常用类、 方法(Object、Date、Calendar、DateFormat、String、StringBuilder、包装类)相关推荐
- java常用类(Object、String、Math、Date)
文章目录 java常用类(Object.String.Math.Date) 一.object类及其方法 1. getClass()方法 2. hashCode()方法 3. toString方法 4. ...
- Java基础---API概述---常用类(Object类/String类)---equals和==
API概述 API:application programming interface,应用程序编程接口 用于规定方法名称的规则集合,定义了方法的修饰符.返回值类型.方法的名称.方法的参数列表.方法的 ...
- 什么是api应用程序接口?
API:应用程序接口(API:Application Program Interface) 应用程序接口是一组定义.程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信.API 的一个主要 ...
- JAVA Servlet API简介及接口与类的用法
本章介绍了Java Servlet API中的主要的接口与类的用法,并且介绍了它们的生命周期.表4-1 对接口与类的作用与生命周期作了归纳.这些接口与类的生命周期都由Servlet容器来控制,容器会在 ...
- java第五弹 装箱和拆箱 常用类:Object类、String类、日期类
1.Object类 Object是所有java类的父类,它所属的包是java.lang.Object. 如果在类的声明的时候,没有显示的extends去继承谁,默认继承Object. Object类的 ...
- Java 常用类 01 Object 超类
1.1 Object 超类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现了这个类的方法. clone() 创建并返回此对象的一个副本 equals ...
- (Java常用类)Object类
文章目录 Object类 toString方法 方法摘要 覆盖重写 代码演示 equals方法 方法摘要 默认地址比较 对象内容比较 代码演示 Objects类 代码演示 Object类 类 Obje ...
- c语言系统api,C语言接口与实现方法实例详解
2014 本文以实例形式详细讲述了C语言接口与实现方法,对于深入掌握C语言程序设计有一定的借鉴价值.分享给大家供大家参考.具体分析如下: 一般来说,一个模块有两部分组成:接口和实现.接口指明模块要做什 ...
- JavaSE——常用类库(下)(Date、DateFormat、Calendar、System类)
第1节 常用类库(下) 六.java.util.Date Date类表示特定的时刻,精度为毫秒. 在JDK 1.1之前, Date类还有两个附加功能. 它允许将日期解释为年,月,日,小时,分钟和秒值. ...
最新文章
- 【Linux系统编程】IO多路复用之poll
- “约见”面试官系列之常见面试题之第七十篇之==和===(建议收藏)
- 【Java】数据结构——栈(图文)
- CVPR2021|引入记忆模块,突破长距离依赖视频预测的性能瓶颈
- 我的Spring MVC第一个应用
- php打水印汉字乱码,php 图片水印中文乱码解决方法
- 探索线程安全背后的本质——volatile
- Perl语言入门到精通学习路线
- Java速成系列-01-什么是速成
- python 爬取西刺免费代理ip 并使用telnetlib.Telnet验证是否有效
- M2Det 论文笔记
- 福布斯发布区块链50强 这5家中国公司上榜
- python打印网页成pdf_python 网页转pdf
- word页眉页脚,奇偶不同
- vs安卓开发发布_开始取代安卓系统?华为Mate系列新产品曝光:运行鸿蒙操作系统!...
- ubuntu使用deepin-wine安装微信出现版本过低问题的解决
- 基于java+jsp+mysql教师教学质量测评系统
- 数字电路基础知识——组合逻辑电路(奇偶校验电路、数据比较器的设计)
- 百度搜索の黑话大全—那些不为人知的搜索引擎语法
- Amazon Review Dataset数据集介绍