• Java学习笔记


    1、ArrayList的学习

    ArrayList构造方法和添加方法

    • public ArrayList() 创建一个空的集合对象
    • public Boolean add(E e) 将指定的元素追加到此集合的末尾
    • public void add(int index,E element) 在此集合的指定位置插入指定元素

    1、

    import java.util.ArrayList;
    
    public class ArrayListDemo01 {
        public static void main(String[] args) {
            ArrayList<String> array = new ArrayList<>();
    
            System.out.println(array.add("hello"));
            array.add(1,"java");
            System.out.println("array:" +array);
        }
    }
    
    

    2、
    -public Boolean remove(Object o):删除指定的元素,返回删除是否成功

    • public E remove(int index):删除指定索引处的元素,返回被删除的元素
    • public E set(int index,E element ):删除指定索引处的元素,返回被修改的元素
    • public E get(int index):返回索引处的元素
    • public int size():返回集合中的元素的个数
    import java.util.ArrayList;
    
    public class ArrayListDemo01 {
        public static void main(String[] args) {
            ArrayList<String> array = new ArrayList<>();
    
    
            array.add("hello");
            array.add("world");
            array.add("java");
    //        array.add(1,"java");
    
            System.out.println(array.set(2,"javaee"));
            System.out.println(array.remove("world"));
            System.out.println(array.get(1));
            System.out.println(array.size());
    
            System.out.println("array"+array);
        }
    }
    
    输出结果:
    java
    true
    javaee
    2
    array[hello, javaee]
    
    
    

    3、遍历

    import java.util.ArrayList;
    
    public class ArrayListDemo02 {
        public static void main(String[] args) {
            ArrayList<String> array = new ArrayList<>();
    
            array.add("hello");
            array.add("world");
            array.add("java");
           /* System.out.println(array.get(0));
            System.out.println(array.get(1));
            System.out.println(array.get(2));*/
    
           for (int i=0;i<array.size();i++){
    //           System.out.println(array.get(i));
               String s = array.get(i);
               System.out.println(s);
           }
        }
    }
    
    输出
    hello
    world
    java
    

    4、ArrayList 存储学生对象并遍历

    import java.util.ArrayList;
    
    public class ArrayListDemo3 {
        public static void main(String[] args) {
            //创建集合对象
            ArrayList<Student> array = new ArrayList<>();
            //创建学生对象
            Student stu1 = new Student("weblv",30);
            Student stu2 = new Student("ljx",23);
    
            //添加学生对象到集合中
            array.add(stu1);
            array.add(stu2);
    
            //遍历集合,采用通用遍历格式实现
            for(int i=0;i<array.size();i++){
                Student s = array.get(i);
                System.out.println(s.getName() + ','+s.getAge());
                
            }
            
            
        }
    }
    输出
    weblv,30
    ljx,23
    
    

    5、ArrayList 存储学生对象并遍历(升级)

    
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class ArrayListDemo04 {
        public static void main(String[] args) {
            ArrayList<Student> array =new ArrayList<Student>();
            //调用方法
           AddStu(array);
           AddStu(array);
           AddStu(array);
           //输出对象
            for (int i=0;i<array.size();i++){
                Student s = array.get(i);
                System.out.println(s.getName() +',' +s.getAge());
    
    
            }
        }
        public static void AddStu(ArrayList<Student> array){
            //键盘录入学生对象所需的数据
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入学生姓名:");
            String name = sc.nextLine();
            System.out.println("请输入学生年龄");
            String age = sc.nextLine();
    
            //创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
            Student s = new Student();
            s.setName(name);
            s.setAge(age);
            //集合中添加学生对象
            array.add(s);
    
        }
    }
    请输入学生姓名:
    hah
    请输入学生年龄
    13
    请输入学生姓名:
    xkx
    请输入学生年龄
    14
    请输入学生姓名:
    adq
    请输入学生年龄
    12
    hah,13
    xkx,14
    adq,12
    

    6、
    Alt+Ins 根据自己需要构造方法

    2、继承

    1、格式:public class 子类名 extends 父类名{}
    2、继承的好处和弊端:

    好处

    • 提高代码复用性(多个类相同的成员可以放到同一个类中)
    • 提高了代码的维护性(方法的代码需要修改,修改一处即可)

    弊端

    • 继承让类之间产生了关系,削弱了子类的独立性
    3、继承中变量的访问特点

    在子类方法中访问一个变量

    • 子类局部范围找——>子类成员范围找--->父类成员范围找(如果都没有,则报错)
    4、super关键字
    public class Zi extends Fu {
        public int age = 20;
        public void show(){
            int age = 30;
            System.out.println(age);
            //访问本类的成员变量age
            System.out.println(this.age);
            //访问父类的成员变量age
            System.out.println(super.age);
        }
    }
    
    
    
    5、继承中构造方法的访问特点

    子类中所有的构造方法默认都会访问父类中无参的构造方法

    • 子类会继承父类中的数据,可能还会使用父类的数据,所以子类初始化之前,一定先完成父类数据的初始化
    • 每一个子类构造方法的第一条语句默认都是super

    如果父类中没有无参构造方法,只有带参构造方法,怎么办?

    • 通过使用super关键字显示的调用父类的带参构造方法
    • 在父类中自己提供一个无参的构造方法(推荐
    6、继承中访问成员方法的访问特点

    通过子类对象访问一个方法、

    • 子类成员范围找
    • 父类成员范围找
    • 如果都没有则报错
    7、方法重写

    概述:

    • 子类中出现和父类一模一样二点方法声明

    方法重写的应用:

    • 当子类需要父类的功能,而功能主体子类又有自己的内容十,可以重写父类中的方法,这样,既沿袭了父类的功能,有定义了子类特有的功能

    @Override :帮助我们检查方法重写声明的正确性

    • 方法重写注意事项:

    1、私有方法不能被重写(父类的私有成员子类是不能继承的)

    ==子类访问权限不能更低(public > 默认(就是直接void ,没有修饰符) > 私有) ==

    8、Java中继承的注意事项
    • Java类只支持单继承,不支持多继承
    • Java类中支持多层继承
    9、继承实例
    public class Person {
        public String name;
        public String age;
        //无参构造
        public Person() {
        }
        //带参构造
        public Person(String name,String age){
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    }
    
    
    public class Students extends Person{
        public Students(){
        }
        public Students(String name,String age){
            super(name,age); // 继承父类中的带参方法
    
        }
        public void Study(){
            System.out.println("我是学生,我爱学习!");
        }
    }
    
    

    3、修饰符

    1、包

    1、概述:就是文件夹,对类进行分类管理
    2、定义格式 : package 包名.(多级包用.分开)

    2、导包

    使用不同包下的类时,简化带包的操作,使用import将其他包导入,并使用其他包下的类

    • 格式:import 包名
    3、状态修饰符
    • final(最终态):可修饰成员方法,成员变量,类

    • 特点:

      1、修饰方法:表明该方法是最终方法,不能被重写

      2、修饰变量:表明该变量是常量,不能被再次赋值

      3、修饰类:表明该类是最终类,不能被继承

    final修饰局部变量:
    • 变量是基本类型:final修饰指的是基本类型数据值不能发生改变

    • 变量是引用类型:final修饰指的是引用类型的地址值不能发生改变,但是地址值里面的内容是可以发生改变的

    • static(静态):可修饰成员方法,成员变量

    • 特点:

      1、被类的所有对象共享(这也是我们判断是否使用静态变量关键字的条件)

      2、可用通过类名调用,也能使用对象名进行调用(推荐使用类名调用)

    public class Student01 {
        public String name;
        public int age ;
        public static String university; //
    
        public void show(){
            System.out.println(name + "," + age + "," + university);
        }
    
    }
    
    
    public class staticDemo {
        public static void main(String[] args) {
            Student01.university = "厦门大学";//直接用类中的参数进行赋值,直接通过类名访问,使得默认值为厦门大学
    
            Student01 s1 = new Student01();
            s1.name="lwb";
            s1.age=10;
            //s1.university="厦门大学";
            s1.show();
    
            Student01 s2 =new Student01();
            s2.name = "ljx";
            s2.age = 11;
            s2.show();
        }
    }
    输出
    lwb,10,厦门大学
    ljx,11,厦门大学
    
    
    static 访问特点

    非静态的成员方法:

    • 能访问静态的成员变量
    • 能访问非静态的成员变量
    • 能访问静态的成员方法
    • 能访问静态的成员方法

    静态的成员方法:

    • 能访问静态的成员变量
    • 能访问静态的成员方法

    静态成员只能访问静态成员

    4、多态

    1、同一个对象,在不同时刻表现出来的不同形态

    猫 cat = new 猫();
    也可以 动物 Animal = new 猫();

    多态的前提和体现:

    • 有继承/实现关系
    • 有方法重写
    • 有父类引用指向子类对象
    2、多态中成员的访问特点
    package Test01;
    
    public class Animal {
        public int age = 40;
        public void eat(){
            System.out.println("动物吃东西");
        }
    
    }
    
    
    package Test01;
    
    public class Cat extends Animal {
        public int age = 20;
        public int weight = 10;
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
        public void playgame(){
            System.out.println("猫捉迷藏");
        }
    }
    
    
    package Test01;
    
    public class AnimalDemo {
        public static void main(String[] args) {
            Animal a = new Cat();
    
            System.out.println(a.age);
            a.eat();
            //a.playgame();  会报错,因为Animal中没有该方法
    
    
        }
    }
    输出
    40
    猫吃鱼
    
    • 成员方法:编译看左边,执行看右边
    • 成员变量:编译看左边,执行看左边

    因为成员方法有重写,而成员变量没有

    3、多态的好处和弊端
    • 好处:提高了程序的拓展性

    具体体现:定义方法时,使用父类作为参数,将来在使用的时候,使用具体子类参与操作(多态只能访问共有的功能)

    • 弊端: 泵使用子类的特有功能
    4、多态的转型
    • 向上转型
      从子到父
      父类引用指向子类对象
    • 向下转型
      从父到子
      父类引用转为子类对象
    package Test01;
    
    public class AnimalDemo {
        public static void main(String[] args) {
            //多态
            Animal a = new Cat(); //向上转型
            a.eat();
            ((Cat) a).playgame();//向下转型
    
    
    
        }
    }
    
    输出
    猫吃鱼
    猫捉迷藏
    
    

    5、抽象类

    1、概述

    一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类

    package Test_Abstract;
    
    public abstract class Animal {//定义抽象类
        public abstract void eat();//定义抽象方法
    }
    
    
    2、抽象类的特点
    • 抽象类和抽象方法必须使用abstract关键字修饰

    public **abstract** clss 类名{}
    public **abstract** void 方法名();
    

    • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

    • 抽象类不能直接实例化

      ++可以参照多态的方式,通过子类对象实例化,这叫抽象类多态++

    • 抽象类的子类


    要么重写抽象类中的所有抽象方法
    要么是抽象类
    

    3、抽象类的成员特点
    • 成员变量(可以是变量,也可以是常量)
    • 构造方法(有构造方法,但是不能实例化,构造方法用于子类访问父类数据的初始化)
    • 成员方法(可以有抽象方法:限定子类必须完成某些动作;也可以有非抽象方法:提高代码的复用性)

    6、接口

    1、概述:接口就是一种公用的规范,Java中的接口更多体现在对行为的抽象
    2、特点
    • 接口用关键字interface修饰

    public interface 接口名{}

    • 类实现接口用implements表示

    public class 类名 implements 接口名{}

    • 接口不能实例化
    1. 接口参照多态的方式,通过实现类对象实例化,这叫接口多态
    2. 多态的形式:抽象类多态接口多态
    3. 多态的前提:有几成或者实现关系;有方法重写;有父类(类/接口)引用指向(子/实现)类对象
    • 接口的实现类

    要么重写接口中的所有抽象方法
    要么是抽象类

    3、接口的成员特点
    • 成员变量
    1. 只能是常量
    2. 默认修饰符:public static final
    • 构造方法
    1. 接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在的
    2. 一个类如果没有父类,默认继承Object
    • 成员方法
    1. 只能是抽象方法
    2. 默认修饰符:public abstract
    4、类和接口的关系
    • 类和类的关系

    继承关系,只能单继承,但是可以多层继承

    • 类和接口的关系

    实现关系,可以单实现,也可以多实现,还可以继承一个类的同时实现多个接口

    • 接口和接口的关系

    继承关系,可以单继承,也可以多继承

    5、抽象类和接口的区别
    • 成员区别
    1. 抽象类---->常量、变量;有构造方法,有抽象方法。也有非抽象方法
    2. 接口------>常量;抽象方法
    • 关系区别
    1. 类与类--------->继承、单继承
    2. 类与接口------->实现、可以单实现,也可以多实现
    3. 接口与接口----->继承,单继承,多继承
    • 设计理念的区别
    1. 抽象类---->对类抽象,包括属性、行为
    2. 接口------>对行为抽象,主要是行为
    /*
    门与报警器
    */
    public abstract interface Jumpping {
        public abstract void Jump();
    }
    
    public  interface Alram{
        void alarm;
    }
    public abstract class Door(){
        public abstract void open();
        public abstract void close();
    
    }
    public class AkarnDoor extends Door implements Alarm{
        public void open(){//重写方法
            //...
        }
        public void close(){//重写方法
            //...
        }
        public void alram(){//重写方法
            //...
        }
    }
    
    6、类名作为形参和返回值
    • 方法的形参是类名,其实需要的是该类的对象
    • 方法的返回值是类名,其实返回的是该类的对象(需要进行声明对象)
    7、接口名作为形参和返回值
    • 方法的形参是类名,其实需要的是该接口的对象
    • 方法的返回值是类名,其实返回的是该接口的对象(需要进行声明对象)

    7、内部类

    1、格式
    public class 类名{
        修饰符 class 类名{
            
        }
    }
    
    2、访问特点
    • 内部类可以直接访问外部类的成员,包括私有
    • 外部类要访问内部类的成员,必须创建对象
    3、成员内部类

    按照内部类在类中定义的位置不同,可以分为一下两种形式

    • 在类的成员位置:成员内部类
    • 在类的局部位置:局部内部类
      成员内部类,外界如何创建对象使用呢?
    • 格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象
    • 范例:Outer.Inner oi = new Outer().new Inner(;
    package InnerOutter;
    
    public class Outer {
        private int num = 10;
        public class Inner{
            private void show(){
                System.out.println(num);
            }
    
    
    
        }
        public void method(){//通过外部类调用内部类方法来实现
            Inner i = new Inner();
            i.show();
    
        }
    }
    
    
    -----------------------------
    package InnerOutter;
    
    public class OuterTest {
        public static void main(String[] args) {
          /*  Outer.Inner oi = new Outer().new Inner();
            oi.show();*/
    
        Outer o = new Outer();
          o.method();
    
        }
    }
    输出
    10
    
    4、局部内部类

    局部内部类是在方法中定义的类,所以外界是无法直接访问的,需要在方法内部创建对象并使用该类可以直接访问外部类的成员,也可以访问方法内的局部变量

    package InnerOutter;
    
    public class Outer {
        private int num = 10;
    
        public void method(){//通过外部类调用内部类方法来实现
            int num2 = 20;
            class Inner{
                public void show(){
                    System.out.println(num);
                    System.out.println(num2);
                }
            }
            Inner i = new Inner();
            i.show();
    
        }
    }
    
    ------------------------------------
    package InnerOutter;
    
    public class OuterTest {
        public static void main(String[] args) {
          /*  Outer.Inner oi = new Outer().new Inner();
            oi.show();*/
    
            Outer o = new Outer();
            o.method();
    
        }
    }
    输出
    10
    20
    
    5、匿名内部类(局部内部类特殊形式)
    • 格式
    new 类名或接口名(){
        重写方法;
    }
    

    本质:是一个继承该类或者实现该接口的子类匿名对象

    public interface Inter {
        void show();
    }
    
    -------------------------------
    public class Outer {
    
    
        public void method(){//
            Inter i= new Inter(){
                @Override
                public void show() {
                    System.out.println("匿名内部类");
    
                }
            };
            i.show(); // 调用show方法 
    
            }
    
    
        }
       -------------------- ---------
       package InnerOutter;
    
    public class OuterTest {
        public static void main(String[] args) {
          /*  Outer.Inner oi = new Outer().new Inner();
            oi.show();*/
    
            Outer o = new Outer();
            o.method();
    
        }
    }
    输出
    匿名内部类
    
    
    
    6、匿名内部类在开发中的使用
    package Inner;
    
    public class Cat implements Jumpping {
        @Override
        public void junp() {
            System.out.println("我会跳高");
        }
    }
    ----------------------------------
    package Inner;
    
    public interface Jumpping {
        void junp();
    }
    ====================================
    package Inner;
    
    public class JumppingOperator {
        public void method(Jumpping j){
            j.junp();
        }
    }
    
    --------------------------------
    package Inner;
    
    public class TestDemo {
        public static void main(String[] args) {
            Jumpping j = new Cat();
            j.junp();
            JumppingOperator jo = new JumppingOperator();
            jo.method(j);
    
            jo.method(new Jumpping() {//直接通过接口实例化对象调用匿名对象类,不用每次都新建一个类
                @Override
                public void junp() {
                    System.out.println("我也会跳高了");
                }
            });
        }
    }
    输出
    我会跳高
    我会跳高
    我也会跳高了
    
    

    8、API

    1、Math

    查看文档

    2、System
    package Math;
    
    
    public class Math {
        public static void main(String[] args) {
            System.out.println("开始");
            System.exit(0);//中止当前Java虚拟机,非零表示异常
            System.out.println("结束");
            System.out.println(System.currentTimeMillis());//返回当前时间
        }
    }
    
    
    3、Object类中的toString()方法

    看方法,选中方法,按下crtl+B

    • 建议子类重写object中的toString()方法

    通过Alt+Ins中的toString()重写自动生成

    4、Object类中的equals()方法
    • 建议子类重写object中的equals()方法

    通过Alt+Ins中的equals()重写自动生成,把hashmap()方法删除即可

    5、Integer 类的概述和使用
    • public static Integer valueOf(int i) 返回表示指定的int值的Integer实例
    • public static Integer valueOf(String s) 返回一个保存指定值的Integer对象String
    package Inter;
    
    public class InterDeno {
        public static void main(String[] args) {
            Integer i = Integer.valueOf(100);
            System.out.println(i);
            Integer i1 = Integer.valueOf("100");
            System.out.println(i1);
        }
    
    }
    输出
    100
    100
    
    5、int和String 的相互转化
    • Int----->String

    public static String valueOf​(int i) 静态方法(String中的方法)

    • String------->Int

    public static int parseInt​(String s)静态方法(Integer类中的方法)

    package Inter;
    
    /*
    int和String的转换
    */
    
    
    public class InterDeno {
        public static void main(String[] args) {
            //Int----->String
            //方式1
            int number = 100;
            String s1 = ""+number;
            System.out.println(s1);
            //方式2 public static String valueOf​(int i) 静态方法
            String s2 = String.valueOf(number);
            System.out.println(s2);
            System.out.println("-----------------");
    
    
            //String------->Int
            String s3 ="100";
            //方式一 String----->Integer----->int
            Integer i = Integer.valueOf(s3);
            //public int intValue​()
            int x = i.intValue();
            System.out.println(x);
            //方式2
            //public static int parseInt​(String s)静态方法
            int y = Integer.parseInt(s3);
    
        }
    
    }
    
    
    6、int和String 的相互转化(字符串转换案例)
    package Inter;
    
    import java.util.Arrays;
    
    public class IntegerTest {
        public static void main(String[] args) {
            //定义一个字符串
            String s = "91 27 46 38 50";
            //用空格获取每一个元素放在数组中
            String[] strArray = s.split(" ");
    /*        for (int i= 0;i<strArray.length;i++){
                System.out.println(strArray[i]);
    
            }*/
            //定义一个int数组,把String[]数组中的每一个元素存储到int数组中
            int[] arr = new int[strArray.length];
            for (int i = 0;i<arr.length;i++){
                arr[i] = Integer.parseInt(strArray[i]);
    
            }
            //对数组进行排序
            Arrays.sort(arr);
            //把排序后的int数组中的元素进行拼接得到一个字符串,用StringBuilder实现
            StringBuilder sb = new StringBuilder();
            for (int i = 0;i<arr.length;i++){
                if(i == arr.length-1){
                    sb.append(arr[i]);
                }else {
                    sb.append(arr[i]).append(" ");
                }
    
            }
            String result = sb.toString();
            System.out.println(result);
        }
    
    }
    输出
    27 38 46 50 91
    
    
    
    6、自动拆箱和装箱
    • 装箱:把基本数据类型转换为对应的包装类类型
    Integer i= Integer.valueOf(100);//手动装箱
    Integer ii = 100;//自动装箱
    
    • 拆箱:把包装类类型转化为对应的基本数据类型
    ii = ii.valueOf()+200;//手动装箱
    ii += 200;//自动装箱 和上面语句一样结果
    //i = i+200;i+200自动拆箱;i = i+200;自动装箱
    

    在使用包装类类型的时候,如果做操作,最好先判断是否为null,只要是对象,在使用前就必须进行不为null的判断

    4、Date
    1、SimpleDateFormat
    • y
    • M
    • d
    • H
    • m
    • s
    2、SimpleDateFormat格式化和解析日期
    • 格式化(从Date到String)

    public final String format(Date date):将日期格式化成日期/时间字符串

    • 解析(从String到Date)

    public Date parse(String source):从给定字符串的开始解析文本以生成日期

    package Date;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    
    public class DateDemo {
        public static void main(String[] args) throws ParseException {
            Date d1 = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            String s = sdf.format(d1);
            System.out.println(s);
    
            String s1 = "2020-03-16 11:11:11";
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date p  = sdf1.parse(s1);
            System.out.println(p);
    
    
        }
    }
    输出
    2020年03月16日 16时16分33秒
    Mon Mar 16 11:11:11 CST 2020
    
    
    3、日期工具类案例
    • 需求:定义一个工具类DateUtils,包含两个方法,把日期转换为指定格式的字符串;把字符串解析为指定格式的日期,在测试类中调用实现
    package Date;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateUtils {
        public DateUtils() {
        }
    
        public static String dateToString(Date date, String format){
            SimpleDateFormat sdf = new SimpleDateFormat(format);//按照传入格式创建对象
            String s = sdf.format(date); // 把传入的日期转化成指定格式的字符串
    
            return s;
    
        }
        public static Date stringToDater(String s, String format) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            Date p = sdf.parse(s); //Artl+Enter创建抛出异常
            return p;
    
        }
    }
    
    
    //测试类
    package Date;
    
    import java.text.ParseException;
    import java.util.Date;
    
    
    public class DateDemo {
        public static void main(String[] args) throws ParseException {
            Date d1 = new Date();
            String s1 =DateUtils.dateToString(d1,"yyyy年MM月dd日 HH:mm:ss");
            System.out.println(s1);
    
            String s2= DateUtils.dateToString(d1, "yyyy年MM月dd日");
            System.out.println(s2);
            System.out.println("--------------");
    
            String s = "2012-01-01 12:12:12";
            Date date = DateUtils.stringToDater(s, "yyyy-MM-dd HH:mm:ss");
            System.out.println(date);
    
        }
    }
    
    输出
    2020年03月16日 16:40:00
    2020年03月16日
    --------------
    Sun Jan 01 12:12:12 CST 2012
    
    
    4、Calendar类

    Calendar rightNow = Calendar.getlnstance();getlnstance()获取Calendar对象,其日历字段已使用当前日期和时间初始化

    package Calendar;
    import java.util.Calendar;
    
    public class CalendarDemo {
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();
            int i = c.get(Calendar.YEAR);
            int i1 = c.get(Calendar.MONTH) + 1;
            int i2 = c.get(Calendar.DATE);
            System.out.println(i+"年"+i1+"月");
    
        }
    }
    输出
    2020年3月16日
    
    5、Calendar类中的add,set方法
    package Calendar;
    import java.util.Calendar;
    
    public class CalendarDemo {
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();
            int i = c.get(Calendar.YEAR);
            int i1 = c.get(Calendar.MONTH) + 1;
            int i2 = c.get(Calendar.DATE);
            System.out.println(i+"年"+i1+"月"+i2+"日");
    
            System.out.println("-------------");
            c.add(Calendar.YEAR,-3);// .add(int field,int amount)将指定的时间量加上或减去给定的日历字段
            int k = c.get(Calendar.YEAR);
            int k1 = c.get(Calendar.MONTH) + 1;
            int k2 = c.get(Calendar.DATE);
            System.out.println(k+"年"+k1+"月"+k2+"日");
    
            System.out.println("-------------");
            c.set(2058,11,11);// .set(int year,int month,int day)设置当前的年日月
            int l = c.get(Calendar.YEAR);
            int l1 = c.get(Calendar.MONTH) + 1; //月是从0开始算起的
            int l2 = c.get(Calendar.DATE);
            System.out.println(l+"年"+l1+"月"+l2+"日");
    
        }
    }
    
    输出
    2020年3月16日
    -------------
    2017年3月16日
    -------------
    2058年12月11日
    
    
    5、Calendar类案例分析(计算二月天数)
    package Calendar;
    
    
    import java.util.Calendar;
    import java.util.Scanner;
    
    public class Cal {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你要查询的年份:");
            int year = sc.nextInt();
    
            Calendar c = Calendar.getInstance();
            c.set(year,2,1);
            c.add(Calendar.DATE,-1);
            int date = c.get(Calendar.DATE);
            System.out.println(year+"年的二月份有"+date+"天");
        }
    }
    
    输出
    请输入你要查询的年份:
    2048
    2048年的二月份有29天
    
    
  • 相关阅读:
    奶酪工厂
    P1080 国王游戏(非高精版)
    【洛谷P2150】[NOI2015] 寿司晚宴
    【洛谷P3349】[ZJOI2016]小星星
    【洛谷P5785】[SDOI2012]任务安排
    【模板】严格次短路
    【洛谷P3647】[APIO2014]连珠线
    2021.10.27NOIP模拟总结
    【树形DP】CF1016F Road Projects
    2021CSP-S 总结
  • 原文地址:https://www.cnblogs.com/helloLV/p/12506837.html
Copyright © 2020-2023  润新知