2021-05-28日历类

日历类 是一个抽象类:java.util.Calendar
 *
 * 不能new ,所以提供了一个静态功能,返回值是当前类本身!
 * public static Calendar getInstance() :通过底层它的子类创建该类实例  (常用的功能)
 *
 * public int get(int field):获取相关的日历信息:参数为相关的日历字段
 *  public static final int YEAR:年份
 *  public static final int MONTH:月份(1月份从角标0开始,0-11)
 *  public static final int DATE:月中的某一天

成员方法:
 *      public abstract void add(int field,int amount): 为某个字段添加或者减去时间量

public class CalendarDemo {
    public static void main(String[] args) {

        //创建日历类
        Calendar calendar = Calendar.getInstance(); //就是子类的属性信息
//        System.out.println(calendar);
        //获取当前年月日信息:
        //通过Calendar的字段(成员变量)
        /**
         * public static final int YEAR:年份
         *    public static final int MONTH:月份(1月份从角标0开始,0-11)
         *  public static final int DATE:月中的某一天
         */
        int year = calendar.get(Calendar.YEAR) ;
        int month = calendar.get(Calendar.MONTH) ;
        int date = calendar.get(Calendar.DATE) ;

        System.out.println("当前日期是:"+year+"-"+(month+1)+"-"+date);


    }
}

存储5个学生,每个学生都有姓名和年龄,需要将5个学生存储到集合中,遍历学生信息

1)创建集合对象:Collection
 *  2)创建5个学生
 *  3)将5个学生添加到集合中
 *  4)将集合转换成对象数组:     Object[] toArray():将集合转换成数组
 *  5)遍历Object[]数组即可

public class CollectionTest {

    public static void main(String[] args) {
        //创建集合对象
        Collection c = new ArrayList() ;

        //创建5个学生
        Student s1 = new Student("关于",30) ;
        Student s2 = new Student("蒋干",25) ;
        Student s3 = new Student("刘备",35) ;
        Student s4 = new Student("张飞",28) ;
        Student s5 = new Student("诸葛亮",45) ;

        //给集合中添加元素
        c.add(s1) ;
        c.add(s2) ;
        c.add(s3) ;
        c.add(s4) ;
        c.add(s5) ;
//        System.out.println(c);


        //将集合转换成Object[]
        Object[] objs = c.toArray();  //Object[] :   Object  obj = new Student() ;
        for(int x = 0 ; x < objs.length ; x++){
           // System.out.println(objs[x]);//执行是Student 的toString():直接输出对象名称

            //现在需要执行Student中的getXXX()获取信息
            //向下转型
            Student student = (Student) objs[x];
            System.out.println(student.getName()+"---"+student.getAge());
        }

    }
}

集合和数组的区别?
 *
 *  1)长度的区别
 *      集合:支持可变的长度
 *      数组:长度是固定的
 *
 *  2)存储数据类型的区别
 *      集合:只能存储引用数据类型
 *      数组:既可以存基本数据类型,也可以存储引用数据类型;
 *  3)存储元素的区别
 *       集合:集合中存储的元素:可以是任意引用类型元素
 *                  举例:
 *                          白酒参着啤酒红酒可乐
 *       数组:存储的元素:只能是同一个类型元素!
 *                  举例: 水杯中的水
 *
 *
 *          Collection集合:接口
 *                  一些集合可以允许元素重复(List),一些集合不允许元素重复(Set)
 *                  一些集合可以允许元素有序(存储和取出一致:List),一些集合无序的(存储和取出不一致:Set)
 *                  JDK不提供此接口的任何直接实现,通过具体的子接口的子实现类实现!
 *
 * 基本功能:
 *      添加元素
 *      boolean add(Object e)
 *      删除元素
 *      void clear():暴力删除,全部清空
 *      boolean remove(Object o):删除指定的元素
 *    判断功能
 *      判断集合中是否包含元素
 *      boolean contains(Object o):判斷集合是否包含指定的元素
 *      boolean isEmpty():判断集合是否为空
 *
 *      获取集合的元素数:
 *          int size()
 *
 *      转换功能:
 *              Object[] toArray():将集合转换成数组

public class CollectionDemo {
    public static void main(String[] args) {

        //创建一个集合Collection对象
        //Collection collections = new Collection() ;接口不能实例化
        Collection collection = new ArrayList() ;
        System.out.println(collection);
        //添加元素
        //boolean add(Object e)
        collection.add("hello") ;
        collection.add("world") ;
        collection.add("javaEE") ;
        /*
        * public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        elementData[size++] = e;
        return true;   //只要添加,永远返回true
    }
        * */
        System.out.println(collection);

        System.out.println("-------------------------");
        //删除
        System.out.println(collection.remove("javaEE")) ;
        System.out.println(collection);
      //  collection.clear();//暴力删除
        System.out.println(collection);
    //  boolean contains(Object o):判斷集合是否包含指定的元素
        System.out.println(collection.contains("hello"));
        System.out.println(collection.contains("android"));
        //  int size()
        System.out.println(collection.size());
        System.out.println(collection.isEmpty());

    }
}

