1、Object类
1.1 toString()方法
- 返回该对象的字符串表示(表现形式)。
- 可以根据程序需求覆盖该方法,如:展示对象各个属性值。
2.2.4 equals()方法
public boolean equals(Object obj){…}
- 默认实现为(this == obj),比较两个对象地址是否相同。
- 可进行覆盖,比较两个对象的内容是否相同。
equals重写步骤:
- 比较两个引用是否指向同一个对象。
- 判断obj是否为null。
- 判断两个引用指向的实际对象类型是否一致。
- 强制类型转换。
- 依次比较各个属性值是否相同。
代码示例:
Demo01.java
package Day12_pack.entity;
/**
* @author wzy
* @version 1.0
* @date 0001 2020-12-01 11:27
*/
public class Demo01 {
public static void main(String[] args) {
Person person1 = new Person(2,"wzy",'男');
Person person2 = new Person(21,"wzy",'女');
System.out.println(person1.equals(person2));
System.out.println(person1.toString());
System.out.println(person2.toString());
}
}
Person.java
package Day12_pack.entity;
/**
* @author wzy
* @version 1.0
* @date 0001 2020-12-01 11:14
*/
public class Person {
private int id;
private String name;
private char sex;
public Person(int id, String name, char sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
@Override
public boolean equals(Object object) {
if (this == object){
return true;
}
if (object instanceof Person){
Person person = (Person) object;
if (this.id == person.id && this.name.equals(person.name)&& this.sex==person.sex){
return true;
}else {
return false;
}
}else {
return false;
}
}
@Override
public String toString() {
return "Person{" +
"id111=" + id +
", name='" + name + '\'' +
", sex=" + sex +
'}';
}
}
2、包装类
2.1 概述
- 基本数据类型所对应的引用数据类型。
- Object可统一所有数据,包装类的默认值是null。
2.2 种类
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2.3 装箱、拆箱
- 八种包装类提供不同类型间的转换方式。
- Number父类中提供的6个共性方法。
- parseXXX()静态方法(除了Character)。
- valueOf()静态方法。
- 注意:需保证类型兼容,否则抛出NumberFormatException异常。
- JDK 5.0之后,自动装箱、拆箱。基本数据类型和包装类自动转换
package Day12_pack;
/**
* @author wzy
* @version 1.0
* @date 0001 2020-12-01 09:37
*/
public class Demo01 {
public static void main(String[] args) {
//----------手动装箱----------
int num=10;
Integer integer = new Integer(num);
System.out.println(integer);
//----------手动装箱----------
int num1 = integer.intValue();
System.out.println("num1:"+num1);
//-----------jDK1.5以后自动装拆箱-----------
int num2=14;
Integer integer1 = num2;
int num3 = integer1;
System.out.println("num3:"+num3);
}
}
3、String类
3.1 概述
- Java程序中的所有字符串文本(例如“abc”)都是此类的实例。
- 字符串字面值是常量,创建之后不可改变。
- 常用创建方式:
- String str1 = “Hello”;
- String str2 = new String(“World”);
3.2 常用方法
代码示例(具体方法和解释见代码):
package Day12_pack.sring;
import java.util.Arrays;
/**
* @author wzy
* @version 1.0
* @date 0001 2020-12-01 14:44
*/
public class Demo05 {
public static void main(String[] args) {
String str = "abcdegfc";
char ch = str.charAt(2); //返回指定索引处的字符
System.out.println(ch);
print();
// str = str.concat("123"); //字符串拼接
// System.out.println(str);
// print();
str = str+"123"; //字符串拼接也可以这样子
System.out.println(str);
print();
boolean flag = str.contains("123"); //判断字符串是否包含子字符串
System.out.println(flag);
print();
//把字符串转换成char类型数组
char[] chars = str.toCharArray();
System.out.println(Arrays.toString(chars));
print();
//判断字符串是否已子字符串开始
flag = str.startsWith("a");
System.out.println(flag);
print();
//判断字符串是否已子字符串结尾
flag = str.endsWith("123");
System.out.println(flag);
print();
//判断字符串是否已子字符串结尾
flag = str.endsWith("13");
System.out.println(flag);
print();
//indexOf() 返回指定字符在此字符串中第一次出现处的索引。
System.out.println(str);
int i = str.indexOf('2');
System.out.println("2的下标:"+i);
print();
//isEmpty() 当且仅当 length() 为 0 时返回 true。
String str1 = null;
String str2 = "1";
flag = str2.isEmpty();
System.out.println("str2是否为空:"+flag);
print();
//lastIndexOf() 返回指定字符在此字符串中最后一次出现处的索引。
String str11="12221221";
int i1 = str11.lastIndexOf("1");
System.out.println("1最后一次出现的位置"+i1);
print();
//length() 返回此字符串的长度。
int len = str.length();
System.out.println("str的长度:"+len);
print();
//replace() 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
System.out.println("old:"+str);
str = str.replace("1","wzy");
System.out.println("new:"+str);
print();
//replaceAll() 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String phone = "12345678909wqwqwqwq19876789876nfoiqjfiq13086795579";
System.out.println("old-str:"+phone);
phone = phone.replaceAll("[1][0-9]{10}","|");
System.out.println("new-str:"+phone);
print();
//split() 根据给定正则表达式的匹配拆分此字符串。
phone = "小学,初中,高中,大专,本科,研究生,博士";
System.out.println("old-str:"+phone);
String[] strs = phone.split(",");
for(i=0;i<strs.length;i++){
System.out.println(strs[i]);
}
// System.out.println("new-str:"+Arrays.toString(strs));
print();
//substring() 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
System.out.println(str);
str = str.substring(2,5);
System.out.println(str);
print();
//toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
str = "CHINA IS A BIG COUNTRY";
System.out.println(str);
str = str.toLowerCase();
System.out.println(str);
print();
//toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
str = "china is a big country";
System.out.println(str);
str = str.toUpperCase();
System.out.println(str);
print();
//trim() 返回字符串的副本,忽略前导空白和尾部空白。 \t产生的空格无法去除
str =" i am a good boy ";
System.out.println(str);
str = str.trim();
System.out.println(str);
print();
}
static void print(){
String str = " i am a good boy ,my phone is 13086795579";
System.out.println("----------------");
}
}
4、可变字符
- 概念:可在内存中创建可变的缓冲空间,存储频繁改变的字符串。
4.1 种类
Java中提供了两个可变字符串类:
- StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全。
- StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全。
- 这两个类中方法和属性完全一致
常用方法及解释见代码:
public class Demo01 {
public static void main(String[] args) {
// StringBuffer sb = new StringBuffer("abc");
StringBuilder sb = new StringBuilder("abc");
//末尾追加
sb.append("123");
System.out.println(sb);
//中间插入 -- 偏移2个字符,插入"qqq"
sb.insert(2,"qqq");
System.out.println(sb);
//头部插入
sb.insert(0,"ppp");
System.out.println(sb);
//反转
sb.reverse();
System.out.println(sb);
//删除单个
sb.deleteCharAt(3);
System.out.println(sb);
//删除多个 -- 包含开始的索引,不包含结束的索引
sb.delete(1,3);
System.out.println(sb);
//转换成字符串
System.out.println(sb.toString());
}
}
5、其他常用类
5.1 BigDecimal
- 概念:
- 位置:java.math包中。
- 作用:精确计算浮点数。
- 创建方式:BigDecimal bd=new BigDecimal(“1.0”)。
- 常用方法:
方法名 | 描述 |
---|---|
BigDecimal add(BigDecimal bd) | 加 |
BigDecimal subtract(BigDecimal bd) | 减 |
BigDecimal multiply(BigDecimal bd) | 乘 |
BigDecimal divide(BigDecimal bd) | 除 |
参考代码:
package Day12_pack.tools;
import java.math.BigDecimal;
/**
* @author wzy
* @version 1.0
* @date 0001 2020-12-01 17:04
*/
public class Tools3 {
public static void main(String[] args) {
double num1=0.09;
double num2=0.01;
System.out.println(num1+num2);
}
private static double add(double num1, double num2) {
BigDecimal bd1 = new BigDecimal(num1+""); //将num1和""拼接起来,num1就会改变成String类型
BigDecimal bd2 = new BigDecimal(num2+"");
BigDecimal bd3 = bd1.add(bd2); //调用BigDecimal的add方法,对bd1和bd2进行和运算
String str = bd3.toString(); //将bd3转换成String类型
double num3 = Double.parseDouble(str); //将String类型的数值转变为double类型
return num3;
}
}
5.2 Date、SimpleDateFormat类
- Date:时间类
- SimpleDateFormat:时间模板类
- Date类是经常会使用到的一个用来处理日期、时间的一个类。
- Date类是在java.util包下的Date类。
参考代码:
package Day12_pack.tools;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author wzy
* @version 1.0
* @date 0001 2020-12-01 17:23
*/
public class Tools4 {
public static void main(String[] args) {
//获取当前时间
Date date1 = new Date();
System.out.println(date1);
System.out.println("----------------------");
//将时间格式化为2020-12-01 17:25:36
//new SimpleDateFormat类的对象,参数传入我们需要的格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss");
String time = simpleDateFormat.format(date1);
System.out.println(time);
}
}