JAVA学习笔记——JAVA基础语法(二)

一、面向对象和面向过程的区别

  面向过程:它所考虑的是过程和步骤,比如说开车去深圳我们要考虑的是怎么去也就是说:what  to do

  面向对象:它所考虑的是有几个对象,比如开车去深圳我们要考虑的就是有几个对象,也就是说:how to do

二、类

  概念:是对象的模板,它是具有相同属性和行为(方法)的一组对象的集合

  对象和类的区别:类是抽象的,而对象是具体存在的

    知识扩充:同一个文件夹中只能有一个类是public的,而且main()方法绝对是包含在public类当中

三、构造方法(构造器、构造函数)

  作用:1、主要是用来创建对象    2、初始化成员变量 

  特点:1、必须与类名相同   2、没有返回值类型,void也没有  3、每一个类都会有一个隐式的构造方法,没有参数和方法体  4、手动添加显式的构造方法那么隐式的构造方法自动消失

  

    知识扩充:面向对象编程思维步骤:1、考虑有几个对象  2、通过对象确定有几个类  3、找出每一个类中存在的方法  4、调用相应的方法实现功能

例如这个简单的例子:public class test{
          public static void main(String[] args){
              Mouse mouse = new Mouse();
              mouse.name = "mick";
        
              Cat cat = new Cat();
              cat.name = "Tom";
        
              cat.Catch(mouse);
        }
      }

      class Cat{
          String name;
    
          public void Catch(Mouse mouse){
              mouse.cry();
          }
      }

      class Mouse{
          String name;
    
          public void cry(){
              System.out.println(name + "  is crying");
          }
      }

            思维方式:找出有两个对象tom猫和mick老鼠。进而找出有两个类一个是猫类一个是老鼠类,然后确定两个对象内部分别包含两个方法一个是属于tom对象的catch()方法一个是属于mick 对象的cry()方法

 

    专家模式:一个方法改变的是那个对象的状态(属性),那么该方法就属于谁

四、JVM(JAVA虚拟机)的四个区域

  1、代码区(code segment):存放的是字节码

  2、堆区(heap segment):存放的是对象

  3、栈区(Stack segment):存放的是局部变量

  4、栈区的一块特殊区域(static segment):存放字符串常量和静态变量

    堆和栈的区别:堆可以保存大的数据类型运行速度慢;栈只可以保存小的数据内容但是运行速度快

    局部变量和成员变量重名的问题解决办法

         办法:该情况下使用this指针,因为每一个对象都有一个this指针,相当于当前对象的引用。原理如下图所示:

                        图  1

 

五、成员变量初始化

  1、JAVA当中,成员变量会默认初始化

      数值类型:默认为0     布尔类型(boolean):默认为false      字符类型(char):默认是空   引用数据类型:默认是NULL

  null值的含义:表示一个引用没有指向任何一个对象,也就是谁栈中的一个引用没有指向任何一个栈中的内存地址,如上图所示形象来说就是“引用”的那个箭头没有

  2、JAVA中的垃圾回收机制(GC)

    如果一个对象没有指向任何一个引用,那么这个对象就是JAVA中的垃圾,JAVA会自动调用GC自动收回

      知识延伸:如果说在JAVA中需要一个对象使用完后就被GC收回,最好的变法就是把指向这个对象的引用设置为NULL

 

六、Static关键字

  1、加上static的成员变量称之为静态变量(类变量)

    static segment中的数据不能重复,所有对象共享其数据,其中一个对象对其进行修改之后那么其他的对象的值也随之改变

    因为所有对象共享它,跟对象没有任何关系,所以也就称之为类变量;可以使用  类名.变量名  来调用

    如下图所示逻辑:

    

                    图  2

    堆里面的两个对象共享 Static segment里面的静态变量Corcol;如果要改变其值只需使用  Person.Corcol  即可改变其值

  2、加上static的方法称之为静态方法(类方法)

    类方法不需要创建对象来调用,可以直接是用  类名.方法名  调用

    注意:(1)、静态的方法只能访问静态的成员变量

       (2)、非静态的方法既可以访问静态的成员变量也可以访问非静态的成员变量

      知识延伸:为什么main()方法是static的?

            因为main()方法是程序的入口,在使用main()方法之前不允许有任何的对象被调用,所以说main()方法务必是static的

 

以上知识均为本人学习总结所得、如有错误请加以批评指正

    

posted @ 2013-01-29 00:08  bod08zhongkewen  阅读(1448)  评论(0编辑  收藏  举报