java学习之路:15.对象的创建,属性,行为,引用,比较,销毁
1.对象的创建
和数组一样,在Java中使用new来调用构造方法来创建对象,学到这里倒是让我想到了C++,果然有了C和C++的基础,学习java会很快。言归正传,语法如下: 类名 对象名 = new 类名(参数) 这里的参数指构造方法的参数,如构造方法无参,则不用写。 当创建对象时,自动调用构造方法,也就是说在java中初始化与创建是被捆绑在一起的。 每个对象都是相互独立的,在内存中占据独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成垃圾,由java虚拟机自带的垃圾回收机制处理,不能再被使用。
2.访问对象的属性和行为
创建出对象后,可以使用对象.类成员来获取对象的属性和行为,也就是成员变量和成员方法,这些在前文提到过。所以对象获取类成员就是获取属性和行为。 编写代码:
package number;
public class Book {
int i=666;
public void Pr()
{
System.out.println(i);
}
}
//首先在项目中创建一个类,并定义一个成员变量
public class Xuexi {
public static void main(String[] args) {
Book book1 =new Book(); //创建一个对象
book1.i=999;
Book book2 =new Book(); //创建一个对象
book1.Pr();
book2.Pr();
}
}
//在主方法中创建两个Book对象
运行结果如下:
通过结果,我们可以很好的证明每个对象是独立的,我们改变了book1中i的值,但是boo2中的i值还是原来的。接下来,我们把i修改为静态变量,看一看效果如何:
package number;
public class Book {
static int i=666;
public void Pr()
{
System.out.println(i);
}
}
结果如下:
可以看到声明了静态的变量是可以被共用的。
3.对象的引用
在Java语言中一切都可以看作对象,单正在的操作标识符实质上是一个引用,引用在Java中的语法如下: 类名 对象引用名称 Book book;这边是引用 Book book=newBook();这边是引用与对象相关联 引用只是存放一个对象的内存地址,并非存放一个对象。严格地说,引用和对象是不同的,但是可以将这种区别忽略,如可以简单地说book是Book的一个对象,而事实上应该是book包含Book对象的一个引用。
4.对象的比较
Java语言中有两种对象的比较方法,分别为“==”运算符和equals()方法。
equals()方法是String类中的方法,它用于比较两个对象引用所指的内容是否相等
而”==“运算符比较的是两个对象引用的地址是否相等。
package number;
public class Xuexi {
public static void main(String[] args) {
String c1=new String("huagou");
String c2=new String("huagou");
System.out.println("== c1和c2运算结果"+(c1==c2));
System.out.println("equals c1和c2运算结果"+c1.equals(c2));
}
}
运行结果:
5.对象的销毁
每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址将会被回收。在其他语言中需要手动回收废弃的对象,但是Java拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器将回收无用的但占用内存的资源。 Java将下面两种情况视为垃圾: 1.对象引用超过作用范围。 2.将对象赋值为null。
回收机制只能回收使用new创建的对象,如果不是通过new在内存中获取了一块内存,这种对象可能不被垃圾回收机制所识别,所以java提供了一个finalize()方法,这个方法是Object类的方法,它被声明为protected,用户可以在自己的类中定义这个方法,如果在类中定义了这个方法,在垃圾回收时,会首先调用该方法,在下一次垃圾回收动作发生时,才能真正回收内存。
java还提供了System.gc()方法强制启动垃圾回收器。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释