Java开发系列(二):关键字(1)

概述

Java和众多编程语言类似,有相当数量的关键字,这些关键字应用在不同场景下,有不同的作用,本文按照关键字应用场景分类,一一对这些关键字描述.

一、基本数据类型

​ Java存在四大组变量类型,按照占用内存大小排列,分别是布尔型、字符型、整型、浮点型. 在C语言、C++中,数据占用内存空间的大小与操作系统相关,与它们不同,由于 JVM 优良的跨平台性,Java基本数据类型占用内存空间固定.

1.布尔型

  • 布尔型变量关键字:boolean.
  • 布尔型变量在内存中占位:1个字节.
  • 变量取值为:false或true. 默认值为 false.

注意:这里的false和true均为小写(Java对大小写敏感),且false的字面值不是0,true也不是1.

2.字符型

  • 字符型变量关键字:char.
  • 布尔型变量在内存中占位:2个字节.
  • 变量取值范围:-3276832767(即02^16-1). 默认值为“\u0000”

注意:为了跨平台性和国际化,Java中使用 Unicode 编码. (Unicode是几十种编码的集合,其中包括 ASCII 码)

3.整型

​ 整型数据组分为四种:字节型、短整型、整型、长整型

数据类型关键字占用内存(字节)取值范围默认值
字节型byte1-128~1270
短整型short2-32768~327670
整型int4-232~-232-10
长整型long8-264~264-10

4.浮点型

​ 浮点型数据组分为两种:单精度浮点型、双精度浮点型

数据类型关键字占用内存(字节)取值范围默认值
单精度浮点型float4IEEE 754标准下 4 字节范围0.0f
双精度浮点型double8IEEE 754标准下 8 字节范围0.0

总结:Java中基本数据类型较简单,且变量占用内存空间固定. 值得注意的是,整数字面量默认为 整型 ,小数为 双精度浮点型. 更改浮点型默认可以使用后缀F或f,例如,1.1F或1.1f.

二、类与接口

​ 类与接口是Java中最重要的概念之二. 简单说,类和接口是包含同一特征(成员变量)与行为(成员方法)的抽象. 其中,类中的方法一般包含实现,接口中的方法不包含实现. 其中,定义类使用关键字class,定义接口使用interface.

1.三大概念

​ 封装、继承和多态是面向对象类语言最重要的三个概念. 下面来一一介绍他们的实现.

①封装

​ 数码相机的技术是非常复杂的,然而我们使用它并没有任何困难,其原因在于,我们不需要知道这些技术细节,只需要知道这些技术如何使用即可. 在程序中也会运用类似的思想,例如,方法的实现. 在Java中,当你想使用一个方法时,只需要调用它即可,它便会执行你想要的功能,你不必关心方法内部的细节. 不关心细节实现,仅仅提供接口供调用,这是最基本的封装.

​ 类的封装狭义上指的是成员变量不能被除了实例对象的其他对象直接访问,需要访问该实例对象的变量只能由此实例变量自己调用实现. 广义上的封装是指隐藏一切实现细节,仅提供接口以供调用.

②继承、实现

​ 类的继承使用关键字extends,接口的实现使用关键字implements.

​ 类的继承. 与C++不同,在Java中,类不允许多重继承. 例如,B是A的子类,在C++中允许B也是C的子类,而Java则不允许. 子类中可以覆盖父类方法,调用父类成员方法和成员变量使用关键字super,例,super.fFunction()、super.fValue. 父类引用变量可以引用子类对象,但不能使用子类中新增的成员变量和方法. 反之,子类引用变量不可引用父类变量.

​ 接口的实现. 接口允许多重实现,但实现接口必须实现接口内定义的所有方法. 接口中不允许存在变量,只能存在常量. 常量前默认修饰符为public static final.简单来讲,这是为了实现常量在各实现类中的一致性而做的规定.

③多态

​ 多态分为编译时多态与运行时多态.

​ 编译时多态是指,类在继承父类或实现接口时,除了实现抽象方法之外,还可以有自己的成员变量或成员方法. 这些方法和变量将在类编译时一起被编译成字节码.

​ 运行时多态是指,引用变量在编译时并不指向某一对象,而是在运行时指向. 以下举例说明这一概念:

public class MultiMain{
  class Animal{
    void eat(){	}
  }
  class Dog extends Animal{
    void eat(){ super.eat()	}
  }
  class Cat extends Animal{
    void eat(){ super.eat()	}
  }
  public static void main(){
    Animal dog = new Dog();
    Animal cat = new Cat();
    dog.eat();
    cat.eat();
  }
}

​ 在上述代码中,主类定义了两个类型为Animal类的引用变量dog和cat,但是他们分别指向的是子类Dog和Cat. 那么,在编译阶段,会将Dog类和Cat类分别编译,在运行阶段Animal类的dog和cat会动态指向Dog类和Cat类.

2.修饰符类

​ Java中的修饰符用来修饰类、接口、变量和方法,主要有以下修饰符:public、protected、private、static、final、abstract. 下面来逐一介绍这六大修饰符的作用.

public、protected、private 属于同一类修饰符,既可以修饰方法,也可以修饰变量,用来规定变量或方法能被引用的范围. 其中,protected不能用来修饰类,类由public、private修饰. 下表列出了经这些修饰符修饰后的类、变量、方法的被引用范围.

private成员默认的成员protected成员public成员
同一类中可见
同一包中对子类可见
同一包中对非子类可见
不同包中对子类可见
不同包中对非子类可见

static可以修饰成员变量、方法和代码块,一般不能修饰类,特殊情况是,可以修饰内部类. static修饰的代码只编译一次,相当于类全局变量. 类内部的静态成员方法和变量不能被某一具体对象引用,只能通过类引用,static代码块在类编译时加载,而不是在类实例化是加载.

final用来修饰类、变量和方法. 修饰类时表示此类不能再被继承;修饰变量时类似赋值常量,类比C++中的const关键字,其变量一般用大写表示;修饰方法时表示本方法将不能被子类覆盖.

abstract用来修饰类和方法. 修饰类时表示此类是抽象类,不能被实例化;修饰方法时表示此方法是抽象方法,抽象方法没有方法体,存在抽象方法的类必须被定义为抽象类. 继承抽象类的子类必须实现父类的抽象方法.

总结:普通类可以实例化,而抽象类和接口不能被实例化. 在大部分编程应用中,抽象类和接口一般使用引用变量指向继承和实现该抽象类和接口的子类. 降低了代码的耦合性,使代码变得可扩展.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值