打印

Java语言基础(二)

[复制链接]
1521|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fg79|  楼主 | 2011-9-21 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    内存分析        这次学习Java,第一次接触内存中的程序的具体执行过程。感觉理解内存中数据的进出对程序的理解确实很有帮助。
        Java的执行过程在内存中一共占四个区域:
        heap (堆)区:用来存放new出来的东西,是一个对象的真正存放位置。堆用于动态分配和释放程序所使用的对象。
        stack (栈)区:用来存放局部变量,一般是对象的引用。
        data segmeng 区:用来存放静态变量和字符串常量(只是常量,new出来的String对象还是在heap中)。
        code segment 区:存放要执行的代码(函数,语句)。
      执行步骤:程序开始执行使,首先将要执行的代码从硬盘Load到内存中的code segment区中,然后找到main方法开始执行,执行过程根据语句中的变量的类型分配不同的内存空间。
举例:
程序代码:
view plaincopy to clipboardprint?

  • public class Cat{  
  •     private static int sid=0;  
  •     private String name;  
  •     int id;  
  •     Cat(String name){  
  •          this.name=name;  
  •          id=sid++;  
  •     }  
  •     public static void main(String[] args){  
  •       Cat.sid=100;  
  •       Cat mimi=new Cat("mimi");  
  •       }  
  • }  

public class Cat{    private static int sid=0;    private String name;    int id;    Cat(String name){         this.name=name;         id=sid++;    }    public static void main(String[] args){      Cat.sid=100;      Cat mimi=new Cat("mimi");      }} 执行过程,1 将代码加载到code segment区,
                    2 开始执行main方法,在data segment中创建静态变量sid,值为100,
                       在栈中创建局部变量"mimi”,其指向堆的的真正new的对象。在data segment中创建字符常量"mimi"。
                    3 开始执行构造函数,Cat有一个参数,是局部变量,所以在栈中创建局部变量"name",其指向data segment中的"mimi",在堆中创建mimi的真正内容,包括name,也指向data segment中的"mimi",   还有id,值为100,然后data segment中的sid+1=1=101。构造函数执行结束,释放栈中的局部变量name。
                       内存如图:
                       
                    4 然后回到main函数,main函数结束。释放所有内存。


Java也是三大控制结构:顺序,选择,循环
分支语句
(1)if条件语句
if(){..}
if (){...}  else{...}
if(){...}elseif() {...}
if(){...}elseif(){...}elseif(){...}
if(){...}elseif(){...}elseif(){...}else{...}
当if或else的执行体只有一条语句时,可以省略{}。


(2)switch 语句
        switch(index){
                 case int;
                        ...
                       break;
                 case int;
                       ...
                       break;
                  default:
                      ...
         }
        注:JDK7之前,index 只能是byte,short,int,char,enum类型的值。JDK7可以使用String类型。
(3)三目运算符:X ?Y:Z(例如:x==0?0:-1)


循环语句:
(1)for语句: for(...;...;){...}
(2)while语句:while(逻辑表达式){...}
(3)do while 语句:do{...}while(逻辑表达式);
Java的条件和循环语句与c语言和c#的书写方式基本相同。另外循环中的break和continue也没有特殊用法,不再赘述。

相关帖子

沙发
黑发尤物| | 2011-9-22 00:49 | 只看该作者
不错,学习了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

75

主题

102

帖子

0

粉丝