美文网首页
Java入门——常用类

Java入门——常用类

作者: Adj15 | 来源:发表于2018-07-20 13:11 被阅读0次

    java小白一枚,整理了一些需要记忆的常用类方便学习。
    分割线------------------------------------------------------------------------------------------------------

    一、Collections集合常用类

    常用静态方法:
    1、sort()
    功能:排序

    2、binarySearch()
    功能:查找元素索引值
    注:需要先排序

    3、max()/min()
    功能:查找最大/最小值

    二、集合与数组的转换

    集合转数组:list.toArray(new String[list.size()])
    数组转集合:Arrays.asList(str);

    三、包装类

    包装类.PNG

    1、java共有8中基本数据类型,每种类型对应一种包装类

    2、包装类的作用
    迎合JAVA面对对象的思想,解决基本数据类型不是对象,无属性,无方法带来的一系列问题。

    3、实用方法

    public class NewPackClass {
        public static void main(String[] args) {
            //包装类的构造方法(基本类型)
            Integer int1=new Integer(1);
            Double double1=new Double(23.333);
            Character char1=new Character('a');
            Boolean boolean1=new Boolean(true);
    
            //包装类的构造方法(字符串类型)除Character类以外
            Integer int2=new Integer("2");
            Double double2=new Double("2.3333");
            Boolean boolean2=new Boolean("ture");
    
            //valueOf():基本类型 ->包装类
            Integer int3=Integer.valueOf(3);
            Double double3=Double.valueOf(23.333);
            Character char3=Character.valueOf('a');
            Boolean boolean3=Boolean.valueOf(true);
    
            //valueOf():字符串 -> 包装类
            Integer int4=Integer.valueOf("4");
            Double double4=Double.valueOf("23.33");
            Boolean boolean4=Boolean.valueOf("false" );
    
            //toString():基本类型->字符串
            String character=Character.toString('a');
            String int5=Integer.toString(11);
            String dou=Double.toString(234.3);
            String is=Boolean.toString(true);
    
            //xxValue():包装类 ->基本类型
            int id=int1.intValue();
            double xxx=double1.doubleValue();
    
            //prasexx():字符串->基本类型(Character除外)
            int idd=Integer.parseInt("1");
            boolean bb=Boolean.parseBoolean("true");
    
            //包装类-自动装箱和拆箱
            int i=new Integer(10);  //拆箱
            Integer i1=10;                //装箱
            System.out.println(i+"  "+i1);
        }
    }
    

    4、集合中不允许存放基本数据类型数据,需要存储数字时需要放入包装类型

    四、String

    1、特点
    不可变性 一个对象是不可变动 。需要拷贝的对象的内容时不用复制它本身而只是复制它的地址,复制地址(通常一个指针的大小)需要很小的内存,效率也很好。对于其他引用同一个对象的其他变量也不会造成影响。

    2、使用final String对象存储

    String t="asdf";
    String a="aadf";
    

    3、String位于java.lang包中,具有丰富的方法

    String实用方法.png
    String t="asdf";
    String a="aadf";
    //字符串常用方法
    System.out.println("字符产的长度:"+t.length());
    System.out.println("比较字符串的内容:"+t.equals(a));
    System.out.println("字符串的拼接:"+"<%"+t+">");
    System.out.println("字符串的拼接:"+"<".concat(t).concat(">"));
    System.out.println("搜索第一个出现的字符:"+t.indexOf('s'));
    System.out.println("搜索第一个出现的字符串:"+t.indexOf("df"));
    System.out.println("搜索第一个传销的字符:"+t.lastIndexOf('s'));
    System.out.println("搜索第一个出现的字符串:"+t.lastIndexOf("df"));
    System.out.println("截取字符串:"+t.substring(1));
    System.out.println("截取字符串的范围:"+t.substring(1,3));
    String b="  Hello World     ";
    System.out.println("消除前后的空格:"+b.trim());
    System.out.println("字符串替换:"+b.replace(" ",""));
    String[] i=b.split(" ");
    System.out.println("分割字符串:"+Arrays.toString(i));
    String j="this is MY STRING";
    System.out.println("到大写:"+j.toUpperCase());
    System.out.println("到小写:"+j.toLowerCase());
    System.out.println("忽略大小写:"+"ABC".equalsIgnoreCase("abc"));
    

    4、“==”和equals()的区别
    "==":判断两个字符串在内存中的地址,即判断是否是同一个对象
    equals():检查组成字符串的字符是否完全一致

    equals()源码

    public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String aString = (String)anObject;
            if (coder() == aString.coder()) {
                return isLatin1() ? StringLatin1.equals(value, aString.value)
                                  : StringUTF16.equals(value, aString.value);
            }
        }
        return false;
    }
    

    5、String创建方式不同

    public class NewString {
        public static void main(String[] args) {
            String s1="Hello World";
            String s2="Hello World";
            String s3="Hello"+" World";
            String s4=new String("Hello World");
            String s5=new String("Hello World");
    
            System.out.println(s1==s2);
            System.out.println(s1.equals(s2));
            System.out.println(s1==s3);
            System.out.println(s4==s5);
            System.out.println(s4.equals(s5));
        }
    }
    输出结果:
    true
    true
    true
    false
    true
    

    原理分析图:

    原理.png

    五、StringBuffer

    1、特点
    可变字符串 需要对字符串频繁修改(如字符串连接)使,使用StringBuffer类可以大大提高程序执行的效率。

    2、与String、StringBuilder的对比
    String:不可变对象。经常改变内容的字符串最好不要使用String。
    StringBuffer:可变字符串。内容经常需要改变时可以使用StringBuffer,更加高效。

    JDK5.0提供了StringBuilder,等价StringBuffer。
    StringBuffer:线程安全
    StringBuilder:线程非安全的-并发

    3、声明及常用方法

    import java.util.Scanner;
    
    public class NewStringBuffer {
        public static void main(String[] args) {
            //StringBuffer声明
            String str="java";
            StringBuffer s1=new StringBuffer(str);
            StringBuffer s2=new StringBuffer("java");
            System.out.println(s1+" "+s2);
            System.out.println("-----------------------");
    
            //toString() 转化为String
            String str1=s1.toString();
            String str2=s2.toString();
            System.out.println(str1+" "+str2);
            System.out.println("------------------------");
    
            //append() 追加字符串
            s1.append("-1").append("-2");
            System.out.println(s1);
            System.out.println("-----------------------");
    
            //insert() 插入字符串
            s2.insert(0,"--");
            System.out.println(s2);
            s2.insert(1,"**");
            System.out.println(s2);
            System.out.println("---------------------------");
    
            //删除字符
            s1.delete(1,2);//顾前不顾后
            System.out.println(s1);
            s1.deleteCharAt(1).deleteCharAt(3);
            System.out.println(s1);
            System.out.println("-------------------------------");
    
        }
    }
    
    输出结果:
    java java
    -----------------------
    java java
    ------------------------
    java-1-2
    -----------------------
    --java
    -**-java
    ---------------------------
    jva-1-2
    ja--2
    -------------------------------
    

    六、日期

    java.util.Date类:表示日期和时间
    java.util.SimpleDateFormat:日期格式化

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    
    public class NewDate {
        public static void main(String[] args) {
            //创建日期对象
            Date d1=new Date();
            System.out.println(d1);
            System.out.println("--------------------------");
    
            //日期 ->系统时间
            long long1=d1.getTime();
            System.out.println(long1);
            System.out.println("test");
            System.out.println(long1);
            System.out.println("-----------------------------");
    
            //系统时间
            long long2=System.currentTimeMillis();
            System.out.println(long2);
    
            Date d2=new Date(long1);
            Date d3=new Date(2008-1900,7,8,20,8,8);  //*1      年份需-1900
            Date d4=new Date(2008,7,8,20,8,8);       //*2      月份需-1
            System.out.println(d3);
            System.out.println(d4);
            System.out.println("--------------------------------");
    
            //定制日期格式
            SimpleDateFormat format1=new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat format2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(format1.format(d3));
            System.out.println(format2.format(long1));
            System.out.println("-----------------------------------");
    
            //日期->字符串
            String str1=format2.format(d3);
            System.out.println(str1);
            System.out.println("------------------------------------");
    
            //字符串->日期
            try{
                Date d5=format2.parse(str1);
                System.out.println(d5);
            }catch (ParseException e){
                e.printStackTrace();
            }
            
        }
    }
    
    结果:
    Thu Jul 19 15:28:48 CST 2018
    --------------------------
    1531985328859
    test
    1531985328859
    -----------------------------
    1531985328896
    Fri Aug 08 20:08:08 CST 2008
    Sat Aug 08 20:08:08 CST 3908
    --------------------------------
    2008-08-08
    2018-07-19 15:28:48
    -----------------------------------
    2008-08-08 20:08:08
    ------------------------------------
    Fri Aug 08 20:08:08 CST 2008
    

    七、日历类 java.util.Calendar

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class NewCalendar {
        public static void main(String[] args){
            //获取抽象对象
            Calendar c1=Calendar.getInstance();
            System.out.println(c1);
            System.out.println("---------------------");
    
            //获取年月日
            System.out.println(c1.get(Calendar.YEAR));
            System.out.println(c1.get(Calendar.MONTH)); //输出月份比实际小1
            System.out.println(c1.get(Calendar.DATE));
            System.out.println("----------------------");
    
            //设置年月日
            c1.set(Calendar.YEAR,2000);
            c1.set(Calendar.MONTH,7);
            c1.set(1999,7,15);;
            System.out.println(c1.get(Calendar.YEAR));
            System.out.println(c1.get(Calendar.MONTH));
            System.out.println(c1.get(Calendar.DATE));
            System.out.println("--------------------------");
    
            //日历计算
            c1.add(Calendar.DAY_OF_MONTH,48);
            c1.add(Calendar.MONTH,-2);
            System.out.println(c1.get(Calendar.YEAR));
            System.out.println(c1.get(Calendar.MONTH));
            System.out.println(c1.get(Calendar.DATE));
            System.out.println("----------------------------");
    
            //日历 ->日期
            Date d1=c1.getTime();
            SimpleDateFormat format1=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
            System.out.println(format1.format(d1));
            System.out.println("------------------------------");
    
            //日期 ->日历
            c1.setTime(new Date());
            System.out.println(c1);
            System.out.println("------------------------------");
    
            //月中天数的最大值
            System.out.println(c1.get(Calendar.MONTH)+" "+c1.getMaximum(Calendar.DAY_OF_MONTH));
        }
    }
    
    输出结果:
    java.util.GregorianCalendar[time=1531987687491,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=19,DAY_OF_YEAR=200,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=8,SECOND=7,MILLISECOND=491,ZONE_OFFSET=28800000,DST_OFFSET=0]
    ---------------------
    2018
    6
    19
    ----------------------
    1999
    7
    15
    --------------------------
    1999
    7
    2
    ----------------------------
    1999-08-02 04:08:07
    ------------------------------
    java.util.GregorianCalendar[time=1531987687530,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=19,DAY_OF_YEAR=200,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=8,SECOND=7,MILLISECOND=530,ZONE_OFFSET=28800000,DST_OFFSET=0]
    ------------------------------
    6 31
    

    八、 jdk1.8新特性 --java.time.*类

    import java.time.*;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.ChronoField;
    import java.time.temporal.ChronoUnit;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.Set;
    
    public class JDK8_New {
        public static void main(String[] args) {
            //Clock时钟
            Clock c1=Clock.systemDefaultZone();
            long s1=c1.millis();//获取毫秒值
            System.out.println(s1);
            Date d1=Date.from(c1.instant());//时钟转为日期
            System.out.println(d1);
            System.out.println("-------------------------");
    
            //Timezones 城市时区(Zoneld)
            //共输出599个时区
            Set<String> set=ZoneId.getAvailableZoneIds();
            Iterator<String> it=set.iterator();
            for(int i=1;it.hasNext();i++){
                String s=it.next();
                System.out.println(i+"--"+s+"--"+ZoneId.of(s).getRules());
            }
            System.out.println("----------------------------");
    
            //LocalTime 本地时间
            ZoneId zone1=ZoneId.of("Asia/Shanghai");//上海
            ZoneId zone2=ZoneId.of("Asia/Hong_Kong");//香港
            ZoneId zone3=ZoneId.of("Asia/Seoul");//首尔
            LocalTime now1 = LocalTime.now(zone1);
          LocalTime now2 = LocalTime.now(zone2);
          LocalTime now3 = LocalTime.now(zone3);
    
          System.out.println(now1.isBefore(now3));  // 之前false
          System.out.println(now1.isAfter(now3));      // 之后
    
          long hours = ChronoUnit.HOURS.between(now1, now2); //时间差-小时
          long minutes = ChronoUnit.MINUTES.between(now3, now1);//时间差-分钟
          System.out.println(hours);
          System.out.println(minutes);
            System.out.println("-----------------------------");
    
    //    LocalDate 本地日期
            LocalDate today = LocalDate.now();  //今天
            LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);  //明天
            LocalDate yesterday = tomorrow.minusDays(2);  //昨天
            System.out.println(today+"--"+tomorrow+"--"+yesterday);
            LocalDate day1 = LocalDate.of(2008,8,19);
            System.out.println(day1);
            System.out.println("-----------------------------");
    
    
    //    LocalDateTime 本地日期时间
            LocalDateTime oy = LocalDateTime.of(2008,8,8,20,8,8);
            System.out.println(oy);
            System.out.println(oy.getDayOfMonth());
            System.out.println(oy.getDayOfWeek());
            System.out.println(oy.getDayOfYear());
            System.out.println(oy.get(ChronoField.CLOCK_HOUR_OF_AMPM));
    
          Instant instant = oy.atZone(ZoneId.systemDefault()).toInstant();
          System.out.println("瞬间时间:"+instant);
          Date d2 = Date.from(instant);
          System.out.println("瞬间时间-->date:"+d2);
    
          DateTimeFormatter format =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
          LocalDateTime parsed = LocalDateTime.parse("2008-08-08 07:13:20", format);
          System.out.println("本地日期时间格式化:"+parsed);
          String string = format.format(parsed);
          System.out.println("本地日期时间格式化的字符串:"+string);
    
        }
    }
    
    输出结果:
    1531989695995
    Thu Jul 19 16:41:35 CST 2018
    -------------------------
    (省略)
    ----------------------------
    true
    false
    0
    -60
    -----------------------------
    2018-07-19--2018-07-20--2018-07-18
    2008-08-19
    -----------------------------
    2008-08-08T20:08:08
    8
    FRIDAY
    221
    8
    瞬间时间:2008-08-08T12:08:08Z
    瞬间时间-->date:Fri Aug 08 20:08:08 CST 2008
    本地日期时间格式化:2008-08-08T07:13:20
    本地日期时间格式化的字符串:2008-08-08 07:13:20
    

    相关文章

      网友评论

          本文标题:Java入门——常用类

          本文链接:https://www.haomeiwen.com/subject/liwfmftx.html