JavaSE(07)(数组高级操作及日期格式)

冒泡排序:
package zz.itheima.arrays;

public class BubbleSort {
    //冒泡排序
    public static void main(String[] args) {
        int score[] = {67, 69, 75, 87, 89, 90, 99, 100};

                 for (int i = 0; i < score.length -1; i++){    //最多做n-1趟排序
                      for(int j = 0 ;j < score.length - i - 1; j++){    //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
                           if(score[j] < score[j + 1]){    //把小的值交换到后面
                               int temp = score[j];
                               score[j] = score[j + 1];
                               score[j + 1] = temp;
                          }
                      }            
                  System.out.print("第" + (i + 1) + "次排序结果:");
                  for(int a = 0; a < score.length; a++){
                      System.out.print(score[a] + "\t");
                  }
                  System.out.println("");
              }
                  System.out.print("最终排序结果:");
                  for(int a = 0; a < score.length; a++){
                      System.out.print(score[a] + "\t");
             }
          }
}
运行结果:
第1次排序结果:69  75  87  89  90  99  100 672次排序结果:75  87  89  90  99  100 69  673次排序结果:87  89  90  99  100 75  69  674次排序结果:89  90  99  100 87  75  69  675次排序结果:90  99  100 89  87  75  69  676次排序结果:99  100 90  89  87  75  69  677次排序结果:100 99  90  89  87  75  69  67  
最终排序结果:100  99  90  89  87  75  69  67
选择排序:
package zz.itheima.arrays;

