java基础知识点 第十一章

 1.对象的创建和使用
属性:变量的的定义在类体当中,方法体之外,这种变量称为成员变量,学生类有学号属性,要访问学号
需要创建对象,通过对象去访问学号信息,学号信息不能通过类去访问访问,这种成员变量又被叫做:
【实例变量】
通过一个类可以实例化N个对象   语法:new 类名();
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中
栈内存:方法代码片段调用执行的时候会给该方法分配内存空间,在栈内存中称压栈
方法执行之后,该方法所属内存空间释放,称为弹栈
堆内存:new的对象在堆内存中存储。

Student s=new Student();//Student是一个【引用数据类型】,是变量的数据类型,s是变量名,
保存了对象的内存地址,new Student()是学生对象

s在main方法中是一个局部变量【在栈内存中存储】,叫做引用
什么是对象:new运算符在堆内存中开辟的内存空间称为对象
什么是引用:引用是一个 “变量”,只不过这个变量保存了另一个java对象的内存地址

在JAVA语言中,程序员不能直接操作对内存,java没有指针,不想c语言,在java语言当中,程序员
只能通过“引用”去访问堆内存当中的对象内部的是实例变量。
引用保存内存地址,指向对象
访问实例变量的格式:
读取数据:引用.变量名
修改数据:引用.变量名=值

局部变量在栈内存中存储
成员变量中的实例变量在堆内存的java对象内部存储
实例变量是一个对象一份

2.引用可以是局部变量,也可以是实例变量
User u=new User();//局部变量 addr是User类中的属性
u.no=110;
u.name="Jack";

u.addr=new Adderess();//实例变量
u.addr.city="北京";

public class test03
{
   pulic static void main(String[] args){
       //u是引用
       //u是局部变量
       User u=new User();

      //u.addr=new Address();

       Address a=new Adderess();
       u.addr=a;
       System.out.println(u.addr.city);//null
       a.city="天津";
       System.out.println(u.addr.city);//天津

   }
}
1.JVM主要包括三块内存空间分别是:栈内存、堆内存、方法区内存
2.堆内存和方法区内存各一个,一个线程一个栈内存
3.方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈,方法之行结束之后,该方法
所属的内存空间释放,称为弹栈
4.栈中主要存储的方法体当中的局部变量
5.方法的代码片段以及整个类的代码片段都存储到方法区内存当中,在类加载的时候这些代码片段会载入
6.在程序执行过程当中使用的new运算符创建java对象,存储在堆内存当中,对象内部有实例变量,所以
实例变量存储在堆内存当中
7.变量分类:
   -局部变量【方法体中声明】
   -成员变量【方法体外声明】
      *实例变量[前面修饰符没有static]  必须实例对象才能去访问
      *静态变量[前面修饰符有static]
8.静态变量存储在方法区内存当中。
9.三块内存变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要是针对的是堆内存
10.垃圾回收器【自动垃圾回收机制,GC机制】,什么时候会考虑将java对象的内存回收呢?
 *当内存当中的java对象成为垃圾数据的时候,会被垃圾回收期回收。
 *什么时候java对象会变成垃圾呢/
    没有更多的引用指向他的时候。对象只能通过引用的方式访问

2.空指针异常
Customer c =new Customer();
c=null;
System.out.println(c.id);
//以下程序可以编译通过,因为符合语法,运行会出现空指针异常,空引用访问实例相关的数据一定
会出现空指针异常。实例相关数据表示:这个数据访问的时候必须有对象参与,这种数据就是实例相关
数据。

2.myclipse中的快捷键:
ctrl+d 删除一行
alt+/ 自动补全
ctrl+alt+向下箭头  复制上一行内容
ctrl+shift+F 格式格式化

3.封装性

猜你喜欢

转载自blog.csdn.net/dengfengling999/article/details/123239966