java.lang包
java.lang包下放置了Java开发中常用的类和接口,所以为简化该包下类的使用,java.lang包下的类在使用时不需要导入这些类。
java.lang包下常用类:
1.Object
2.String
3.StringBuffer和StringBuilder
4.八种基本数据类型的包装类
5.Thread等等
Object(对象)类
java.lang.Object类是类层次结构中最顶层父类。所有的类(包括数组)直接或者间接的继承自Object类,同时也继承了该类中的方法。
Object的构造方法:
Object类只有一个无参的构造方法:Object()
Object中常用的方法:
1.boolean equals(Object o) 比较两个对象是否相同,默认对比两个对象的内存地址。
2.int hashCode() 返回一个对象的哈希码
3.String toString() 将一个对象转换为字符串,默认转化为对象的内存地址。有些类中重写了这个方法,如String,Date,包装类等。
------------------------------------------------------------------------------------------------------------------------------
重写equals和toString
Object.equals默认判断内存地址,不适合业务流程,所以需要重写。
Object.toString默认输出内存地址,可以根据业务需求选择性的去重写。
public class Student {
private String code;
private String name;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(String code, String name) {
this.code = code;
this.name = name;
}
@Override
public boolean equals(Object obj) {
Student st = (Student) obj;
return this.code.equals(st.code);
}
@Override
public String toString() {
String str = "[学号:"+this.code+";姓名:"+this.name+"]";
return str;
}
}
public class Test {
public static void main(String[] args) {
Student st1 = new Student("西西","18130041116");
Student st2 = new Student("小九","18130041117");
Student st3 = new Student("西西","18130041116");
System.out.println(st1.equals(st2));
System.out.println(st1.equals(st3));
System.out.println(st1.toString());
System.out.println(st2);
}
}
------------------------------------------------------------------------------------------------------------------------------
String类
String类是字符串类,所有的值都是常量字符串。
字符串池:
String a = “Hello”+“World”;
会生成3个字符串(Hello/World/HelloWorld)。
String类常用方法:
int length() 求字符串值的字符个数。
boolean equals(Object obj) 比较两个字符串是否相同(已经重写)。
String replace(char old,char n) 字符串替换。
String replaceAll(String old,String n) 字符串替换。
char charAt(int index) 返回指定字符串指定位置的字符。
int compareTo(String str) 按字典顺序比较字符串大小。
boolean endWith(String str) 比较字符串是否以指定的参数结尾。
boolean beginWith(String str) 比较字符串是否以指定的参数开头。
String valueOf(int i) 将基本数据类型转换为字符串。
boolean isEmpty() 判别一个字符串值的长度是不是为0。
int indexOf(int ch) 返回指定字符串ch在字符串中最后出现的索引。
int lastIndexOf(int ch) 返回指定字符ch在字符串中最后出现的索引。
String substring(int begin) 从指定索引位置截取字符串。
------------------------------------------------------------------------------------------------------------------------------
可变字符串
StringBuffer类的构造方法:
StringBuffer()
StringBuffer(String str)
StringBuffer的常用方法:
StringBuffer append(String str) 在可变字符串末尾追加str。
StringBuffer insert(int offset,String str) 在可变字符串指定位置插入另外一个字符串str。
int length() 返回可变字符串中字符的个数。
String toString() 将可变字符串转化为字符串对象。
StringBuffer与StringBuilder是可变字符串,
其中StringBuffer线程安全,StringBuilder非线程安全。
------------------------------------------------------------------------------------------------------------------------------
包装类
java.lang包为8种基本数据类型提供对应的包装类。
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
包装类主要用于String和基本数据类型间的转换:
字符串 <–> 包装类 <–> 基本类型
byte/short/int/long/float/double,这几个数字类型用法基本一致,boolean也差不多。
Charactor与其他几个包装类使用方式相差很大,Charactor不能直接从String转换,需要用字符数组提取出char。
//字符串转为基本数据类型
String PI = "3.1415";
Double pi1 = new Double(PI);
Double pi2 = Double.valueOf(PI);
Double pi3 = Double.parseDouble(PI);
double pi = pi3;
//基本数据类型转字符串
pi = 3.14;
String str1 = new Double(pi).toString();
String str2 = Double.valueOf(pi).toString();
String str3 = Double.toString(pi);
String str4 = ""+pi;
//伪跨类型包装(其实是m隐式转换为long)
//包装不能跨类型
int m = 365;
Long n = Long.valueOf(m);
//字符串转成char,没办法
String str = "abcd";
char[] arr = str.toCharArray();
char ch1 = arr[2];
char ch2 = str.charAt(2);
//字符串转成boolean
String state = "true";
boolean s1 = Boolean.valueOf(state);
boolean s2 = Boolean.parseBoolean(state);
------------------------------------------------------------------------------------------------------------------------------
Date-时间日期类
Date类表示特定的时间,可以精确到毫秒。
Date类的构造方法:
Date() 无参构造方法。
Date(long time) 有长整型参数的构造方法。
Date类常用方法:
long getTime(); 返回从1970年1月1日00:00:00 GMT 到现在的毫秒数。
String toString(); 将Date对象转换为字符串,默认的转换格式为:dow mon dd hh:mm:ss zzz yyyy
Date dt1 = new Date();//系统当前时间
Date dt2 = new Date(123456789);//指定时间
System.out.println(dt1);
System.out.println(dt1.toString());
System.out.println(dt1.getTime());
------------------------------------------------------------------------------------------------------------------------------
日历类
Calendar是一个抽象类,它为获取和修改年,月,日,星期等日历字段提供了一系列的方法。
常用方法:
Calendar getInstance() 返回一个Calendar对象。
void set(int field,int x) 设置日历字段的值。
void get(int field) 获取某个日历字段的值。
Date getTime() 返回代表该日历对象的Date值。
void setTime(Date date) 使用指定的Date设置该日历对象。
常用的日历字段:
AM_PM 上午或者下午。
YEAR 年 MONTH 月 DATE 日 HOUR 12小时制。
HOUR_OF_DAY 24小时制 MINUTE 分钟 SECOND 秒 MILLISECOND 毫秒。
GregorianCalendar是Calendar的一个直接子类,提供了世界上大多数国家/地区使用的标准日历系统。
常用方法:
boolean isLeapYear(int year) 判断指定年份是不是闰年。
void add(int field,int x) 为指定的日历字段增加值。
Date date = new Date();
GregorianCalendar c = new GregorianCalendar();
c.setTime(date);
c.set(Calendar.YEAR, 2018);
c.set(Calendar.HOUR_OF_DAY, 12);
c.add(Calendar.MONTH, -2);
Date n_date = c.getTime();
System.out.println(n_date);
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH));
System.out.println(c.isLeapYear(2016));
------------------------------------------------------------------------------------------------------------------------------
SimpleDateFormat
SimpleDateFormat类是一个以语言环境有关的方式来格式化和解析日期的具体类。它提供了格式化日期时间(日期时间->字符串)和解析日期时间(字符串->日期时间)的方法。
SimpleDateFormat构造方法:
SimpleDateFormat()
SimpleDateFormat(String pattern) 按照指定的模式创建。
//date —> String
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String st = df.format(new Date());
System.out.println(st);
//String —> date
Date dt = df.parse("2018年10月29日 12时12分12秒");
System.out.println(dt);
------------------------------------------------------------------------------------------------------------------------------
数字格式化
DecimalFormat类是NumberFormat的一个具体子类,用于格式化十进制数字。
构造方法:
DecimalFormat()
DecimalFormat(String pattern) 按照指定模式构建对象。
常用方法:
String format(double d) 格式化数字为字符串。
Number parse(String str) 解析字符串数字为Number对象。
DecimalFormat df = new DecimalFormat("#,###,###.00");
double x = 987654.321;
String str = df.format(x);
System.out.println(str);
String txt = "87,326.34";
Number n = df.parse(txt);
double y = n.doubleValue();
System.out.println(y);