public class SelectSort {
    /**
     * 选择排序
     * @param args
     */
    public static void main(String[] args) {
        int[] arr={3,5,1,7,6};

        //从小到大

        for(int j=0;j<arr.length-1;j++)
        {
            for (int i = j+1; i < arr.length; i++) {
                //第1轮    arr[0] arr[i]
                //第2轮   arr[1] arr[i]
                if(arr[j]>arr[i])
                {
                    int temp=arr[j];
                    arr[j]=arr[i];
                    arr[i]=temp;
                }
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
运行结果:
1
3
5
6
7
顺序查找:
package zz.itheima.arrays;

public class OrderSearch {
    /**
     * 顺序查找
     * @param args
     */
    public static void main(String[] args) {
        int[] arr={3,5,1,7,6};

        //顺序查找     找7
        boolean flag=false;

        for (int i = 0; i < arr.length; i++) {
            if(arr[i]==7)
            {
                System.out.println("存在");
                flag=true;
                break;
            }
        }
        if(flag==false)
            System.out.println("不存在");
    }
}
运行结果:
存在
二分折半查找:
package zz.itheima.arrays;

public class BinarySearch {
    /**
     * 二分折半查找
     * @param args
     */
    public static void main(String[] args) {
    int[] arr={1,2,3,4,5,6,7,8,9};    //必须有序

        int left=0;
        int right=arr.length-1;

        while (left<=right) {
            //找mid
            //1.mid==目标    找到了
            //2.mid<目标  (缩小包围圈 left  right)
            //3.mid>目标(缩小包围圈 left  right)
            int mid=(left+right)/2;
            if(arr[mid]==8)
            {
                System.out.println("存在");
                break;
            }
            if(arr[mid]<10)
            {
                left=mid+1;
            }
            if(arr[mid]>10)
            {
                right=mid-1;
            }

        }
        if(left>right)
            System.out.println("不存在");
    }
}
运行结果:
存在
测试程序运行时间
package zz.itheima.arrays;

public class TestSystem {
    //测试程序执行了多长时间
    public static void main(String[] args) {

    int[] arr={3,5,1,7,6,9,10,67,34,55,99};

        long begin=System.currentTimeMillis();
        //从小到大
        for(int j=0;j<arr.length-1;j++)
        {
            for (int i = 0; i < arr.length-1-j; i++) {
                if(arr[i]>arr[i+1])
                {
                    int temp=arr[i];
                    arr[i]=arr[i+1];
                    arr[i+1]=temp;
                }
            }
        }
        long end=System.currentTimeMillis();

        System.out.println(end-begin);
    }
}
数字格式化:
package zz.itheima.arrays;

import java.text.NumberFormat;

public class TestNumberFormat {

    public static void main(String[] args) {
        double a=10.98;
        System.out.println(a*1.1);

        NumberFormat nf=NumberFormat.getInstance();
        nf.setMaximumFractionDigits(1);//设置某个数的小数部分中所允许的最大数字位数
        System.out.println(nf.format(a*1.1));
    }
}
运行结果:
12.078000000000001
12.1
日期格式化:
package zz.itheima.arrays;

import java.text.DateFormat;
import java.util.Date;
import java.util.Scanner;

public class TestDateFormat {

    public static void main(String[] args) throws Exception {
        //public static final DateFormat getDateInstance(),获取日期格式器,该格式器具有默认语言环境的默认格式化风格。
        Date now=new Date();
        System.out.println(now);

        DateFormat df1=DateFormat.getDateInstance();
        String s=df1.format(now);
        System.out.println(s);

//      public static final DateFormat getDateInstance(int style),获取日期格式器,该格式器具有默认语言环境的指定格式化风格。
        DateFormat df2=DateFormat.getDateInstance(DateFormat.SHORT);
        s=df2.format(now);
        System.out.println(s);
//
//      public static final DateFormat getDateTimeInstance(),获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。
        DateFormat df3=DateFormat.getDateTimeInstance();
        s=df3.format(now);
        System.out.println(s);

//      public static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle),获取日期/时间格式器,
               // 该格式器具有默认语言环境的指定日期和时间格式化风格。
        DateFormat df4=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.SHORT);
        s=df4.format(now);
        System.out.println(s);
//      public static final DateFormat getTimeInstance(),获取时间格式器,该格式器具有默认语言环境的默认格式化风格。
//
//      public static final DateFormat getTimeInstance(int style),获取时间格式器,该格式器具有默认语言环境的指定格式化风格。
//
//      public final String format(Date date)将一个 Date对象格式化为日期/时间字符串。

//      public Date parse(String source),将字符串解析为Date对象。字符串中日期时间格式必须跟格式化器的风格一致
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的生日:");
        String birString=sc.nextLine();

        DateFormat df5=DateFormat.getDateInstance();
        Date birDate=df5.parse(birString);  
        System.out.println(birDate);
    }
}
运行结果:
Thu Nov 26 17:03:42 CST 2015
2015-11-26
15-11-26
2015-11-26 17:03:42
20151126日 星期四 下午5:03
请输入你的生日:
时间测试:
package zz.itheima.arrays;

import java.text.DateFormat;
import java.util.Date;

public class TestDate {

    public static void main(String[] args) {
        Date now=new Date();
        System.out.println(now);

        System.out.println(now.getTime());

        System.out.println(DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.SHORT).format(now));
    }
}
运行时间:
Thu Nov 26 17:04:40 CST 2015
1448528680749
20151126日 星期四 下午5:04
测试日历:
package zz.itheima.arrays;

import java.util.Calendar;
import java.util.Date;

public class TestCalender {
    //日历类测试
    public static void main(String[] args) {

//      public static Calendar getInstance(),使用默认时区和语言环境获得一个日历对象(Calendar类是抽象类)
        Calendar c=Calendar.getInstance();
        System.out.println(c);

//      public int get(int field)返回日历对象中给定字段的值
        System.out.println(c.get(Calendar.HOUR));

//      public void set(int field, int value),设置日历对象中的给定字段的值
        c.set(Calendar.YEAR,2015);

//      public final Date getTime(),返回日历中的日期时间对象
        Date d=c.getTime();
        System.out.println(d);
//      public final void setTime(Date date),设置日历中的日期时间对象
    }
}
运行结果:
java.util.GregorianCalendar[time=1448528724370,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=2015,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=4,DAY_OF_MONTH=26,DAY_OF_YEAR=330,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=5,SECOND=24,MILLISECOND=370,ZONE_OFFSET=28800000,DST_OFFSET=0]
5
Thu Nov 26 17:05:24 CST 2015
数组类进行测试:
package zz.itheima.arrays;

import java.util.Arrays;

public class TestArrays {
    /**
     * 对数组类进行测试
     * @param args
     */
    public static void main(String[] args) {
//      public static void sort(xxx[]  a) ,对数组a进行升序排序
        int[] arr={4,6,1,8,3,9};
        Arrays.sort(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
//      public static int binarySearch(xxx[] a , xxx key),通过二分(折半)查找法搜索数组a中的key
        int num=0;
        int result=Arrays.binarySearch(arr, num);
        System.out.println(result);
//      public static xxx[] copyOf(xxx[] a , int newLength),通过复制数组a的newLength长度的数据到新数组
        int[] temp=Arrays.copyOf(arr, 3);
        for (int i = 0; i < temp.length; i++) {
            System.out.print(temp[i]+" ");
        }
        System.out.println();
//      public static xxx[] copyOfRange(xxx[] a , int from , int to),通过复制数组a的指定范围的数据到新数组
        temp=Arrays.copyOfRange(arr, 2, 4);
        for (int i = 0; i < temp.length; i++) {
            System.out.print(temp[i]+" ");
        }
        System.out.println();
//      public static boolean equals(xxx[] a1 , xxx[] a2),比较a1和a2两个数组是否一样
        int[] arr2={4,6,1,8,3,9};
        System.out.println(Arrays.equals(arr, arr2));//顺序不一样也不是同一个数组
    }
}
运行结果:
1 3 4 6 8 9 
-1
1 3 4 
4 6 
false
数组存放对象:
package zz.itheima.arrays;

public class TestArray {

    public static void main(String[] args) {
        //数组可以是自定义类型,数组存放了对象
        int[] arr={4,2,8,1,7};
        Book[] arrBooks=new Book[3];
        arrBooks[0]=new Book("adf",100.10);
        arrBooks[1]=new Book("aasddf",10560.10);
        arrBooks[2]=new Book("aasdfdf",10560.10);

        //数组位置交换
        int temp=arr[1];
        arr[1]=arr[3];
        arr[3]=temp;
    }
}
两个日期时间差:
package zz.itheima.arrays;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;




public class Demo2 {  

    /** 
     * 两个日期时间差
     * @param args 
     * @throws ParseException  
     */  
    public static void main(String[] args) throws ParseException {  
        // TODO Auto-generated method stub  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        Date d1=sdf.parse("2015-07-13 10:10:10");  
        Date d2=sdf.parse("2015-11-26 00:00:00");  
        System.out.println(daysBetween(d1,d2));  

        System.out.println(daysBetween("2015-07-13 10:10:10","2015-11-26 00:00:00"));  
    }  

    /**  
     * 计算两个日期之间相差的天数  
     * @param smdate 较小的时间 
     * @param bdate  较大的时间 
     * @return 相差天数 
     * @throws ParseException  
     */    
    public static int daysBetween(Date smdate,Date bdate) throws ParseException    
    {    
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");  
        smdate=sdf.parse(sdf.format(smdate));  
        bdate=sdf.parse(sdf.format(bdate));  
        Calendar cal = Calendar.getInstance();    
        cal.setTime(smdate);    
        long time1 = cal.getTimeInMillis();                 
        cal.setTime(bdate);    
        long time2 = cal.getTimeInMillis();         
        long between_days=(time2-time1)/(1000*3600*24);  

       return Integer.parseInt(String.valueOf(between_days));           
    }    

    /** 
    *字符串的日期格式的计算 
    */  
    public static int daysBetween(String smdate,String bdate) throws ParseException{  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");  
        Calendar cal = Calendar.getInstance();    
        cal.setTime(sdf.parse(smdate));    
        long time1 = cal.getTimeInMillis();                 
        cal.setTime(sdf.parse(bdate));    
        long time2 = cal.getTimeInMillis();         
        long between_days=(time2-time1)/(1000*3600*24);  

       return Integer.parseInt(String.valueOf(between_days));     
    }  
} 
运行结果:
136
136
固定格式日历:
package zz.itheima.arrays;

import java.util.Calendar;

public class Demo1 {

    public static void main(String[] args) {
        // 练习:在控制台输出当前时间,格式为“2014-1-29 14:24:55”
        Calendar c = Calendar.getInstance();//得到日历对象
        //分别得到年月日和时分秒就可以了
        int year=c.get(Calendar.YEAR);
        int month=c.get(Calendar.MONTH)+1;
        int day=c.get(Calendar.DAY_OF_MONTH);
        int hour=c.get(Calendar.HOUR);
        int minute=c.get(Calendar.MINUTE);
        int sec=c.get(Calendar.SECOND);

        System.out.println(year+"-"+month+"-"+day+" "+hour+":"+minute+":"+sec);
    }
}
运行结果:
2015-11-26 5:9:7
Book类:
package zz.itheima.arrays;

public class Book {
    private String name;
    private double price;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public Book(String name, double price) {
        super();
        this.name = name;
        this.price = price;
    }
    public Book() {
        super();
    }
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值