接口就是一种公共的规范标准,只要复合规范标准,大家都可以通用
Java中的接口更多的体现在对行为的抽象
成员变量:只能是常量
默认修饰符:public static final
// 接口
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();
}
}
设计概念区别
内部类:就是在一个类中定义一个类。
访问:
1、Math
Math包含执行基本数字运算的方法
常用方法
2、System
3、Object
Object是类层次结构的根,每个类都可以将Object作为超类。所有类都直接或者间接的继承自该类。
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类
5、基本类型包装类
1、概述
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
常用的操作之一:用于基本数据类型与字符串之间的转换
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、异常
2、JVM的默认处理方案
3、异常处理
4、Throwable的成员方法
5、自定义异常
6、throws和throw的区别