public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }
public static void main(string[]args) { /* Person类默认继承了object类,所以可以使用object类中的tostring方法string tostring()返回该对象的字符串表示。 */ Person p = new Person( name:“张三",age: 18); String s = p.tostring(); system.out.println(s);//com.zhang.0bject.Person@75412c2f Person(nome=张三,age=18) //直接打印对象的名字,其实就是调用对象的toString p=p.toString(); system.out.println(p);//com.zhang.object.Person@5f150435 PersonP(noamen张三,oge=18) }
注意: 看一个类是否重写了toString,直接打印这个类的对象即可,如果没有重写toString方法那么打印的是对象的地址值
使用object类的equals方法
boolean equals(object obj)指示其他某个对象是否与此对象“相等”。
equals方法源码: public boolean equals(0bject obj) { return (this == obj); }
参数:
object类的equals方法,默认比较的是两个对象的地址值,没有意义所以我们要重写equals方法,比较两个对象的属性(name , age)
问题:
@Override public boolean equals(0bject obj) { //增加一个判断,传递的参数obj如果是this本身,直接返回true,提高程序的效率 if(obj==this){ return true; } //增加一个判断,传递的参数obj如果是null,直接返回false,提高程序的效率 if(obj==null){ return false; } //增加一个判断,防止类型转换一次cLasscastException if(obj instanceof Person){//判断参数obj是否是person类型 //使用向下转型,把obj转换为Person类型 erson p = (Person)obj; //比较两个对象的属性,一个对象是this(谁调用谁就是this),一个对象是p(obj) boolean b = this.name.equals(p.name) &&this.age==p.age; return b; } //不是person类型返回false return false; }
objects类的equals方法:对两个对象进行比较,防止空指针异常
public static boolean equals(0bject a, 0bject b) { return (a == b) il ( a != null && a.equals(b)); } //演示 boolean b2 = Objects.equals(s1,s2); system.out.print1n(b2);
public static void main(String[]args) { //获取当前系统时间到1970年1月1日00:00:60经历了多少毫秒 system.out.printIn(System.currentTimeillis()); }
成员方法:
java.text.SimpleDateFormat extends DateFormat
构造方法:
参数:
String pattern :传递指定的模式模式:
区分大小写的
y年、M月、d日、H时、m分、s 秒
秒
写对应的模式,会把模式替换为对应的日期和时间
注意:
模式中的字母不能更改,连接模式的符号可以改变
时间日期转换成对应的格式:
public static void main(String[ ] args) { demoe1(); /** 使用DateFormat类中的方法format, 把日期格式化为文本使用步骤: 1.创建SimpLeDateFormat对象,构造方法中传递指定的模式 2.调用simpleDateFormat对象中的方法format ,按照构造方法中指定的模式,把pate日期格式化为符合模式的字符串(文本) */ private static void demoe1() { //1.创建SimpleDateFormat对象,构造方法中传递指定的模式 simpleDateFormat sdF = new simpleDateFormat("yyyy年月dd日H时mm分ss秒"); //2.调用SimpLeDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本) //Sstring format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 Date ri= new Date(; string time= sdf.format(ri); System.out.println("转换之前:"+ri); //转换之前:Fri Apr 09 14:11:14 CST 2021 System.out.println("格式化之后:"+time);//格式化之后:2021年04月09日14时11分14秒 } }
对应的文本格式转换为date日期
public static void main(String[ ] args) throws ParseException { demoe2(); /*使用DateFormot类中的方法parse, 把文本解析为日期使用步骤: 1 .创建SimpleDateFormat对象,构造方法中传递指定的模式 2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Dote日期注意 public Date parse(String source) throws ParseExceptionparse方法声明了一个异常叫ParseException 如果字符串和构造方法的模式不一样,那么程序就会抛出此异常 调用一个抛出了异常的方法,就必须的处理这个异常,要么throws 继续抛出这个异常,要么try catch自己处理 */ private static void demoe2()throws ParseException { //1.创建SimpleDoteFormat对象,构造方法中传递指定的模式 SimpleDateFormat sdf m new SimpleDateFormat( patterm:"yyyy年A月dd日H时mm分ss秒"); //2.调用SimpLeDateFormat对象中的方法pars,把符合构造方法中模式的字符串,解析为Date日期 // /Date parse(String source)把符合模式的字符串,解析为Date日期 Date date = sdf.parse( source:"2021年04月09日14时11分14秒"); System.out.print1n(date);//Fri Apr 09 14:11:14 CST 2021 } }
java.Lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在5ystem类的API文档中,常用的方法有:
验证程序运行时所消耗的毫秒值
public class Test { public static void main(String[] args) { atime(); } /** * 验证for循环1-9999所消耗的毫秒值 */ private static void atime() { //程序执行前获取一次毫秒值 long start = System.currentTimeMillis(); for (int i = 0; i <= 9999; i++) { System.out.println(i); } //程序执行完成获取一次毫秒值 long end = System.currentTimeMillis(); System.out.println("程序总耗时"+(end-start)+"毫秒");//程序总耗时58毫秒 }
字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)底层也是一个数组,但是没有被final修饰,可以改变长度
构造方法:
public static void main(String[]args){ //空参数构造方法 stringBuilder bu1 = new stringBuilder(); system.out.println( "bu1 :"+bu1);//bu1 : /带字符串的构造方法 stringBuilder bu2 = new StringBuilder( "abc" ); System.out.println( ""bu2 : "+bu2);//bu2:ABC }
StringBuilder和string可以相互转换:
public static void main(string[]args) { // String变成StringBuilder string str = "hel1o"; System.out.println( "str: "+str); stringBuilder bu = new StringBuilder( str); //往stringBuilder中添加数据 bu.append( "world" ) ; system.out.println("bu:"+bu) ;/ / StringBuilder->String String s = bu.toString(); system.out.println( "s: " +s ); }