日期和String文本的相互转换的工具类

public class DateUtils {

    //构造方法私有化
    private DateUtils(){}

    //提供静态功能
    //将Date--->String 格式化
    public static String date2String(Date date,String pattern){
        //创建SimpleDateFormat对象
        /*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;
        String source = sdf.format(date);
        return source ;*/
        return new SimpleDateFormat(pattern).format(date) ;
    }

    //将String--->Date日期格式
    public static Date string2Date(String source,String pattern) throws ParseException {
        //分步走
        /*SimpleDateFormat sdf = new SimpleDateFormat(pattern) ;
        Date date = sdf.parse(source);
        return date ;*/
        return new SimpleDateFormat(pattern).parse(source) ;
    }
}

 成员方法:
 *      public long getTime() ;获取时间毫秒数(返回值来自:1970年1月1日)
 *
 *
 *  开发中:
 *                   "2021-5-20"
 *           注册表单上---输入了 日期时间 ------ > 提交后台:                 Date格式
 *
 *
 *           Date date = new Date() ;  获取当前系统时间:Date日期格式
 *
 *Thu May 20 10:52:29 CST 2021 :Date日期格式 --------------------->String 日期文本格式 "2021-5-20"   (格式化操作)
 * DateFormat 是日期/时间格式化子类的抽象类, 不能直接new
 *      使用最具体的子类:SimpleDateFormat       日期 -> 文本 :格式化
 *                                              文本-> 日期  :解析
 *
 *
 *      SimpleDateFormat如何使用
 *          构造方法:
 *               public SimpleDateFormat(String pattern)
 *                                  yyyy:表示年
 *                                  MM:月
 *                                  dd:月中的日期
 *                                  HH:时
 *                                  mm:分钟
 *                                  ss:秒
 *                      public String format(Date date) :格式化
 *                      public Date parse(String source) throws ParseException{}

public class DateDemo2 {
    public static void main(String[] args) throws ParseException {

        //Date日期格式----->文本:String :格式化
        Date date = new Date() ;
        System.out.println(date); //Thu May 20 11:01:39 CST 2021
        //描述  "2021-5-20"

        //  public SimpleDateFormat(String pattern)
        //创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
        //public String format(Date date) :格式化
        String strDate = sdf.format(date);
        System.out.println(strDate);
        System.out.println("-----------------------------------------");

        //String文本日期格式---->Date日期格式 : 解析过程
        //public SimpleDateFormat(String pattern)
        //注意:SimpleDateFormat的模式必须和String当前日期文本的格式一致
        String source = "2022-5-20" ;
        //创建SimpleDateFormart对象
//        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ;

       // public Date parse(String source) throws ParseException{}
        Date date2 = sdf2.parse(source) ;
        System.out.println(date2);


        //执行一段程序:计算执行效率!
  /*      long start = System.currentTimeMillis() ;
        for(int x = 0; x < 1000000; x++){
            System.out.println("hello"+x);
        }
        long end = System.currentTimeMillis() ;*/


      //  System.out.println("耗时:"+(end-start)+"毫秒");
       /* Date date = new Date() ;
        long time = date.getTime();
        System.out.println(time);//1621478840499

        Date date2 = new Date(time) ;
        System.out.println(date2);*/
    }
}

java.util.Date类 :表示特定的瞬间,精确到毫秒
 *
 * 构造方法:
 *  public Date():表示当前系统分配的系统时间(精确到毫秒)
 *  public Date(long date):将long----Date日期格式
 *              与1970年1月1日 0:0:0 GMT(格林威治时间)
 *
 *    第一个构造方法---获取当前系统时间!

public class DateDemo {

    public static void main(String[] args) {

        //创建一个Date类对象
        Date date  = new Date() ;
        System.out.println(date);//Date格式

        System.out.println("--------------------------");
        //Thu May 20 10:41:45 CST 2021

        //定义时间long
        long time = 60 * 60 ;
        //public Date(long date):
        Date date2 =  new Date(time) ;
        System.out.println(date2);

    }
}

键盘录入一个字符串,判断这个字符串是否为对称字符串 (使用功能完成)

public class Test {
    public static void main(String[] args) {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //提示并录入
        System.out.println("请输入个字符串:");
        String line = sc.nextLine() ;

        boolean flag = compareEq(line);
        System.out.println("flag:"+flag);
        System.out.println("----------------------------");

        boolean flag2 = compareEq2(line);
        System.out.println(flag2);


    }

    //方式2:利用StringBuffer的反转功能
    public static boolean compareEq2(String s){
        //创建一个字符串缓冲区对象
       /* StringBuffer sb = new StringBuffer(s)  ;
        sb.reverse() ;//反转
        //使用sb转换成字符串
        String str = sb.toString();
        boolean flag = str.equals(s);
        return flag ;*/

       //一步走
        return  new  StringBuffer(s).reverse().toString().equals(s) ;

    }

