Java学习笔记(3.10)

目录

一、抽象类

概述:

特点:

抽象类的成员特点:

二、接口

概述:

特点:

成员特点:

类和接口的关系:

抽象类和接口的区别:

三、形参和返回值

1、类名作为形参和返回值:

2、抽象类名作为形参和返回值:

3、接口名作为形参和返回值:

四、内部类

内部类访问特点:

内部类的两种形式:

成员内部类:

局部内部类:

匿名内部类:

五、常用API

1、Math

2、System:

3、Object:

4、Arrays

5、基本类型包装

int和String的相互转换

装箱、拆箱:

6、Date类

Date类:

Date();

Date(long date);

public long getTime();

public void setTime(long time);

SimpleDateFormat类

public  SimpleDateFormat();

public  SimpleDateFormat(String pattern);​编辑

格式化(从Date到String)

解析(从String到Date)

Calendar类

返回给定的日历字段

根据日历的规则,将指定的时间添加或减去给定的日历字段

设置当前日历的年月日


一、抽象类

概述:

Java中,一个没有方法体的方法应该被定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

特点:

*抽象类和抽象方法必须使用 abstract 关键字修饰。

          public abstract class 类名{}

          public abstract void 方法名();

*抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类。

*抽象类不能直接实例化。可以参照多态的方式,通过子类对象实例化,这叫抽象类多态。

*抽象类的子类要么重写抽象类中的所有抽象方法,要么写成抽象类。

抽象类的成员特点:

成员变量----可以是变量也可以是常量。

构造方法----有构造方法,但不用于实例化,用于子类访问父类数据的初始化。

成员方法----可以有抽象方法(限定子类必须完成某些动作),也可以有非抽象方法(提高代码复用性)。

二、接口

概述

接口就是一种公共的规范标准,只要符合规范标准,就可以通用。Java中的接口更多体现在对行为的抽象

特点:

*使用 interface关键字修饰:  public  interface  接口名{}

*类实现接口用 implements表示:   public  class  类名  implement  接口名{}

*接口实现实例化要参照多态的方式,通过实现类对象实例化,这叫做接口多态。

      (多态的形式:具体类多态、抽象类多态接口多态

      (多态的前提:有继承或实现关系;有方法重写;有父(类/接口)引用指向子(类/接口)对             象。

*接口类的实现:   重写接口中所有的抽象方法或写一个抽象类。

成员特点:

*成员变量----只能是静态常量,默认修饰符为:public  static  final 

*构造方法----接口没有构造方法,因为接口主要是对行为进行抽象,没有具体的存在。

               ----(一个类如果没有父类,默认继承Object类)

*成员方法----只能是抽象方法,因为默认修饰符为 public  abstract

类和接口的关系:

*类和类:继承关系,只能单继承,但可以多层继承。

*类和接口:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。

*接口和接口:继承关系,可以单继承,也可以多继承。

抽象类和接口的区别:

*成员区别

         抽象类------常量,变量,有构造方法,有抽象方法,也有非抽象方法。

         接口------常量,抽象方法

*类和接口的关系区别

*设计理念区别

         抽象类------对类抽象,包括属性、行为。

         接口------对行为抽象,主要是行为。

三、形参和返回值

1、类名作为形参和返回值:

          方法的形参是类名,其实需要的是该类的对象。

          方法返回值是类名,其实返回的是该类的对象。

2、抽象类名作为形参和返回值:

         方法的形参是抽象类名,其实需要的是该抽象类的子类对象。

         方法返回值是抽象类名,其实返回的是该抽象类的子类对象。

3、接口名作为形参和返回值:

         方法的形参是接口名,其实需要的是该接口的实现类对象。

         方法返回值是接口名,其实返回的是该接口的实现类对象。

四、内部类

定义:在一个类中定义一个类。(如:在类A内部定义一个类B,类B就被称为内部类。

package myInner;

public class Inner {
	public class Outer{
		
	}
}

内部类访问特点:

内部类可以直接访问外部类的成员,包括私有。

外部类要访问内部类的成员,必须创建对象。

内部类的两种形式:

在类的成员位置-----成员内部类

在类的局部位置----局部内部类

成员内部类:

外界创建对象格式:外部类名.内部类名  对象名=外部类对象.内部类对象;

如:Outer.Inner oi=new Outer().new Inner();

局部内部类:

局部内部类是在方法中定义的类,所以外界是无法直接访使用的,需要在方法内部创建对象并使用。

该类可以直接访问外部类的成员,也可以访问方法内的局部变量。

匿名内部类:

前提----存在一个类或者接口,类可以是具体类也可以是抽象类。

格式----

new 类名或接口名 (){

        重写方法;

};

本质:一个继承了该类或实现了该接口的子类匿名对象。

利用本质可以实现方法的调用:

1、

new 类名或接口名 (){

        重写方法;

}.方法;

2、

类名或接口名  变量名 = new 类名或接口名 (){

        重写方法;

};

变量名.方法;

五、常用API

1、Math

2、System:

不能被实例化。

3、Object:

4、Arrays

5、基本类型包装

Integer:

int类型的最大值------Integer.MAX_VALUE

int类型的最小值------Integer.MIN_VALUE

package myInteger;

public class IntegerDemo {
public static void main(String[] args) {
	Integer i1=new Integer("20");
	System.out.println(i1);
	//过时了
	Integer i2=new Integer(25);
	System.out.println(i2);
	//过时
	Integer i3=Integer.valueOf("30");
	System.out.println(i3);
    //输出int类型数据----30
	Integer i4=Integer.valueOf(35);
	System.out.println(i4);
	//输出int类型数据----35
}
}
int和String的相互转换
package myInteger;

public class IntegerAndString {

	public static void main(String[] args) {
		//int--->String
		int i1=10;
		String s1="";
		s1+=i1;
		System.out.println(s1);
		
		int i2=20;
		String s2=String.valueOf(i2);
		System.out.println(s2);
		
		//String--->int
		//String--->Integer--->int通过Integer作为中间量进行转换
		String s3="30";
		Integer i3=Integer.valueOf(s3);
		int x=i3.intValue();
		System.out.println(x);
		
		//String--->int直接转换
		String s4="40";
		int i4=Integer.parseInt(s4);
		System.out.println(i4);
		
	}

}

String类中切割字符串关键字:public String[]split(String  regex);

String s="91 27 46 38 50";
String [] Array=s.split(" ");
装箱、拆箱:

装箱、自动装箱;拆箱、自动拆箱;

package myInteger002;

public class IntegerDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Integer i=100;//自动装箱
		Integer ii=Integer.valueOf(100);//装箱
		
		ii+=10;//自动拆箱
		ii=ii.intValue()+10;//拆箱
	}

}

*在使用包装类类型时,如果做操作,最好判断是否为null,只要是对象,在使用前都要进行不为null的判断。

6、Date类

Date类:
Date();
Date(long date);
public long getTime();
public void setTime(long time);
package myDate001;

import java.util.Date;

public class DateDemo {
	public static void main(String[] args) {
	Date d1=new Date();
	System.out.println(d1);
	//获取当前时间,重写toString();
	
	System.out.println("------------");
	
	long date=1000*60*60;
	Date d2=new Date(0);
	System.out.println(d2);
	//以毫秒为单位,中国时间从1970年一月一日八点开始
	
	System.out.println("------------");
	
	Date d3=new Date();
	System.out.println(d3.getTime());
	//从1970年1月1日到现在的毫秒值
	
	System.out.println("------------");
	
	long time=System.currentTimeMillis();
	d3.setTime(time);
	System.out.println(d3);
	//设置之间,给的是毫秒值
	
	}
}
SimpleDateFormat类

是一个具体类,用于以区域设置敏感的方式格式化和解析日期。

日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’、‘a’到‘z’引号的字母被解释为表示日期和时间字符串的组件的模式字母。

对应关系:

public  SimpleDateFormat();
public  SimpleDateFormat(String pattern);
package myDate002;

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 sdf1=new SimpleDateFormat();
		SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
        //将Date转换为String类型输出

		String s1=sdf1.format(d1);
		System.out.println(s1);
        //输出2024/3/10 11:10

		String s2=sdf2.format(d1);
		System.out.println(s2);
        //输出2024年03月10日  11:10:19
	}

}
格式化(从Date到String)

