java基础之object类、Date类、System类、StringBuilder类、包装类、枚举类

一、public String toString() :默认返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值

  重写后:
            @Override
            public String toString() {
                return "Person{" +
                        "name='" + name + '\'' +
                        ", age=" + age +
                      '}';
            }

二、public boolean equals(Object obj):默认地址比较

  重写后:
         @Override
         public boolean equals(Object o) {
              // 如果对象地址一样,则认为相同
                if (this == o) return true;
             // 如果参数为空,或者类型信息不一样,则认为不同等同于  if(o instanceof PerSION)
                if (o == null || getClass() != o.getClass()) return false;
             // 转换为当前类型
                Person person = (Person) o;
             // 要求基本类型相等,并且将引用类型交给java.util.Objects类的equals静态方法取用结果
                return age == person.age &&
            Objects.equals(name, person.name);
         }

        @Override
        public int hashCode() {
                return Objects.hash(name, age);
            }

三、Date类

     1:将Date对象转换成String
        public class Demo03DateFormatMethod {
        public static void main(String[] args) {
                Date date = new Date();
               // 创建日期格式化对象,在获取格式化对象时可以指定风格
               DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
                      String str = df.format(date);
                      System.out.println(str); // 2008年1月23日
          }
        }

      2:把String转换成Date对象

        public class Demo04DateFormatMethod {
        public static void main(String[] args) throws ParseException {
                DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
                String str = "2018年12月11日";
                Date date = df.parse(str);
                System.out.println(date); // Tue Dec 11 00:00:00 CST 2018
            }
     }

四、System类

       1:public static long currentTimeMillis() :返回以毫秒为单位的当前时间

       例:
              public class SystemTest1 {
              public static void main(String[] args) {
                    long start = System.currentTimeMillis();
                    for (int i = 0; i < 10000; i++) {
                          System.out.println(i);
                   }
             long end = System.currentTimeMillis();
             System.out.println("共耗时毫秒:" + (end ‐ start));
                  }
              }

五、StringBuilder类:可变字符序列。底层是一个数组

        1、构造方法
              a:  public StringBuilder() :构造一个空的StringBuilder容器。
              b:  public StringBuilder(String str) :构造一个StringBuilder容器,并将字符串添加进去。
        2、常用方法
              a:  public StringBuilder append(...) :添加任意类型数据的字符串形式,并返回当前对象自身。
              b:  public String toString() :将当前StringBuilder对象转换为String对象。

        例子:
        
              public class DataTest {
              public static void main(String[] args) {
                     StringBuffer buffer1 = new StringBuffer();
                     StringBuffer buffer2 = buffer1.append("hello");
               //对比一下
                     System.out.println(buffer1==buffer2);  //true:是同一个对象

               //将StringBuilder对象将会转换为不可变的String对象
                String str = buffer1.toString();
                System.out.println(str);
                  }
            }

六、包装类:基本数据类型的数据,使用起来非常方便,但没有对应的方法来操作这些数据,所以我们可以使用一个类,把基本数据类型的数据包装起来,这类
叫包装类

        1、装箱与拆箱
                   装箱:从基本类型转换为对应的包装类对象。
                   拆箱:从包装类对象转换为对应的基本类型

        2、基本数值---->包装对象
              Integer i = new Integer(4);//使用构造函数函数
              Integer ii = Integer.valueOf(4);//使用包装类中的valueOf方法
              
           包装对象---->基本数值
              int num = i.intValue();

         3、自动装箱与自动拆箱
              
                 例子:
                    Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
                    i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
                    //加法运算完成后,再次装箱,把基本数值转成对象。

         4、基本类型与字符串之间的转换的方式

                 a、基本类型转换为String: 基本类型直接与””相连接即可;如:34+""

                 b、String转换成对应的基本类型 (除了Character类) 
                          public static byte parseByte(String s) :将字符串参数转换为对应的byte基本类型。
                          public static short parseShort(String s) :将字符串参数转换为对应的short基本类型。
                          public static int parseInt(String s) :将字符串参数转换为对应的int基本类型。
                          public static long parseLong(String s) :将字符串参数转换为对应的long基本类型。
                          public static float parseFloat(String s) :将字符串参数转换为对应的float基本类型。
                          public static double parseDouble(String s) :将字符串参数转换为对应的double基本类型。
                          public static boolean parseBoolean(String s) :将字符串参数转换为对应的boolean基本类型。

                    例子:
                           public class Demo18WrapperParse {

public static void main(String[] args) {
         int num = Integer.parseInt("100");
     }
}

七、enum类名

       格式:
            enum 类名{
	   //枚举值
        }  


        枚举要注意的细节:
            1. 枚举类也是一个特殊的类。
            2. 枚举值默认的修饰符是public static final。
            3. 枚举值就是是枚举值所属的类的类型, 然后枚举值是指向了本类的对象的。
            4. 枚举类的构造方法默认的修饰符是private的。
            5. 枚举类可以定义自己的成员变量与成员函数。
            6. 枚举类可以自定义构造函数,但是构造函数的修饰符必须是private。
            7. 枚举类可以存在抽象 的方法,但是枚举值必须要实现抽象 的方法。
            8. 枚举值必须要位置枚举类 的第一个语句。


        例子:
              enum MessageMeta{

                      //枚举值, 相当于public static final MessageMeta accountNotEnough = new MessageMeta("余额不足")
                      accountNotEnough("余额不足"),

                      sendError("发送失败"),

                      sendSuccess("发送成功");

                      private String msg;  //成员变量

                      MessageMeta(String msg) {
                            this.msg = msg;
                      }

                      public String getMsg() {
                            return msg;
                      }
               }

               public class EnumTest {
                     public static void main(String[] args) {
                       String msg = MessageMeta.accountNotEnough.getMsg();
                       System.out.println(msg);
                    }
               }
posted @ 2020-08-06 22:29  jock_javaEE  阅读(91)  评论(0编辑  收藏  举报