java.lang.Object类是java语言的根类,即所有类的父类,该类中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。且 一个类没有指定父类。则默认继承Object类、
object类中包含的的方法有11种,我们主要学习2个
public string tostring(): 返回该对象的字符串表示。
tostring 方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+ 内存地址
由于tostring 方法 返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式。f
如果不希望使用tostring方法的默认行为,则可以对它进行覆盖重写,
public class Person {
private String name;
private int age;
@Override
public String toString(){
return "Person{"+"name="+name+",age="+age+"}";
}
}
注意: 在我们直接使用输出语句输出对象名的时候,其实是通过该对象调用了其tostring() 方法。
public class Person01 {
private String name;
private int age;
@Override
public boolean equals(Object o){
if (this ==o)
return true;
if (o==null|| getClass() !=o.getClass())
return false;
Person01 person =(Person01)o;
return age= person.age && Object.equals(name,person.name);
}
}
java.util.date 类表示特定的时间,精确到毫秒
根据Date类的描述,Date拥有多个构造函数,但是其中有未过时的构造函数可以把毫秒转成日期对象
由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒
简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻,
? 使用long类型的构造类型,可以自定义毫秒时刻
import java.util.Date;
public class DemoDate01 {
public static void main(String[] args) {
// 创建日期对象,把当前的时间转成日期对象
System.out.println(new Date());
// 创建日期对象,把当前的毫秒值转成日期对象
System.out.println(new Date(0L));
}
}
tips: 在使用println方法时,会自动欧诺个调用Date类中的tostring方法。Date类对Object类中的tostring方法进行覆盖重写,
所以结构为指定格式的字符串。
Date类中的多数方法已经过时,常用的方法有
java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,就是可以在Date对象与String对象之间进行来回转换。
由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat. 这个类需要一个模式来指定格式或解析的标准。构造方法为:
标识字母:
y 年 M 月 d日 H时 m分 s秒
备注:详细的格式规则,可以参考API文档
相关代码
public static void main(String[] args) {
DateFormat format =new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
}
使用format方法的代码为:
将Date对象转化为string
public static void main(String[] args) {
// 把Date对象转换成string
Date date=new Date();
// 创建日期格式化对象,在获取格式化对象时可以指定风格
DateFormat format =new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String str =format.format(date);
System.out.println(str);
}
将string转化为date对象
public static void main(String[] args) throws ParseException {
// 通过simpleDateFormate来设置转换时间的类型
DateFormat df =new SimpleDateFormat("yyyy年MM月dd日");
String str ="2018年12月11日";
// 将string 转化为Date对象
Date date =df.parse(str);
System.out.println(date);
}
public class DemoDate02 {
public static void main(String[] args) throws ParseException {
// 获取出生日趋,键盘出入
System.out.println("请输入出生日期 格式 :yyyy-MM-dd");
String birthdayString =new Scanner(System.in).next();
// 将字符串日期转化为date对象
// 创建simpledateformate对象,设置日期模式
DateFormat df =new SimpleDateFormat("yyyy-MM-dd");
// 调用parse方法将字符串转化为日期对象
Date birthdaydate =df.parse(birthdayString);
// 获取当前的日期对象
Date todayDate=new Date();
// 将两个日期对象转化为毫秒值,date类的方法getTime
long birthdayDate =birthdaydate.getTime();
long todaySecond =todayDate.getTime();
long secone =todaySecond-birthdayDate;
if (secone < 0) {
System.out.println("未出生");
}else{
System.out.println(secone/1000/60/60/24);
}
}
}
由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。
在API中对String类有这样的描述: 字符串是常量,它们的值在创建后不能被更改。
又被称为可变字节序列,它是一个类似于String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
原来StringBulider是一个字符串的缓冲区,即它是一个容器,可以装很多字符串,并且能够对其中的字符串进行各种操作。
public static void main(String[] args) {
StringBuilder builder=new StringBuilder();
StringBuilder builder2=builder.append("hello");
// 通过append 方法添加数据
System.out.println("Build"+builder);
System.out.println("build2"+builder2);
System.out.println(builder==builder2);
// 在开发中会遇到调用一个方法后,返回一个对象的情况,然后使用返回的对象继续调用方法
builder.append("world");
builder.append("100");
builder2.append("world").append("100");
System.out.println(builder==builder2);
}
}
通过toString方法,stringbuilder对象将会转换为不可变得string对象。
public class Demo06 {
public static void main(String[] args) {
StringBuilder sb =new StringBuilder("hello").append("world").append("java");
String str =sb.toString();
System.out.println(sb);
}
}
java提供了两个类型系统,基本类型和引用类型,使用基本类型在于效率,然而很多情况下,会创建对象使用,因为对象可以做很多的功能,如,如果想要我们的基本类型像对象一样操作。就可以使用基本类型对应的包装类。
基本类型 | 对应的包装类(位于java.lang包中) |
---|---|
byet | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
基本类型与对应的包装类对象之间,来回转换的过程称为“装箱”与“拆箱”:
基本数值--》 包装对象
Integer i =new Integer(4); // 使用构造函数
Integer iii= Integer.valueof(4);
包装对象--> 基本数值
int num =i.intvalue();
jdk1.5之后,基本类型与包装类的装箱、拆箱动作可以自动完成。
原文:https://www.cnblogs.com/yuanjian-work/p/13757310.html