java面向对象(五)--接口

1、接口

  • 为什么使用接口?
    • 因为java体系中,继承具有单根性,为了解决多继承的问题,所以推出了接口的概念!
  • 如何使用接口?
    • 定义一个类使用class关键字,定义一个接口使用interface关键字
    • 接口中的方法都是抽象方法,也就是没有任何的具体实现,所以定义接口后,必须让一个类来实现这个接口,进而重写接口中的方法,使用implements关键字来实现一个接口

代码:

public interface USB {
	// 提供服务
	public void service();
}

public class Mouse implements USB {
	public void service() {
		System.out.println("鼠标可以移动了。");
	}
}

public class UDisk implements USB {
	public void service() {
		System.out.println("传输数据。。。");
	}
}

public class Test {

	public static void main(String[] args) {
		// 第一个USB接口,插上了一个鼠标
		USB u1 = new Mouse();
		// 第二个USB接口,插上了一个u盘
		USB u2 = new UDisk();

		u1.service();
		u2.service();

	}

}

2、接口的特性

  1. 接口中的方法都是抽象方法
  2. 一个类如果实现了一个接口,那么在该类中必须重写接口中的所有抽象方法
  3. 面向企业级开发,java就从面向对象,转化为 面向接口编程。(对象只能搞一个,接口却可以实现无数个)所以,面向接口编程才是王道!
  4. 接口不能实例化(就是不能new)
  5. 一个类只能继承另一个类,但是实现接口是可以多个的(java中的多继承)
  6. 接口中的变量都是静态常量 int i = 10; 等价于 public static final int i =10;

3、接口的练习

需求:模拟手机的进化过程

4、基本数据类型

四类八种:

  • 整数型
    • byte 字节型
      • -2的7次方~ 2的7次方-1
    • short 短整型
      • -2的15次方~ 2的15次方-1
    • int 整型
      • -2的31次方~ 2的31次方-1
    • long 长整型
      • -2的63次方~ 2的63次方-1
      • long i = 21474836481L;
  • 浮点型(作业,查阅资料,更深入了解float和double)
    • float 32位单精度浮点型
    • double 64位双精度浮点型
      • double比float更精确!
  • 字符型
    • char
    • 一个字符,要使用单引号
  • 布尔型
    • boolean
    • 取值范围:true,false

引用数据类型

  • 字符串String(内部构造依然是char类型,并且是char类型的数组)

  • 数组

  • 自定义的类,接口

    在声明的时候,变量前面必是数据类型
    int i = 1;
    Dog d = new Dog();

字符型char须知

在计算机的世界中,全世界任何一个字符(char),都有属于自己对应数字编号

例如小写字母a对应的数字编号就是97

public static void main(String[] args) {
	for (int i = 1; i <= 30000; i++) {
		char c = (char) i;
		System.out.print(c);
		if (i % 200 == 0) {
			System.out.println();
		}
	}
}

a=97 , z=122 , A=65 , Z=90

计算溢出

System.out.println(0.2 + 0.1);
System.out.println(0.3 - 0.1);
System.out.println(0.2 * 0.1);
System.out.println(0.3 / 0.1);

结果为:

0.30000000000000004
0.19999999999999998
0.020000000000000004
2.9999999999999996

结果出现了bug,原因是:

  • float和double类型的主要设计目标是为了科学计算和工程计算,他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速计算而设计的。
  • 整数可以用二进制非常精确的表达,但是浮点数(小数)是没有办法用二进制精确描述的,然而CPU用的是二进制做计算,就容易丢失精度(浮点数是由两个部分组成的,指数和尾数)
  • 简单的来说,cpu计算整数完全无压力,但是碰上小数,就可能出现结果不精确的情况
  • 然而,他们没有提供完全精确的结果,所以不利于在精确结果的运算场景。
  • 但是商业计算往往要求结果精确,这时候,应该用BigDecimal类型做计算。

代码如下:

import java.math.BigDecimal;

public class Test2 {
	public static void main(String[] args) {
		BigDecimal a = new BigDecimal("0.2");
		BigDecimal b = new BigDecimal("0.1");

		System.out.println(a.add(b));
		System.out.println(a.subtract(b));
		System.out.println(a.multiply(b));
		System.out.println(a.divide(b));

	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值