zoukankan      html  css  js  c++  java
  • 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天
    
    
  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    block的是发送信号的线程,又不是处理槽函数的线程
  • 原文地址:https://www.cnblogs.com/helloLV/p/12506837.html
Copyright © 2011-2022 走看看