public final String format(Date date);

将日期格式化为日期/时间字符串 

解析(从String到Date)

public Date parse (String source);

从给定字符串的开始解析文本以生成日期。

package myDate002;

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

public class DateDemo {

	public static void main(String[] args) throws ParseException {
		//格式化,将Date转换为String
		Date d1=new Date();
		SimpleDateFormat sdf1=new SimpleDateFormat();
		SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
		String s1=sdf1.format(d1);
		System.out.println(s1);
		String s2=sdf2.format(d1);
		System.out.println(s2);
		
		System.out.println("--------------");
		
		//解析,将String转化为Date
		String ss1="2024-03-10  11:02:26";
		SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
		//给的模式一定要与字符串一个模式,否则无法解析
		Date dd1=sdf3.parse(ss1);
		System.out.println(dd1);
		
		
	}

}
Calendar类

*为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

Calendar提供了一个类方法getInstance用于获取Calendar对象,日历字段已使用当前日期和时间初始化。

package myDate004;

import java.util.Calendar;

public class CalendarDemo {
	public static void main(String[] args) {
		//获取对象
		Calendar c= Calendar.getInstance();
		//多态的形式得到的对象
		System.out.println(c);
		int y=c.get(Calendar.YEAR);
		int M=c.get(Calendar.MONTH)+1;
		//月份是从0月开始计算,所以要加一
		int d=c.get(Calendar.DATE);
		System.out.println(y+"年"+M+"月"+d+"日");
			
	}
}
返回给定的日历字段

public int get(int field);

根据日历的规则,将指定的时间添加或减去给定的日历字段

public abstract void add(int fiel,int amount);

设置当前日历的年月日

public final void set (int year ,int month,int date);

package myDate004;

import java.util.Calendar;

public class CalendarDemo {
	public static void main(String[] args) {
		//获取对象
		Calendar c= Calendar.getInstance();
		//三年前的5天后
		c.add(Calendar.YEAR, -3);
		c.add(Calendar.DATE, 5);
		int y=c.get(Calendar.YEAR);
		int M=c.get(Calendar.MONTH)+1;
		//月份是从0月开始计算,所以要加一
		int d=c.get(Calendar.DATE);
		System.out.println(y+"年"+M+"月"+d+"日");
		
		System.out.println("-----------------");
		c.set(2004,5,8);
		 y=c.get(Calendar.YEAR);
		 M=c.get(Calendar.MONTH)+1;
		//月份是从0月开始计算,所以会加一
		 d=c.get(Calendar.DATE);
		 System.out.println(y+"年"+M+"月"+d+"日");
	}
}

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值