JavaSE总复习基础知识大全

在这里插入图片描述

修饰符

权限修饰符的访问权限

在这里插入图片描述

状态修饰符
final
final(最终态)
    1. 可以修饰成员方法,成员变量,类
    2.final修饰过的字段不可以被再次赋值
    public class son(){
        public final int age=30;
        public void test(){
            age=100 //如果再次给age赋值,系统就会报错,因为age已经被final修饰过了,常量是不可以被改变的
        }
    }
    3.final修饰方法,表明该方式是最终方法,不能被重写
    4.final修饰变量,表明该变量是常量,不能被赋值
    5.final修饰类,表明该类是最终类,不能被继承
static(静态)
    修饰的特点:
	1.被类的所有对象共享
        public class Zi  {
    public static String university;
    public void show(){
        System.out.println(university);
    }
}
    2.可以通过类名调用
        public class Test {
    public static void main(String[] args) {

        Zi.university="清华大学";
        Zi z1 = new Zi();
        Zi z2 = new Zi();
        z1.show();
        z2.show();
    }
}

多态

多态的形式
  • 抽象类多态
  • 接口多态
  • 具体类多态
条件
  • 存在继承/实现关系

  • 有方法的重写

  • 有父类引用指向子类对象

    Animal ani=new Cat();
    
成员变量的访问特点
  • 成员变量:编译看左边,执行看右边
  • 成员方法:编译看左边,执行看右边

存在差异的原因

  • 方法可以重载,而成员变量不可以重载
好处/弊端
  • 好处:提高了程序的扩展性
    • 具体实现:定义方法时,使用父类作为参数,在使用时,使用具体的子类型操作
  • 弊端:不用使用子类特有的功能

抽象类

  • 抽象类不能实例化,可以参照多态的方式实例化

    Animals ani=new Cat();
    
  • 抽象类中可以有非抽象方法,也可以有抽象方法,也可以有字段

  • 抽象类中可以有构造方法,作用

  • 用于子类访问父类数据的初始化

  • 抽象类的子类

    • 要么重写抽象类中所有的抽象方法**[限定子类必须完成某些动作]**
    • 要么是抽象类

接口

接口特点
  • interface修饰接口

    public interface Fu(){}
    
  • implements接受接口

    public class Zi implements Fu(){}
    
  • 接口不能实例化,但可以参照多态的方法实例化对象

  • 接口实现类条件

    • 子类重写接口中所有的抽象方法
    • 子类为抽象类,但是下一个非抽象的子类最终还是要重写接口中所有的抽象方法
接口中成员特点
  • 成员变量只能是常量

    int a=30;
    //其实系统默认:  public final int a=30;
    
  • 成员方法只能是抽象方法

    void test();
    //其实默认是: public abstract void test();
    
  • 接口中没有构造方法(主要是对行为进行抽象的,是没有具体实现的)

接口和接口的关系
  • 继承关系 可以单继承,也可以多继承
抽象类与接口的区别
  • 抽象类是对事物的抽象,而接口是对行为的抽象
小例子

在这里插入图片描述

内部类

  • 内部类可以直接访问外部类的成员[包括私有!!!]

  • 外部类访问内部成员把必须创建对象

    public class Cat(){
        
        private int age=10;
        
        public class Dog(){
            public void test(){
                System.out.print(age);
            }
        }
        Dog dog=new Dog();//创建对象,才可访问内部类
        dog.test();
    }
    

