1.    Java语言的运行:

   Java语言是运行下JVM上,隔离了Java代码与操作系统的直接交互。可以做到一次编写,到处运行,使得系统的移植、平台的迁移非常的容易。Java语言的运行过程是首先Java虚拟机将Java文件编译成class文件,也就是可以给JVM识别的字节码文件。当类发生调用关系的时候,程序计数器读取相应的行,JVM转化为相应的指令调用操作系统进行执行。(了解)

   ps:

class HelloWorld{
    public static void main(String args[]){
        System.out.println("Hello World!");
    }
}
class HelloWorld{
    public static void main(String args[]){
        System.out.println("Hello World!");
    }
}


            在命令行到相应目录下,用Javac  HelloWorld.java 进行对Java文件的编译过程,用Java  HelloWolrld 运行编译文件。当然运用Java的集成开发环境IDE工具帮我们省略了这些过程。

例如现在最流行的eclipse工具。前提是机器上已经安装过JDK。


 2.    Java面向对象思想:

    面向对象跟面向过程主要区别是问题流程处理中,是链式的执行第一步,第二步。采用过程为维度。比如说:比如要人去买酒

        面向过程:1拿钱 2进电梯 3出电梯 4走到商店 5买酒 6回来

public class ProcedureOriented{
    void main(){
        someOne.catchMoney();
        someOne.enterLift();
        someOne.outerLift();
        someOne.enterShop();
        someOne.buyBeer();
        someOne.backHome();    
    }
    .....
}
public class ProcedureOriented{
    void main(){
        someOne.catchMoney();
        someOne.enterLift();
        someOne.outerLift();
        someOne.enterShop();
        someOne.buyBeer();
        someOne.backHome();    
    }
    .....
}

        面向对象:1人 2酒 3钱 (人 ,酒,钱)被看作对象

public class People{
    public String name ;     
    public void buySomething(Beer beer){
        System.out.println(name + " buy "+ beer.name);
    }        
}
public class People{
    public String name ;     
    public void buySomething(Beer beer){
        System.out.println(name + " buy "+ beer.name);
    }        
}

    面向对象的优势就体现出来了,针对对象的封装,可以多次利用,节约成本。对象可以封装相应的属性以及方法,针对修改,可以最小范围的变动。但是面向过程针对改动就很难后期变更。


3.    面向对象的开发思维:

            就是在程序里面首先分解出来的应该是注意不再是一步一步的过程了,而是首先考虑在这个问题域里面或者程序里面应该具有有哪些对象,

    所以从现在开始考虑任何问题脑子里不要再想着我实现这件事我第一步应该干什么,第二步应该干什么,如果这样想,那就是面向过程的思维了。

    面向对象的思维是,当我碰到这个问题域的时候,碰到这个程序的时候,我首先应该把这个问题里有哪些对象,对象与对象之间有什么关系抽象出来。

4.    Java类与对象的区别:

  1.        类(class)是一个抽象的概念,为一个对象抽象出相应的属性与行为。     
class Cat{
    //猫的名字
    public String name ;
    //猫的颜色
    public String color;    
    //猫有吃东西的行为
    public void eat(){
        System.out.println(name + "eat...");
    }
    
    public Cat(String color,String name){
        this.color = color ;
        this.name = name;
    }
}
class Cat{
    //猫的名字
    public String name ;
    //猫的颜色
    public String color;    
    //猫有吃东西的行为
    public void eat(){
        System.out.println(name + "eat...");
    }
    
    public Cat(String color,String name){
        this.color = color ;
        this.name = name;
    }
}

(2)    对象是类的一个具体,相当于一个类的实例,一个实实在在存在的东西, cat 就是一个对象

Cat cat = new Cat("yellow","Jane");
Cat cat = new Cat("yellow","Jane");

(3)     类是一个静态的概念,类只是一个标准,一个抽象,执行类的非静态方法,需要有相应的对象去调用。

ps: 在JVM的内存模型中,类所占的空间是在方法区。对象所占的内存存放在堆内存中。