A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 664941114 中级黑马   /  2016-7-20 22:57  /  712 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.Object类里面的方法
  a.toString()方法
   1.Object类中原始的toString(),打印语句当打印对象的时候默认调用toString()方法
     public String toString() {
         return getClass().getName() + "@" + Integer.toHexString(hashCode());
               //例如打印Object对象:
               //hashCode():根据对象的内存地址值以及哈希算法得出一个哈希值
               //Integer.toHexString:再将十进制的哈希值转成十六进制
               //java.lang.Object@2f327c02
     }
   2.开发中我们一般自定义类重写Object类中原始的toString(),返回该类中所有成员变量的拼接形式
     class User extends Object{

      private String name;
      private int age;

      public User(String name, int age) {
                      super();
                      this.name = name;
                      this.age = age;
              }
      //重写Object类中的toString
      public String toString() {
                       return "User [name=" + name + ", age=" + age + "]";
             }


     }       

     User user = new User("angellababy",27);
     System.out.println(user.toString());//User [name=angellababy, age=27]
  b.equals():
   1.Object类中原始的equals(),比较的两个对象的地址值
     public boolean equals(Object obj) {
         return (this == obj);
      //         user==user2
     }


    User user = new User("angellababy",27);
    User user2 = new User("angellababy",27);
    System.out.println(user.equals(user2));//如果User类不重写Object类里面的equals
                                            //比较user和user2指向的对象的地址
   2.我们一般不适用Obejct类中原始的equals方法而是,重写equals
     我们去比较该类的属性值,只有属性值全部相同才返回true,只要有一个不同,就返回false
     例如:人有姓名,年龄,身高,性别  这个人具有所有属性都相同才认为是同一个人,否则就不是同一个人

    public boolean equals(Object obj) {
                   // 将传入的对象,向下转型为User以便于与User对比
                  
                   User otherUser = (User) obj;
                  
                   // 获取传入对象的属性值
                   String oName = otherUser.getName();
                   int oAge = otherUser.getAge();
                   // 使用传入对象的属性值,依次与本对象的属性值做比较,如果有不相同的,直接返回false
                   if (!this.name.equals(oName)) {
                           return false;
                   }

                   if (!(this.age == oAge)) {
                           return false;
                   }
                   // 如果所有属性判断均相同,则返回true
                   return true;
           }
   开发中toString()和equals()方法都需要被重写
2.java.util.Date
   a.构造方法:
     Date()//将电脑系统当前时间封装成Date对象
     Date(long time)//将指定毫秒值封装Date对象
   b.getTime()//自1970年1月1日零时零分零秒到系统当前时间所经过毫秒值

   (重点)c.日期对象<->日期字符串
     构造方法:
        public SimpleDateFormat(String pattern) 使用指定格式创建日期格式化对象
                        
      转换方法:
              public final String format(Date date) 日期转字符串
        public Date parse(String source)  字符串转日期
              throws ParseException

      转换代码:
            /*日期对象转换为日期字符串*/
            //创建日期格式化对象
            Date date=new Date();
                      String myPattern = "yyyy年MM月dd日 HH:mm:ss";
                     
                      DateFormat df = new SimpleDateFormat(myPattern);
                      //将日期对象date变为xxxx年xx月xx日 xx:xx:xx
                      String sDate = df.format(date);//重点记忆
                      System.out.println(sDate);
                     




            /*日期字符串转换为日期对象*/
            String myPattern = "yyyy年MM月dd日 HH:mm:ss";
            DateFormat df = new SimpleDateFormat(myPattern);
                      //将格式为2088年02月18日 10:50:28的字符串 转成Date对象
                      String sDate2 = "2088年02月18日  10:50:28";
                      Date parse = df.parse(sDate2);//按照myPattern指定的格式解析sDate2中的日期字符串
                                                    //myPattern中指定的格式和要解析的日期字符串必须保持一致
                      System.out.println(parse);         
3.字符串缓冲区:StringBuilder/StringBuffer:以后用到拼接字符串全部使用StringBuilder完成,为了节约内存
  对比:StringBuffer 安全,效率低
  StringBuilder 不安全,效率高

  方法:
    append(XXX xx)//向缓冲区中追加任意类型的数据
    toString()//把缓冲区的内容拼接成一个字符串返回
  用+=的缺点:
   每次+=拼接数据,底层都会new一个新的StringBuidler对象,浪费内存
4.日历类:Calendar 取代了 Date,Calendar 不能直接创建对象需要通过 Calendar 类的静态方法getInstance()获取其子类对象
  方法:

    get(int field);//根据Calendar的常量字段获取指定日期
    Calendar now = Calendar.getInstance();
    System.out.println(now.get(Calendar.YEAR));
    System.out.println(now.get(Calendar.MONTH));
    System.out.println(now.get(Calendar.DAY_OF_MONTH));//现实中的1~12,获取的月是0~11
    System.out.println(now.get(Calendar.DAY_OF_WEEK));//周日~周六代表1~7 例如:今天周日,返回1


    set(int field,int value)//为指定的字段设置指定值
    now.set(Calendar.YEAR,2017);
5.正则表达式:正则表达式也是一个字符串
               专门用来匹配字符串
               Pattern类有对应的规则
              正则表达式不要求会写,知道正则表达式含义
  String的功能:
    matches(String regex)//传一个规则(正则表达式)匹配返回true,不匹配返回false

    String[] split(String regex)//按照指定的规则切割字符串

    replaceAll(String reagex,String replaceStr)//只要符合规则就把符合规则的所有子串都替换成repalceStr

    匹配手机号:
       String str="15836603988";
       String regex="[1][34578][0-9]{9}";
       str.matches(regex);//true
    匹配邮箱

       String email="zhanghongqian@itcast.cn";
       email.matches("\\w+@\\w{2,7}\\.\\w{2,3}");//\\w [a-zA-Z_0-9] true
6.System类
  getCurrentMillis();//Date类的getTime(),Calendar类的 getTimeInMillis()
  exit()//一旦调用该方法System.exit(0)就直接结束程序(关闭JVM)


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马