Java -2 类和对象 之 类的定义 、对象的创建、变量的数据类型
类的定义和对象的创建
- 类class 和对象 object 是面向对象程序设计方法中最核心的概念。
- 类是对某一类事物的共性描述,定义了一类事物共有的特征属性和功能行为。
- 对象是某类事物的个体存在,对象也称为类的实例instance
- 类是对象的模板,有了这个模板之后才能创建一个一个具体的对象。
- 使用关键字“class” 定义一个类,类的特征属性和功能行为需要定义在左右大括号内:{。。。}
- 类的特征属性通常又称为类的成员变量、实例变量、属性、字段。
- 类的功能行为通常又称为类的成员方法、函数。
- 一般将成员变量简称为属性,将成员方法简称为方法。
使用关键字 ‘new’创建一个对象,创建了对象之后,可以通过 “对象名.成员名” 来访问对象的属性或者方法。
变量和数据类型
- 一个变量就是内存中的一块存储空间,可以用来存放程序运行时的数据,而且在程序运行期间,变量中的存放的数据可以改变。
- 常量在程序运行期间,存放的数据不能改变
- 变量的要素包括:名称、数据类型、作用范围
标识符:我们写代码过程中,总要给包、类、变量、方法起名称,这个名称就是标识符。
Java语言的标识符命名规则:
- 由字母、数字、下划线、美元符号组成
- 标识符只能以字母、下划线、美元符号作为第一个字符
- Java语言保留某些词汇用作特殊用途,这些词汇就是关键字,关键字不能作为标识符。
变量存储的数据类型分为基本数据类型和引用数据类型两种。Java语言中的基本数据类型总共有8种
关于基本数据类型的使用:
- 各种基本数据类型有固定的存储空间大小和取值范围,不受底层具体操作系统的影响,以保证Java程序的可移植性。
- char类型表示字符,每个字符占两个字节,采用16位Unicode编码。
- boolean类型数据只允许取值true或false,不可以用0 或非0 的整数代替true或false.
数据类型转换要遵循一下原则:
- Boolean类型不可以与其他的数据类型进行转换当数据类型 B 的取值范围大于数据类型 A 的取值范围时,会进行自动类型转换,又称隐式类型转换。比如,将一个Long 类型的值赋给一个float类型的变量:Long x=10L;float y=x;
- 当数据类型B 的取值范围小于数据类型A 的取值范围时,需要进行强制类型转换,又称为显示类型转换。而且进行强制类型转换时,可能会出现数据溢出的情况,这种情况又称为精度丢失。比如,将一个int类型的值赋给一个char类型的变量:int x=10;char y=(char)x;
- byte、short、char之间不会直接相互转换,这三种类型在计算时,会首先转换为int 类型,在进行计算。
引用数据类型
- 引用类型变量其实就是C语言种的指针(Point)类型变量,这种变量存储的是一个内存地址值。
- 引用类型变量的默认值为null,表示这个引用类型变量没有指向具体的对象。
变量按照被定义的位置分为局部变量和成员变量:
- 在方法内部定义的变量就是局部变量,而且方法的形参也是局部变量
- 一个局部变量在使用前必须要设置初始值,而且这个局部变量的作用域就是定义该局部变量的代码块{。。。},也就是说在一个代码块{。。。}的外部不能访问这个代码块{。。。}内部定义的局部变量。
- 在方法外部、类的内部定义的变量就是成员变量。
- 成员变量在定义时可以不设置初始值,此时成员变量的初始值等于变量数据类型的默认值。
- 一个成员变量时存放在某个对象内部的,只要没有销毁该对象,这个成员变量就一直存在。
成员方法
一个方法就是一段用来实现某个常用功能的代码块,方法定义的语法格式:
返回值类型可以时任何合法的Java数据类型,比如:int、boolean、Person(类),如果一个方法没有返回值,则返回值类型就是void。
形参列表定义的是该方法被调用时,用以获取外部输入值得变量和变量的数据类型。形参是方法的局部变量,形参的作用域就是方法体。与形参对应的是实参,实参就是调用方法时,实际输入给方法形参的数值。
重载
- 在一个类的内部可以定义多个方法名相同的方法,但是要求每个同名方法都有自己唯一的形参列表。这种语法机制叫做方法重载。
- 不同的形参列表是指形参个数不同,或者是形参的数据类型不同。调用同名方法时,会根据输入的实参列表来确定具体的方法。
方法签名
- 由方法名和形参列表组成的字符串。方法重载的含义是指多个方法的方法名相同,但是方法签名不同。
- 方法签名中不包含方法的返回值类型,所以两个同名方法是否重载和这两个方法的返回值类型是否相同无关。
构造方法
- 所有的成员方法中,有一种特殊的方法称为构造方法。
- 构造方法的作用是初始化对象的属性,也就是说,通常在构造方法中对成员变量进行赋值。
- 构造方法的方法名与类名是完全相同的。
- 构造方法是不能声明任何返回值类型,既不能用int、Person等数据类型,也不能用void。
- 构造方法中不能显示的返回一个值,即构造方法的方法体中不能有return语句
- 当某个类的代码中没有定义构造方法时,编译器会给这个类添加一个默认构造,这个默认构造方法是没有参数的,方法体也是空的,即:类名(){}。但如果某个类的代码中定义了构造方法,则编译器就不再给这个类添加默认构造方法。