复习-1-java基础---基本概念相关

https://www.cnblogs.com/schiller-hu/p/10662429.html

基础: 8个比特(bit) 等于 1字节(byte)
1个比特(bit) 就是电路中的0/1

java共提供了8种基本类型:
数字型:
byte: 1个字节, 范围 [-128(-27),127(27-1)] 默认值 0
short: 2个字节 范围[-2^15, 2^15-1] 默认值0
int: 4个字节 范围[-231,231-1] 默认值0
long: 8个字节 范围[-263,263-1]
double: 8个字节, 双精度浮点型
float: 4个字节, 单精度浮点型
char: 2个字节 运行时位unicode字符
boolean: 1个字节, 默认值false 只有两个取值:true 和 false

问题1: 为什么byte的范围是[-128,127]?
        参考: https://zhuanlan.zhihu.com/p/54074731
        更简单的就是
        // 0b00000000 - 0b01111111  表示0到127
            byte a = (byte) 0b00000000;
            System.out.println(a); // 0
            byte a1 = (byte) 0b01111111;
            System.out.println(a1); //127

        // 0b111111111  0b10000000 表示 -1到-128
            byte b = (byte) 0b111111111;
            System.out.println(b); // -1
            byte b1 = (byte) 0b10000000;
            System.out.println(b1); //-128

问题2: float/double精度问题
        参考: https://www.runoob.com/w3cnote/java-the-different-float-double.html
        例如: 78.375 转成 浮点计数
           ①整数部分: 78(十进制) = 1001110(二进制)
           ②小数部分: 0.375(十进制) = 3/8 = 1/4 + 1/8 = 2^(-2)+2^(-3) = 0.01(二进制)+0.001(二进制) = 0.011(二进制)
           ③78.375(十进制)=1001110.011(二进制)=1.001110011*2^6(二进制的科学计数法)
        浮点型数据在计算机中的存储
            第一部分用来存储符号位(sign),用来区分正负,这里是0,表示正数
            第二部分用来存储指数(exponent),这里的指数是十进制的 6
            第三部分用来存储小数(fraction),这里的小数部分是001110011

       float  符号位: 1 bit  指数位: 8 bit 尾数位: 23 bit
       double 符号位: 1bit  指数位: 11 bit 尾数位: 52 bit
       float 的小数位只有 23 位,即二进制的 23 位,能表示的最大的十进制数为 2 的 23 次方,即 8388608,即十进制的 7 位,严格点,精度只能百分百保证十进制的 6 位运算。
       double 的小数位有 52 位,对应十进制最大值为 4 503 599 627 370 496,这个数有 16 位,所以计算精度只能百分百保证十进制的 15 位运算。

final关键字:
① 用在变量的前面表示变量的值不可以改变,此时该变量可以被称为常量。
② 用在方法的前面表示方法不可以被重写。
③ 用在类的前面表示该类不能有子类,即该类不可以被继承(String类)。

重点: final 修饰变量
  (1) final 修饰的局部变量必须使用之前被赋值才能使用。
  (2) final 修饰的成员变量在声明时没有赋值的叫“空白final变量”。空白final变量必须在构造方法或静态代码块中初始化。
  final 修饰基本类型变量和引用类型变量的区别:
            当使用 final 修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。
            但对于引用类型变量而言,它保存的仅仅是一个引用,final 只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。
            但是有特殊情况,String类型和包装类型(Integer,Double等)为引用类型,但是其值是被final修饰的,所以其对象被final修饰后,也是不能被重新赋值的;

static关键字:
参考: https://www.cnblogs.com/dolphin0520/p/3799052.html
修饰变量: 此变量为静态变量,静态变量属于类,而不是属于对象,可以直接使用类名.变量名称调用
修饰方法: 静态方法,使用类名直接访问,
修饰代码块: 静态代码块,在类被加载构造方法执行前执行,且只执行一次。

面向对象:

   接口:
        接口可以多继承
        接口中的方法,必须是抽象方法
        接口中的变量默认必须是 public static final修饰的
        接口中的变量为什么必须是 public static final修饰的?
            接口是 Java 语言中的一个抽象类型,用于定义对象的公共行为。
            接口可以被不同的类实现,所以必须是公有的,所以用public实现。
            接口是不可以被实例化的,私有变量属于对象,static修饰的变量属于类。
            接口被多个类实现的时候,A类中被修改, 那么B类中的数据也会被修改,就相互影响了。
       jdk8之后接口中就可以创建static 和 default 方法了.default修饰方法只能在接口中使用,修饰的方法为普通方法,在实现类中可以被重写。
       如果一个类继承的多个接口,有相同名称的default方法,会要求重写该方法
抽象类:
    有抽象方法的类,一定是抽象类
    抽象方法必须重写
    除了不能实例化,其他跟类一样了

多态:
  实现的必要条件: (1)继承/实现 (2)方法重写  (3) 基类引用指向派生类对象,即父类引用指向子类对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值