JAVA基础一大堆0801抽象类+内部类局部类+异常

抽象类(只有方法名,没有方法体)abstract

    有抽象方法就是抽象类,抽象类不一定有抽象方法。抽象类无法创建对象。   
    父类有抽象方法,则父类必定为抽象类,子类中必须实现父类中的抽象方法。
    如果掉用的父类里有相同的方法(非抽象方法),则用父类的类建立子类的对象后,
    调用子类的方法,需要进行强制类型装换,将父类转换为子类;如果父类中只有抽象方法,则直接调用即可
    package day0801up;

    //父类abstract抽象类
    public abstract class Animal {
    //抽象方法,无方法体
        public abstract void voice();
    }
        public void voice(String s){
        System.out.println("动物叫");
    }
    //子类
    package day0801up;

    public class  Dog extends Animal{
    public void voice() {
            System.out.println("wangwangwang");
        }
    public void voice(String s){
        System.out.println("动物叫");
        }
    }
    //测试类
    package day0801up;

    public class Text {
    public static void main(String[] args){
        Animal wangcai=new Dog();
        wangcai.voice();
        if (wangcai instanceof Dog) {
            ((Dog)wangcai).voice("看看到底是打印什么");
            }
        }
    }

这里写图片描述

内部类 局部类

内部类:类内部的类。。。。
内部类是指对象包含的类
局部类: 在方法体中写的类
只能在方法中创建对象

    package InnerClass;

public class Student {
//  private int age;
    private String name;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

        public void study(){

        //局部类
        class Book{
            String auther;
            public void read(){
                System.out.println("读书");
            }
        }
        Book book=new Book();//方法内部中的类,只能在方法中定义对象
        book.read();
        System.out.println("aaaa");
    }


    //内部类
    class Pen{
        String color;
        String type;
        //内部类调用 外部类的属性时,可是使用 “ 外部类.this.属性”  的方法,且在主方法执行的时候需要执行属性。
        public void write(){
            System.out.println(Student.this.name+"写东西");
        }
        public String getColor() {
            return color;
        }
        public void setColor(String color) {
            this.color = color;
        }
    }
}
        //测试类

    package InnerClass;

    import InnerClass.Student.Pen;

    public class Test {
    public static void main(String[] args){
        Student xiaoming=new Student();
        //此处设置了名字,write()才能调用student中的属性名字,若此处不设置则显示null。
        xiaoming.setName("zhangsan");
        xiaoming.study();
        //因为是内部类,所以需要导包  ,快捷键:  ctrl+shift+o
        Pen pen=xiaoming.new Pen();
        pen.setColor("蓝色");
        pen.write();
        System.out.println(pen.getColor());
    }
}

这里写图片描述

常用的类

正则表达式(Matcher+Pattern)

package day0801down;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CommonClass {

    public static void main(String[] args) {
        //Pattern
        //手机号13 14 15 17 18+随机9位数 
        Pattern p = Pattern.compile("^1(3|4|5|7|8)\\d{9}$");//此处俩次\\相当于平常的一次\
        Matcher m = p.matcher("123456789");
        boolean b = m.matches();
        System.out.println(b);
        //身份证号18位,最后一位可能为x或者X;
        Pattern p1 = Pattern.compile("^(\\p{Digit}{18})|(\\p{Digit}{17}(x|X))$");
        Matcher m1 = p1.matcher("12345678912345678x");
        boolean b1 = m1.matches();
        System.out.println(b1);

        //邮箱xxxx@xxx.com|.cn|.net
        Pattern p2 = Pattern.compile("^\\w{4}@\\w{3}((.com)|(.cn)|(.net))$");
        Matcher m2 = p2.matcher("456w@163.com");
        boolean b2 = m2.matches();
        System.out.println(b2);
    }

}

这里写图片描述

Date+Calendar+SimpleDateFormat格式化输出

package day0801down;

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


public class Text {

    public static void main(String[] args) {
        //常用的类Date
        Date date=new Date();//导包,快捷键:ctrl+shift+o。
        Date date2=new Date();//新建Date类型对象date2
        System.out.println(date.toString());
        System.out.println(date.getTime());
        System.out.println(date.after(date2));
        System.out.println(date.before(date2));
        System.out.println(date.equals(date2));


        //常用的类Calendar
        Calendar now=Calendar.getInstance();
        //now.set(Calendar.DAY_OF_YEAR, now.get(Calendar.DAY_OF_YEAR)+50);把当前日期+50天设定为当前日期

        System.out.println(now.get(Calendar.YEAR)+"年");
        System.out.println(now.get(Calendar.MONTH)+1+"月");//月份是从0开始算的,所以要+1
        System.out.println(now.get(Calendar.DAY_OF_MONTH));

        //SimpleDateFormat格式化输出
        SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日   HH:mm:ss");
        String time=format.format(now.getTime());//将一个 Date 格式化为日期/时间字符串
        System.out.println(time);
        //将字符串转换为秒(自方法规定的时间开始)
        String time1="2015年09月20日   16:06:27";
        try {
            Date date1=format.parse(time1);//parse返回值类型是Date
            System.out.println(date1.getTime());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

这里写图片描述

异常

分为两种
Error:不可捕获
Exception:可捕获异常,分为Runtime Exception和非Runtime Exception

package day0801down;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Abnormal {
    //抛出异常throws,可以在main(String[] args)后面抛出异常throws FileNotFoundException,IOException
    //这样的话主函数中就不必加try/catch了╮(╯▽╰)╭
        public static void main(String[] args) {
            File file=new File("d://11.txt");
            try {
                FileInputStream fis=new FileInputStream(file);
                fis.read();
            //选择try/catch异常后运行catch部分
            } catch (FileNotFoundException e) {
                //捕获异常后的处理
            System.out.println("这个文件找不到");
                e.printStackTrace();
            }catch (IOException e) {//这个报错范围比上面大,所以放在下面
                e.printStackTrace();
            }finally{
                //必须运行,不管是否捕获异常
                System.out.println("处理完毕");
            }
            System.out.println("程序运行正常");
        }   
}

这里写图片描述

自定义异常

package thro;

public class Student {
    private int score;
    public int getScore() {
        return score;
    }
    public void setScore(int score)throws FailScores {
        if(score<60)
        {
            throw new FailScores();
        }
        this.score = score;
    }

}

package thro;
//自定义FailScores类
public class FailScores extends Exception{
    public FailScores(){
        super("不及格");
    }
   @Override
   public void printStackTrace() {
       System.err.println("成绩不理想");
    super.printStackTrace();
   }
}

package thro;

public class TextThrows {
    public static void main(String[] args){
        System.out.println("程序开始");
        Student xiaoming=new Student();
        try {
            xiaoming.setScore(59);
        } catch (FailScores e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("程序结束");
    }

}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值