b站黑马程序员java视频学习笔记06

十、接口

1.接口概述

接口就是一种公共的规范标准,只要复合规范标准,大家都可以通用

Java中的接口更多的体现在对行为的抽象

2.接口的特点

b站黑马程序员java视频学习笔记06_第1张图片

3.接口成员的特点

成员变量:只能是常量

默认修饰符:public static final

b站黑马程序员java视频学习笔记06_第2张图片

案例——采用抽象类和接口来实现

// 接口
package com.company;

public interface Jumpping {
    public abstract void jump();
}

//Aniaml.java
package com.company;

public abstract class Animal {
    private String name;
    private int age;

    public Animal(){

    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
    public abstract void eat();
}
// Cat.java
package com.company;

public class Cat extends Animal implements Jumpping{
    public Cat() {
    }

    public Cat(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    @Override
    public void jump() {
        System.out.println("猫可以跳高了");
    }
}
// AnimalDemo.java
package com.company;

/*
    测试类
 */
public class AnimalDemo {
    public static void main(String[] args) {
        Jumpping j = new Cat();
        j.jump();
        
        Animal a = new Cat();
        a.setName("加菲");
        a.setAge(5);
        System.out.println(a.getName() + "," + a.getAge());
        a.eat();

        a = new Cat("加菲", 5);
        System.out.println(a.getName() + "," + a.getAge());
        a.eat();
        
        // 主要还是用这种方法
        Cat c = new Cat();
        c.setName("加菲");
        c.setAge(5);
        System.out.println(a.getName() + "," + a.getAge());
        a.eat();
        c.jump();

    }
}

4.类和接口的关系

b站黑马程序员java视频学习笔记06_第3张图片

5.抽象类和接口的区别

语法层面的区别
b站黑马程序员java视频学习笔记06_第4张图片

设计概念区别

在这里插入图片描述

十一、形参和返回值

1、类名作为形参返回值

  • 方法的形参是类名,其实需要的是该类的对象
  • 方法的返回值是类名,其实返回的是该类的对象

2、接口名作为形参返回值

  • 方法的形参是接口名,其实需要的是该接口的实现类对象
  • 方法的返回值是接口名,其实返回的是该接口的实现类对象

3、内部类

内部类:就是在一个类中定义一个类。

访问:

  • 内部类可以直接访问外部类的成员,包括私有
  • 外部类要访问内部类的成员,必须创建对象

1、Math

Math包含执行基本数字运算的方法

常用方法

b站黑马程序员java视频学习笔记06_第5张图片

2、System

System包含几个有用的类字段和方法,它不能被实例化
b站黑马程序员java视频学习笔记06_第6张图片

3、Object

Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类。
b站黑马程序员java视频学习笔记06_第7张图片

4、Arrays

1、冒泡排序

如果有n个数据进行排序,总共需要比较n-1次
每一次比较完毕,下一次的比较就会少一个数据参与
package com.company;
/*
冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,一次对所有的数据进行操作,直至所有数据按要求完成排序
*/

public class bubble_sort {
    public static void main(String[] args) {
        // 定义一个数组
        int[] arr = {24, 69, 80, 57, 13};
        System.out.println("排序前:" + arrayToString(arr));

        for(int x=0;x<arr.length-1;x++){
            for(int i=0;i<arr.length-1-x;i++){
                if(arr[i]>arr[i+1]){
                    int temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;
                }
            }
        }
        System.out.println("排序后:"+arrayToString(arr));
    }

    private static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i= 0;i<arr.length;i++){
            if(i==arr.length-1){
                sb.append(arr[i]);
            }else {
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}

2、arrays类

b站黑马程序员java视频学习笔记06_第8张图片

5、基本类型包装类

1、概述

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换

b站黑马程序员java视频学习笔记06_第9张图片

2、integer

// 返回表示指定的int值得Integer实例
Integer i1 = Integer.valueOf(100);
System.out.println(i1);

// 返回一个保存指定值得Integer对象String
Integer i2 = Integer.valueOf("100");
System.out.println(i2);

3、int和string相互转换

int——>String
public static String valueOf(int i):返回int参数得字符串表示形式,该方法是String类中的方法

String——>int
public static parselnt(String s):将字符串解析为int类型,该方法是Integer类中的方法

4、装箱与拆箱

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

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

Integer i = 100;   // 自动装箱
i += 200;    // i=i+200;i+200自动拆箱;i=i+200是自动装箱

注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null

我们推荐的是:只要是对象,在使用前就必须进行不为null的判断

6、日期类

1、Date类

import java.util.Date;

1、构造方法——创建日期对象:
public Date():分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date):分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数

2、常用方法:
public long getTime()	# 获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值
public void setTime(long time)	# 设置时间,给的是毫秒值

2、SimpleDateFormat类概述

y 年   M 月    d 日   H 时   m  分   s  秒

1、构造方法
public SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式

public SimpleDataFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式

2、格式化和解析日期
格式化(Date-->String)
public final String format(Date date):将日期格式化成日期/时间字符串
解析(String——>Date)
public Date parse(String source):从给定字符串的开始解析文本以生成日期

例子代码

// 格式化:Date---->String
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);

// 解析:String---->Date
String ss ="2048-08-09 11:11:11";
SimpleDateFormat sdf2 = new SimpleDateFormmat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(ss);
System.out.println(dd);

3、Calendar类

Calendar提供一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化
Calendar rightNow = Calendar.getInstance();

Calendar.YEAR
Calendar.MONTH  (+1)
Calendar.DATE

常用方法:
public int get(int field)	# 返回给定日历字段的值
public abstract void add(int field, int amount)	# 根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year, int month, int date)	# 设置当前日历的年月日

案例:获取任意一年的二月有多少天

public class CalendarTest{
	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);
    
    // 3月1日往前推一天,就是2月最后一天
    c.add(Calendar.DATE, -1);
    
    // 获取这一天输出即可
	int date = c.get(Calendar.DATE);
	
	System.out.println(year + "年的2月份有" + date + "天");
	}
}

7、异常

1、异常:程序出现了不正常的情况
b站黑马程序员java视频学习笔记06_第10张图片

2、JVM的默认处理方案

  • 把异常的名称、异常原因及异常出现的位置等信息输出在了控制台
  • 程序停止执行

3、异常处理

b站黑马程序员java视频学习笔记06_第11张图片
b站黑马程序员java视频学习笔记06_第12张图片

4、Throwable的成员方法

b站黑马程序员java视频学习笔记06_第13张图片

5、自定义异常

b站黑马程序员java视频学习笔记06_第14张图片

6、throws和throw的区别

b站黑马程序员java视频学习笔记06_第15张图片

你可能感兴趣的:(Java,java,学习,jvm)