System常用方法

  • System.exit(0);

    • 终止当前正在运行的Java虚拟机,非零表示异常终止,0表示正常终止
  • System.currentTimeMillis();

    • //返回当前时间,与1970年之前相差的毫秒值
      
    • 常用法

    • long begin =System.currentTimeMillis();
      for(int i=0;i<100;i++){}
      long end=System.currentTimeMillis();
      System.out.print(end-bigin);{{
      

看方法的源码

  • 选中方法,按下 Ctrl + B

Object类

  • toString()

    //Zi类
    public class Zi  {
        String name;
        int age;
    
        public Zi(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Zi{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
    }
    //测试类
    public class Test {
        public static void main(String[] args) {
    
            Zi zi = new Zi("连杰",19);
            System.out.println(zi.toString());
            System.out.println(zi);
        }
    }
    
  • equals()可以比较两个对象里面的值是否相同(需要重写,可自动生成)

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
    
            Zi zi = (Zi) o;
    
            if (age != zi.age) return false;
            if (p != zi.p) return false;
            return name != null ? name.equals(zi.name) : zi.name == null;
        }
    

    基本类型的包装类

    //简单实用方法,valueOf里面只能为数字字符,或数字,不能为被的"abc"   
    Integer valueOf =  Integer.valueOf("123");        
    System.out.println(valueOf);
    

int/String之间的相互转换

        //把int类型转换为String类型
        int number=100;
        String s=String.valueOf(number);
        System.out.println(s);
        System.out.println("------");
        //String类型转换为int类型
        int i=Integer.parseInt(s);
        System.out.println(i);

自动装箱和拆箱

  • 装箱:把基本数据类型转换为对应的包装类类型

  • 拆箱:把包装类类型转换为对应的基本数据类型

    Integer i=100;//自动装箱
    i+=200;//先后经历了(自动拆箱和自动装箱)
    

只要是对象,在使用前就要判断不为null的判断

Data类基本用法

  • 用法一:不带参数,显示当前时间

            Date date = new Date();
            System.out.println(date);
    //      Sun Apr 24 15:20:08 CST 2022   CST(中国标准时间)
    
  • 用法二:带参数(long类型):显示的是从1970年0时0分0秒经过Long时间后的时间

            long s=1000*60*60;
            Date date = new Date(s);
            System.out.println(date);
    //     Thu Jan 01 09:00:00 CST 1970  (注意:这里显示的是中国的时间,存在时区差异,所以这里是9时)
    
  • 两个方法 gettime/settime

  •     //gettime
        Date d= new Date();
        System.out.println(d.getTime());
    //输出:1650785643191  从1970 0 0 0  到现在时间经历的毫秒数
    
           //settime
            Date d= new Date();
            long s=3600*1000;
            d.setTime(s);
            System.out.println(d);
    //输出:Thu Jan 01 09:00:00 CST 1970(存在时区差异)
    

SimpleDateFormat

  • 是一个类,区域设计敏感的方式格式化和解析日期
  • 常用的模式格式字母的对应如下关系:
    • 年 y
    • 月 M
    • 日 d
    • 时 H
    • 分 m
    • 秒 s
  • 从Date到String format
 
        Date d= new Date();
        SimpleDateFormat sdf = new SimpleDateFormat();
        String s=sdf.format(d);
        System.out.println(s);
//22-4-24 下午5:06  默认的格式

//根据模式格式字母自己设计
        Date d= new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日_HH:mm:ss");
        String s=sdf.format(d);
        System.out.println(s);
//2022年04月24日_17:21:18
  • 从String到Date parse
        String  s="2022年4月24号 17:25:36";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd号 HH:mm:ss");
        Date date=sdf.parse(s);
        System.out.println(date);
//输出:Sun Apr 24 17:25:36 CST 2022

工具类创建时注意事项

  • 构造方法私有(外界就无法构造对象)

  • public class Run(){
        private Run(){}//构造方法私有,外界无法创建对象
    }
    
  • 成员方法静态(直接通过类.方法名就可以使用)

Calendar

简单使用方法 Calendar.get() 返回给定日历字段的值
        Calendar c=Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+date+"日");
常用方法 add(int filed ,int count)
   //当前  2022 2 24 
		Calendar c=Calendar.getInstance();
//add使用方法  可以对日期修改 (加减都可以)
        c.add(Calendar.YEAR,-19);
        c.add(Calendar.DATE,3);

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;//小细节  默认月是从0开始的 所以和实际的会相差1
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+date+"日");
//输出;   2003 4 27 
set( ) 可以自己设定 年 月 日等信息
        Calendar c=Calendar.getInstance();
        c.set(2003,4,27);
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);//注意,这个设定的月份是多少就是多少,不用在+1了
        int date = c.get(Calendar.DATE);
        System.out.println(year+"年"+month+"月"+date+"日");
//输出:  2003年4月27日
利用Calendar判断某年的2月份有多少天
package com.extend;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) throws ParseException {

        Scanner sc = new Scanner(System.in);
        System.out.print("请输入年份:");
        int year=sc.nextInt();
        Calendar c=Calendar.getInstance();
        c.set(year,2,1);//设置为2,因为系统是从0开始的,所以设置2系统认为的是3:
        c.add(Calendar.DATE,-1);//3月份的第一天减1天就是二月份的最后一天了
        int days=c.get(Calendar.DATE);//接受二月份二点最后一天
        System.out.println(year+"年"+"二月份有"+days+"天");
    }
}

异常[Throwable]

  1. Error
  2. Exception
    1. RuntimeEcxeption(编译期不检查,出现问题后需要我们回来修改代码)
    2. 非RuntimeException(编译期就必须处理,否则无法通过编译,不能正常运行)
  • Throwable中三个常用的方法

                e.printStackTrace();//常用,显示的信息最全
                e.toString();
                e.getMessage();
    
  • 异常分为两大类

    • 编译时异常:(受检异常)要做显示处理(try catch)
    • 运行时异常:(非受检异常)

在这里插入图片描述

  • //自定义异常
    //1.继承Exception
    //2.构造有参和无参构造方法
    public class SourceException extends Exception{
        public SourceException() {
        }
    
        public SourceException(String message) {
            super(message);
        }
    }
    -------------------------------------------------------------------------
    public class Teacher {
        public void test(int score) throws SourceException {//非运行时异常需要throws
            if(score<0||score>100){
                //自定义异常格式  throw new 自定义异常的类名(自定义输入异常信息)
                throw new SourceException("给出的分数有误!再思考一下!!!");
            }else {
                System.out.println("分数合理");
            }
        }
    }
    -------------------------------------------------------------------------
    public class Test {
        public static void main(String[] args) throws SourceException {//非运行时异常需要throws
    
            Teacher tea = new Teacher();
            Scanner sc = new Scanner(System.in);
            int score=sc.nextInt();
             tea.test(score);
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_x_330

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值