Java中的对象
Java是一种面向对象的程序设计语言,假设我们使用Java进行面向对象的程序设计,那么在此之前,我们就必须将思想转换到面向对象的世界中。
1.1 引用与对象:
- 学习Java之前,我们首先应该先明白一个概念:一切事物都可以被称之为对象,在生活中随处可见的事务就是一个对象,而我们可以通过一些固定格式的语法来将其表示出来。对象就是事物存在的实体,当我们表示对象时,往往会考虑对象的一些特征,比如拿一个人来说的话,我们会考虑到它的姓名、年龄,性别、高矮胖瘦等基本特征(属性),当我们将这些基本特征抽取出来时,就可以通过一种语法格式来表示对象。
- 当对象产生时,我们会想到,如何去使用这些对象呢?此时我们将引入 “标识符”,标识符可以用来对对象进行引用,通过使用标识符与对象关联,我们就可以对对象进行操作了。需要注意的是引用与对象并不是一对一的关系, 一个对象可以被不同的引用变量来操纵,同时一个引用变量也可以指向不同的对象,但是同一时刻下只能指向一个对象当对象的引用变量指向对象时,两者就互相联系起来,改变引用的属性,就会改变对象的属性;
1.2 创建一个可以操控的对象:
- 当我们创建一个引用之后,我们就可以将其与一个对象关联起来。此时我们需要通过new(创建对象的关键字)操作符来实现:
例:String s = new String( "Hello World ! " );
Java中的数据类型
2.1 Java中的基本数据类型
- 刚刚我们已经创建了一个String类型的对象,并且被String s所引用,接下来我们来了解更改的Java的基本数据类型。
- 在Java语言中,每种基本数据类型所占用的存储空间的大小是确定的,它不像其他大多数语言那样随机械硬件结构的变化而变化。因此相对于其他大多数语言,Java更具有可移植性的特点。
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 16-bit | Unicode o | Unicode 216-1 | Character |
byte | 8 bits | -128 | +127 | Byte |
short | 16 bits | -215 | +215 -1 | Short |
int | 32 bits | -231 | +231 -1 | Integer |
long | 64 bits | -263 | +263 -1 | Long |
float | 32 bits | IEEE754 | IEEE754 | Float |
double | 64 bits | IEEE754 | IEEE754 | Double |
void | - | - | - | Void |
- 基本类型的特点:
大小固定,存在堆栈中,过作用域就被释放,不是对象,不需要用引用操控,没有可以调用的函数,按值传递。
- 包装器类型的特点:
大小固定,存在堆中,由GC释放,本身是对象,需要依赖引用操控,有函数可以调用,按引用传递。
- 表示基本类型的方法:
通过创建对象进行赋值:char c = new char('c');
直接通过数据进行赋值:char c = 'c';
用另一个本基本类型的值进行赋值:char ch = c ;
本类型的包装器类型初始化基本类型的值:char ch = new Character( 'x' );
对包装类进行赋值:Character ch = new Character('x');
2.2 高精度的数字
- Java提供了两个用于高精度计算的类:BigInteger和BigDecimal,两者对基本类型所执行的操作相似,作用与int与float的操作也能作用与BigInteger和BigDecimal。但是实现方式是调用运算符,操作会变得复杂,执行速度也会变慢,这里我们用速度换取了精度。
2.3 自定义数据类型:类
- 类与对象是整个面向对象中最基础的组成单元。
类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);
对象:对象是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性来区分不同对象。
我们都知道Java是类与对象的语言,在一个类中主要有两种类型的元素:数据属性,成员方法。
数据属性可以是任意类型的对象,可以通过其引用进行通信,也可以是基本数据类型中的一种。成员方法决定了对象能过接收什么样的消息,一个成员方法的基本组成包括:方法名称、参数、返回值和方法体。
类的使用
在现实生活中,我们不能将一个事物描述为一类事物,就像我们称呼一个人时不能直接叫它人类一样,类应该是对同一类对象的统称,在代码编程中,我们往往将一类事物的基本特征和行为,封装为一个类,而对象便是复合我们所定义类标准的一个实例。接下来我们试着定义一个类:
public class Student { //通过class关键字,定义一个Student类
public String name; //定义一个成员变量
public String getName() { //定义getName方法
return name;
}
public void setName(String name) { //定义setName方法
this.name = name;
}
@Override
public String toString() { //从写类的toString方法
return "Student [name=" + name + "]";
}
public Student getStudent() { //返回Student类的引用
return this;
}
}
在上面代码中,class关键字定义了Student类的名称,同时我们在类中定义了成员变量以及相关方法,这样我们就可以通过其他程序对这个类进行访问了。其具体步骤如下:
导包:我们将所有的类放到同一个文件夹下,可以避免导包
创建对象:数据类型 变量名 = new 数据类型();
调用方法:我们可以通过调用成员方法,来执行相关操作
访问属性:变量名.属性、或者采取调用方法的方式来完成对属性的访问
创建一个Java的程序:
对于每一个程序文件的开头,一般需要有import声明语句,用来引入文件代码中需要用到的额外类,之后public关键字表示这是一个可以由外部调用的方法。main方法的参数是一个String对象的数组,args用来存储命令函参数。如果我们想创建一个可以独立运行的程序,那么文件中必须有某个类与该文件同名,且哪个类必须包含一个名为main()的方法,其程序样例如下:
import java.util.Date; //导入Date包
public class ReadName {
public static void main(String[] args) {
Student student = new Student(); // 创建Student对象
student.name = "张三"; // 对对象中的成员变量进行复制
System.out.println("我的名字是:" + student.name); // 获取成员变量
student.setName("李四"); // 通过成员方法对成员变量进行赋值
System.out.println("我的名字是:" + student.getName()); // 通过成员方法获取成员变量
System.out.println(student); // 打印类
System.out.println("It's: " + new Date()); // 打印当前时间
}
}
Java中的注释:
Java中有两种注释的风格一种是以"/*"
开始,以"*/"
结束,其间可以跨越多行:
/*
* 注释内容
* /
另一种是单行注释,以一个"//"
开头,直到句末:
// 注释内容