    //方式1:定义一个功能
    public static boolean compareEq(String s){
        //遍历字符串
        for(int x = 0 ; x < s.length() ; x ++){
            //判断
            //s.charAt(0) - s.charAt(s.length()-1)
            if(s.charAt(x) != s.charAt(s.length()-1-x)){
                return false ;
            }
        }
        return true ;
    }
}

int类型和String类型的相互转换

 int--->String
 *          Integer.toString(int值)--->String
 *
 *       String---->int
 *
 *          Integer.parseInt(数字字符串)---->int

public class IntegerDemo {

    public static void main(String[] args) {

        //int---->String
        //定义一个int类型变量
        //方式1:空串拼接(最简单的)
        int a = 100 ;
        String s = "" ;
        String result  = s + a ;
        System.out.println("result:"+result);
        System.out.println("-----------------------------");
        //方式2:包装为Integer----->String
        Integer i = new Integer(a) ;
        //String toString()
        String result2 = i.toString();
        System.out.println(result2);
        System.out.println("-----------------------------");
        //直接使用Integer类的静态功能
        //public static String toString(int i)
        String result3 = Integer.toString(a);
        System.out.println(result3);


        System.out.println("-------------------------------------");

        //将String--->int: String必须为数字字符串
        String str = "200" ;
        //方式1:使用Integer的构造方法
        Integer ii = new Integer(str) ;
        //Integer--->int
        //public int intValue()
        int number = ii.intValue();
        System.out.println(number);

        System.out.println("-------------------------------------");
        //方式2: String---Integer----int
        //public static Integer valueOf(String s)
        Integer ii2 = Integer.valueOf(str);
        int number2 = ii2.intValue();
        System.out.println(number2);
        //常用:方式3 经常使用
        //public static int parseInt(String s)
        int number3 = Integer.parseInt(str);
        System.out.println(number3);


    }
}

 Math类:abs求绝对值

Jdk5新特性:静态导入:导入到方法的级别,前提条件是方法必须静态
 *
 *      注意:自定义的方法名不能和被导入的静态方法名冲突,否则报错!

import static java.lang.Math.abs ;
public class MathDemo {
    public static void main(String[] args) {
        int max = Math.max(10, 20);
        System.out.println(max);
       // int num = Math.abs(-100);
       // System.out.println(num);

        int number = java.lang.Math.abs(-100); //区分abs方法
        System.out.println(number);

    }
    public static void abs(){

    }
}

 java.util.Random:随机数生成器
 *
 * 构造方法
 * Random()
 *           创建一个新的随机数生成器。
 *           空参构造:通过这个构造:调用nextInt():  获取int类型的范围内的随机数
 *                                 调用nextInt(int n):0-n之间随机数
 *
 *                             每一次产生的随机不相同!
 * Random(long seed):
 *          创建一个随机数生成器: 传递seed(初始种子)
 *                  调用nextInt():  获取int类型的范围内的随机数
 *  *                                 调用nextInt(int n):0-n之间随机数
 *
 *                      产生随机相同

public class RandomDemo {
    public static void main(String[] args) {

        //创建一个随机数生成器对象
        //有参构造
      //  Random random = new Random(1111) ;
        //无参构造:每次产生随机不相同
        Random random = new Random() ;

        //10个数
        for(int x = 0 ;x < 10 ; x ++){
//            int number = random.nextInt(); //获取int类型范围内的随机数
            int number = random.nextInt(30) +1; //0-n之间随机数:不包括n
            System.out.println(number);
        }
    }
}

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
        *          复制数组操作:
        *                  参数1:原数组,
        *                  参数2:从原数组的某个位置开始
        *                  参数3:目标数组
        *                  参数4:目标数组的目标位置
        *                  参数5:复制的长度*/

public class SystemDemo2 {
    public static void main(String[] args) {

        //从arr1中复制一部分元素到arr2中
        //有两个数组,静态初始化
        int[] arr1  = {11,22,33,44,55} ;
        int[] arr2  = {1,2,3,4,5,6,7,8,9} ;

        System.out.println("复制之前:");
        //Arrays的toString(数组)
        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));

        System.out.println("-------------------------------");
        System.arraycopy(arr1,2,arr2,4,3);
        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));


    }
}

/*
*
* Arrays的toString方法源码:
* public static String toString(int[] a) {
        if (a == null)
            return "null";
        int iMax = a.length - 1;   //最大索引值 :arr1.length-1
        if (iMax == -1)
            return "[]";

        StringBuilder b = new StringBuilder(); //单线程程序中使用StringBuilder
        b.append('[');    //"["
        for (int i = 0; ; i++) {   //遍历arr1数组
            b.append(a[i]);   // 将所有元素追加进来
            if (i == iMax) //当前角标取到 最大索引值
                return b.append(']').toString();  //追加"]" 转换String
            b.append(", ");  //如果没有取到最大索引值,中间的元素 追加", "
        }
    }
* */

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值