自学Java Part 4

一、抽象类

1、概念

一个类只定义了一个为所有子类共享的一般形式,细节交给每一个子类实现,但没有具体实例。

2、语法

abstract class 类名{//抽象类

abstract 方法返回值类型 抽象方法([可选项])
//抽象方法
}
可选项表示方法参数列表,若没有则为空方法列表

3、特征

不能被实例化,不能用new产生对象。
只需要声明,不需要实现。
抽象类被子类继承,子类要用抽象方法。
抽象类不一定包含抽象方法,包含抽象方法的类是抽象类。

4、作用

作用:被子类继承

5、应用

public abstract class Phone {
	public abstract void system();

}
public class Huawei extends Phone {
	public void system() {
		 System.out.println("HarmonyOS");
	}
}

public class Xiaomi extends Phone {
	public void system() {
		 System.out.println("MIUI");
	}
}

测试类

public class Test {
	public static void main(String[] args){
		Phone a=new Huawei();
		a.system();
		Phone b=new Xiaomi();
		b.system();
	}

}

6、向上转型

将子类对象转为父类对像

二、接口

1、概念

接口是特殊的抽象类,只含常量和方法的定义,而没有变量和方法的实现。

2、格式

接口用关键字interface修饰
public interface 接口名 { }
类实现接口用implements表示
public class 类名 implements 接口名{ }
其中
常量的默认修饰符是public static final
抽象方法的默认修饰符是pubic abstract

3、特点

接口都是抽象方法,没有构造方法。
接口中的方法不能在接口中实现,只能有实现接口的类来实现接口中的方法。
可以用extends继承一个或多个接口。
实现类可以通过implements实现一个或多个接口。

4、作用

解决多继承,规范类

5、与抽象类关系

接口、类可以有多个方法。
接口中不能含有静态方法,抽象类可以。
一个类只能继承一个抽象类,一个类可以有多个接口。

6、应用

定义Pad类

public abstract class Pad {
private String name;
public Pad() {
}
public Pad(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void colour();
}

定义接口


public interface System {
public abstract void OS();
}

定义HW类

public class HW extends Pad implements OS {
public HW() {
}
public HW(String name) {
super(name);
}
@Override
public void color() {
System.out.println("夏日胡杨");
}
@Override
public void OS() {
System.out.println("HarmonyOS");
}
}

定义测试类

public class Test {
public static void main(String[] args) {
HW c = new HW();
c.setName("MatePad");
System.out.println(c.getName());
c.colour();
c.OS();
}
}

三、包

1、包

概念
把功能相似或相关的类和接口放在一个包中
格式
package pkg1[.pkg2[.pkg3……]]
"."指明包的层次
导包
import 包名

2、包装类

(1)、数据类型与包装类

基本数据类型——包装类
byte ——Byte
short ——Short
int ——Integer
long—— Long
float ——Float
double ——Double
char ——Character
boolean ——Boolean

Number 子类:Byte Short Integer Long Float Double
Object 子类:Character Boolean

(2)、Integer类

(1)根据 int 值创建 Integer 对象:

Integer obj1=new Integer(666);

(2)根据 String 值创建 Integer 对象:

Integer obj2=new Integer("666");

(3)、Object类

(1)生成字符串toString方法:
obj1.toString();
(2)对一个类的两个对象进行比较equals方法
obj1.equals(obj2);
obj1.compareTo(obj2);

(4)、将包装类类型转换为相应的类型

intValue() 以int返回Integer的值
doubleValue() 以double返回Double的值
byteValue() 以byte返回Byte的值
floatValue() 以float返回Float的值
shortValue() 以short返回Short的值
longValue() 以long返回Long的值

int a=obj1.intValue();

(5)、将字符串转换为基本数据类型

Integer.parseInt(String s);
Float.parseFloat(String s);
Byte.parseByte(String s);
Short.parseShort(String s);
Long.parseLong(String s);
Double.parseDouble(String s);
如String转换为int

int i = Integer.parseInt("666");

Integer i = Integer.valueOf("666");
int x = i.intValue();

(6)、创建包装类对象

Integer.valueOf(int value) ;
Long.valueOf(long value) ;
Short.valueOf(short value) ;
Byte.valueOf(byte value) ;
Integer.valueOf(String value) ;
Long.valueOf(String value) ;
Short.valueOf(String value) ;
Byte.valueOf(String value) ;
Float.valueOf(String value) ;
Double.valueOf(String value) ;
如int转换为String

int number = 666;
String s1 = number + "";

String s2 = String.valueOf(number);

(7)、自动装箱、拆箱

自动装箱
把基本数据类型转换为对应的包装类类型
自动拆箱
把包装类类型转换为对应的基本数据类型
Integer i = 100; 自动装箱
i += 200; i = i + 200; i + 200 自动拆箱;则i = i + 200 是自动装箱

四、常见API

1、Math

1、public static int abs(int a)
返回参数的绝对值
2、public static double ceil(double a)
返回大于或等于参数的最小double值,等于一个整数
3、public static double floor(double a)
返回小于或等于参数的最大double值,等于一个整数
4、public static int round(float a)
按照四舍五入返回最接近参数的int
5、public static int max(int a,int b)
返回两个int值中的较大值
6、public static int min(int a,int b)
返回两个int值中的较小值
7、public static double pow (double a,double b)
返回a的b次幂的值
8、public static double random()
返回值为double的正值,[0.0,1.0)
应用
Math.abs(x);

2、 System

public static void exit(int status)为终止当前运行的 Java 虚拟机,非零表示异常终止
public static long currentTimeMillis()返回当前时间

long start = System.currentTimeMillis();//开始时间
long end = System.currentTimeMillis();//结束时间

String

声明:String stringName;
创建:
stringName=new String动态赋值
stringName=字符串常量 静态赋值
构造方法
1、public String()创建一字符串对象
String a = new String();
2、public String(char[] b) 字符数组,来创建字符串对象
char[] b = {‘a’, ‘b’, ‘c’};
3、public String(byte[] c)字节数组,来创建字符串对象
byte[] c= {1,2,3};
4、String s = “abcd”; 直接赋值
String s= “abcd”;

StringBuffer

StringBuffer中的对象可以被多次修改
1、public StringBuffer() :
构造不带字符的字符串缓冲
2、public StringBuffer(int length) :
构造不带字符但具有指定初始值的字符串缓冲
3、public StringBuffer(Strng s) :
构造字符串缓冲, 初始化为参数指定的内容

StringBuilder

是一个可变字符序列,提供与StringBuffer兼容的API,但不同步
在线程安全下使用StringBuffer
常用方法与StringBuffer类似

永远相信美好的事情即将发生!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值