• 常用类


    常用类

      字符串(看API DOC)  包装类(查API)  时间日期类  属性文件类

        System  Runtime  Math→Math.ramdom();

      字符串:string:(1 特点;(2 方法

          针对String的补充:stringBuffer、stringBuild  

      字符串的重要性:是所有程序员使用的最多的一种数据类型,在java中使用String表示字符串,固此java堆String有很多特殊处理;

        String str = "hello"    //String是唯一一个可以用常量赋值的引用数据类型;
        String str = new String "hello"  
                                 //String的常量也是一个对象;java堆String常量会在加载期进行预加载,产生到数据段的字符串常量池当中,运行时如果用到某个String常量,只需要从常量池取出即可;
        System.out.println str ==str0;    //Str和Str0都指向常量池当中的那个"hello"常量
            //String拥有一个特殊点:叫String对象内容不可变;
            //导致String在做字符串拼接的时候,会有比较大的消耗,而StringBuffer和StringBuild就是用来解决String内容不可变这个问题的;
        str = "world" + args[0] + "hello" + str1;
        System.out.println ( str0 ) ;
    

        java当中专门用重载“+”号操作符,用来实现字符拼接;

        在java当中也针对String设计了大量的操作方法;

          1、String跟数组相关的方法:

            System.out.println ( str.length );
    
            char  [ ] array = str.tocharArray( );  //根据下标获取字符出现的位置;
            System.out.println ( str.indexof '|' ); //返回字符在String中首次出现的位置,如果没有返回-1;
            System.out.println ( str.lasIndexof '|' ); //返回字符在String中最后出现的位置;
    

          2、String中跟字母有关的方法:

            String str3 = str0.touppercase( );  //转全大写;
            String str3 = str0.tolowercase( );  //转全小写;
    

                   "yes".equals Ignore case "yes"   忽略大小写比较相等

                   "yes".compareTo ("no")  比大小  (字典顺序比较)

                      compare To Ignprecase;  忽略大小写,比较字典顺序

          3、与内容操作相关的:

            String str2 = str.srplace ('a','A');
            String str2 = str.srplace ('||',' ');  //替换
            System.out.println ( str.endswith ('lo') );  //判断字符串以什么结尾;
            System.out.println ( str.endswith ('h') );  //判断字符串以什么开头;
            String str4 = str.substring (0,3 );  根据下标位置截取字符串 [开始位置,结束位置) 前后开闭
            System.out.println ( str4 );
    
            String str6 = str.concatc "world";  //字符串连接;
            System.out.println ( str6.containg ("low") );  //判断一个字符串是否是另一个字符串的子串;
    

          4、最重要的三个方法:

           1)trim( )——去掉字符串前后的空格;

              Sstring input = " hello world ";

             只要接受外部输入的字符串,就应该默认调用一次trim( )去掉字符串前后吴孝的空格,在进行后续操作,养成习惯;

            2)split( )——根据制定的分隔符做字符串拆分;

              String birthday = "1992-2-14";
              String [] values = birthday.split("—");
                System.out.println ( calues[0] );
    

            3)matcher( )——正则表达式效验:又叫:regex;

                      字符串内容的匹配模板

                     特点:正则表达式本身就是一个字符串;

          String regex = "hello";  "8320[0-9]{4}";  "8320([0-9]{4}|110|120|114)";

            String in = new Scanner (System.in).next();
              if ( in.matcher ( regex ) ) {
                System.out.println ("匹配");
              } else {
                System.out.println ("NO");
              }
    

          符号: [ ] 一个方括号代表一个字符,在内写入内容表达可选则符号;

              { }用来代表正则表达式出现的次数:{m,n}(m表示至少,n表示最多)、{m,  }(m表示至少一次,至少)、{m}(m表示只能);

            :? 表示前面规则出现 0到1次;  + 表示1到多次;  * 表示0到多次;  (|) 表示分组,|两边任选其一,位数不限;例:(00|0000|000|)

    小结:

      String: 内容不可变,方法必须熟悉;

      StringBuffer/StringBuildr:内容可变;

    StringBuffer

      StringBuffer类是一个全新类型,与String没有继承关系;

      StringBuffer的出现是为了解决String内容不可变的问题,StringBuffer是可变的;

      StringBuffer不享受String的特殊语法(+号拼接、自解赋值String常量);

      StringBuffer的方法完全没有String丰富,大部分方法都是和拼接或删除有关,需要传入位置下标;

    public static main ( String [ ] args ) {
        StringBuffer sb =new StringBuffer( "hello" );
        StringBuffer sb2 = sb.append ( "world");  //StringBuffer字符串末尾做拼接
        sb2 = sb2.insert( 5, " ");  //StringBuffer在字符串任意位置做拼接, 5 表示位数
        System.out.println(sb2);
    

      

    StringBuilder

      StringBuilder类是一个全新类型,与String没有继承关系;

      StringBuilder的出现是为了解决String内容不可变的问题,StringBuilder是可变的;

      StringBuilder不享受String的特殊语法(+号拼接、自解赋值String常量);

      StringBuilder的方法完全没有String丰富,大部分方法都是和拼接或删除有关,需要传入位置下标;

         StringBuilder sb0 = new StringBuilder("ByeBye");
       StringBuffer sb1 = sb.append("world");    //StringBuffer在字符串末尾做拼接
       b1 = sb1.insert(5, " ");    //StringBuffer在字符串任意位置做拼接
       System.out.println(sb1); 
    

      

      StringBuffer与StringBuilder的区别

      先有StringBuffer,后有StringBuilder;

      StringBuffer线程安全,性能低;

      StringBuilder线程单一并且不安全,性能高;

        凡是线程安全的、性能低;线程不安全的、性能高;

    包装类:

      8个包装类各自对应基本数据类型:

    包装类 基本数据类型
    Integer int
    Character char
    Byte byte
    Short short
    Boolean boolean
    Long long
    Float float
    Double bouble

      包装类的作用:

       1、丰富了基本数据类型只能存放值的问题,还可以提供大量的方法或常量;

       2、包装类充当了基本数据类型和引用数据类型的桥梁;

      应用层面:必须掌握基本数据类、包装类型和String类型三者的任意转换;

      1:基本和包装类之间的转换:

       1-1、基本转包装:

    public static void main (String [ ] args ) {
        int a = 100;
        Integer in = new Integer (a);    //标准做法
        in = 25;    //自动封箱———JDK1.5以后提供
    

       1-2、包装转基本:

      Integer in = 300;
      int b = in.intValue();    //标准做法
      b = in;    //自动拆箱———JDK1.5以后提供
    

      

      2:包装和String之间转换:

       2-1、String转包装:

      String str = "125";
      Integer in = new Integer(str);
    

       2-2、包装转String: 

    Integer in = 325;
    String str = in.toString();    //标准做法
    String str1 = in + "";    //其实本质还是在调用in的toString方法

      

      3:String和基本类型之间的转换:

       3-1、String转基本:

      String str = "275";
      int i = Integer.parseInt(str);    //将字符串String转换为基本数据类型
    

       3-2、基本转String

      int i = 78;
      String str = Integer.toString(i);
      String str1 = i + ""
      System.out.println(str);
    

      

    时间和日期类:

      定义长度:long(长整数)  long time1 = System.currentTimeMillis( ); 从时间原点(1970年1月1日 到现在的毫秒数;)(原时间原点:1900年1月1日)

       API中过时是与时间与日期类有关,与其它类无关;

      可以通过这个方法获得当前时间的毫秒数

      long now1 = System.currentTimeMillis();
      System.out.println(now1);

      Date 类用来封装了时间日期:

       由于Date这个类出现的较早,经历了时间原点的变迁,以及JDK版本的变迁,所以很多的过时方法;

       Date目前的使用场景:1、获取程序运行的当前时间还是用Date最方便;

                  2、SimpleDateFormat类可以自定义格式化输出日期时间字符串;

                  3、Date在各版本中都可以使用,因而称为表示时间日期的首选;

         Date now = new Date();    //获取当前时间的Date对象
            now = new Date(0L);    //根据传入的long类型毫秒数表示时间
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 a hh:mm:ss:SSS  E");
            String msg = sdf.format(now);
            System.out.println(msg);

       Date短处:1、根据制定的年月日时分秒来设置对象的值———方法已经过时;

             2、难于取出时间日期的一部分(比如年、月)进行单独的时间运算;

       解决方案:使用Calengdar这个替代进行操作;

      Calengdar类———日历类

       

         Calendar cal = Calendar.getInstance();//使用设计模式帮助我们直接获取到Calendar的子类对象,里面对应的就是当前日期时间
            int year = 1992;
            int month = 2;
            int date = 14;
            cal.set(year, month - 1, date);
    //             Calendar ---> Date
    //        Date birthday = cal.getTime();
            Date birthday = new Date(cal.getTimeInMillis());
            String dayOfWeek = new SimpleDateFormat("E").format(birthday);
            System.out.println(dayOfWeek);

    Properties

      Properties:集合类;操作文件

        映射结构:键(kay)———值(value)  键值对(kv对)

      Properties是一个集合类,以键值的方式存放数据;同时兼具可以操作属性文件(一种特殊的文本文件);

      首先讨论作为集合类如何用Properties:

            Properties props = new Properties();//首先产生Properties集合容器
            props.setProperty("J134001", "chenGuo");//调用setProperty方法放入元素,每个元素都是一对键值对
            props.setProperty("J134002", "张鹏");//第一个参数是键,要求不能重复
            props.setProperty("J134003", "张凯");//第二个参数是值        
            props.setProperty("J134003", "罗一修");//如果出现放入重复值的情况,相当于修改而不是新增
            
            String name = props.getProperty("J134001");//通过键取集合中的值,如果键不存在则返回null
            System.out.println(name);
            props.remove("J134002");//根据键删除整个键值对
            System.out.println(props.getProperty("J134002"));
            int size = props.size();//获得容器中的元素个数

      接下来讨论Properties如何操作文件:

       Properties操作的文件必须是固定格式的文本文件———属性文件———将是工作中使用率排名第二的配置文件

            //存文件
            try {                
          props.store(newFileOutputStream("file/student.properties"), "");//下划线表示文本文件的存储格式 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }

          //读文件
          Properties newProps = new Properties();
          try {
          newProps.load(new FileInputStream("file/student.properties"));
          } catch (FileNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          }
          System.out.println(newProps.getProperty("J134001"));
          System.out.println(newProps.size());

     
  • 相关阅读:
    Java实现 LeetCode 537 复数乘法(关于数学唯一的水题)
    Java实现 LeetCode 537 复数乘法(关于数学唯一的水题)
    Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)
    Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)
    如何在 Linux 中统计一个进程的线程数
    linux下查看线程数的几种方法
    深入理解linux系统下proc文件系统内容
    嵌入式 如何定位死循环或高CPU使用率(linux)
    Linux 下查看线程信息
    Linux netstat命令详解
  • 原文地址:https://www.cnblogs.com/scxu28/p/6158287.html
Copyright © 2020-2023  润新知