`
blogfeifei
  • 浏览: 1198649 次
文章分类
社区版块
存档分类
最新评论

java学习笔记(九)

 
阅读更多

面向对象


1:类与对象


#类是抽象的,对象是具体的;

#类就相当于模板,依照此模板生产产品;


#类定义:

class {

。。。。。
}

类命名:首字母大写

一个类定义之后不能直接使用,要产生对象。

#对象的创建

类名 对象名=null//声明对象

对象名 = new 类名();//实例化对象

类名 对象名 = new 类名();

class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+"年龄:"+age);
}

对象的创建:


class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+"年龄:"+age);
}
public class test06
{
public static void main(String args[]){
Person per = new Person();
}
}
}

面向对象的三个基本特征:

#封装

#继承

#多态

2:类与对象的进一步研究

类属于引用传递类型

Person per = new Person();//创建并实例化对象

#声明对象:Person per ,栈内存中声明的,与数组一样,数组名称就保存在栈内存中,只开辟了栈内存的对象是无法使用的,必须有其堆内存的引用才可以使用。

#实例化对象:new Person(),在堆中开辟空间,所有的内容都是默认值。

String :是一个字符串,本身是一个类,就是一个引用数据类型,
则此时默认值是null。


了解分配关系,就可以为属性赋值,并调用类中方法;

调用属性:对象.属性
调用方法:对象.方法

class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+"年龄:"+age);
}
}
public class test06
{
public static void main(String args[]){
Person per = new Person();
//Person per = null;
//per = new Person();
per.name="张三";
per.age = 30;
per.tell();
}
}

#内存分配:

对象是保存在栈内存中

属性是保存在堆内存中的

在程序中的所有的方法是保存在全局代码区之中的,此区中的内容是所有对象共享的。

注意:

在引用操作中,如果一个对象没有堆内存的引用,而调用了类中的属性或方法,就会出现问题。

多个对象:


class Person{
String name;
int age;
public void tell(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
public class test06
{
public static void main(String args[]){
Person per1 = null;
Person per2 = null;
per1 = new Person();
per2 = new Person();
//Person per = null;
//per = new Person();
per1.name="张三";
per1.age = 30;
per2.name="李四";
per2.age = 33;
per2 = per1;//把per1的堆内存空间使用权给per2
per1.tell();
per2.tell();
}
}


因为per2改变了指向,所以其原本的内存空间就没有任何栈的引用,则这样的内存就被称为垃圾,等待垃圾回收机制进行回收,

GC:垃圾收集机制的简称。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics