笔记之java基础-06

第六天,精致的猪猪女孩也可以敲代码

1:Java中的参数传递问题。(认真看下面内存图)
基本类型:形式参数的改变对实际参数没有影响。

引用类型:形式参数的改变直接影响实际参数。

笔记之java基础-06

2、面向对象:概念:

  面向过程:是以函数为基础,完成各种操作,强调的是过程。

  面向对象:是以对象为基础,完成各种操作,强调的是对象,结果

  举例:

      孙悟空三打白骨精:

      面向过程:

              打():

                    孙悟空、白骨精

       面向对象:

              孙悟空,打(打白骨精)

面向对象的思想特点:

A:是一种更符合人们思考习惯的思想

B:可以将复杂的事情将淡化

C:将程序员由执行者转换为指挥者

举例:

   买电脑:

          面向过程:自己做所有的事情(查品牌,地点,价格等)

          面向对象:田野(中关村卖电脑)

   吃饭:

          面向过程:买菜、洗菜、做菜、吃菜、洗盘子....

          面向对象:找对象做

  旅游:

          面向过程:路线、火车篇、宾馆、去火车站

          面向对象:旅行社

  招聘示例:

         面向过程:老板自己做所有事情

         面向对象:老板找相关技能人员,分工合作,老板只是执行者 

以后做事情:

     找对象,让对象做事情(JDK提供了好多)

     找不到对象自己做对象,自己可以用,还可以给别人用 

来一个实例,体现面向对象和面向过程的区别:

把大象装进冰箱: 

面向过程:

A:打开冰箱门

B:装进大象

C:关闭冰箱门 

代码体现:

 Class  测试类

{

public static void main (String[] args)

    {

public static void open();

public static void in();

System.out.println("关闭冰箱门")

    }

                public static void open()

{

System.out.println("打开冰箱门")

}

public static void in()

{

System.out.println("装进大象")

}

public static void main()

{

System.out.println("关闭冰箱门")

}

}

面向对象:

怎么让我们的操作更符合面向对象的思想?

A:分析该系统有哪些对象

B:明确每个对象可以做什么

C:明确各个对象间的关系?

步骤:

A:有哪些?    名词提取法。---UML(统一建模语言)

        大象

        冰箱

        测试

B:每个对象有什么?

        大象: in()  大象是进冰箱的对象

冰箱:

    open()

    close()  操作都是冰箱

测试:

    main()

     C:测试:

       测试中调用大象和冰箱的功能 

代码实现: 

class 大象

{

public void in()

{

System.out.println("装进大象")

}

}

class 冰箱

{

public void open()

{

System.out.println("装进大象")

}

public void close()

{

System.out.println("关闭冰箱门")

}

class 测试类

{

public static void main(String[] args)

{

冰箱对象.open();

大象对象.in();

冰箱对象.close()

}

}

3、开发的过程其实就是不断地创建对象,使用对象,指挥对象做事情。

设计的过程其实就是在管理和维护对象之间的关系。

面向对象的特征:

封装:

继承:

多态:

4、类与对象的关系:

我们学习编程语言,其实就是为了把显示世界的事物通过编程语言体现出来。 

先来研究事物:

属性:外在特征

行为:能够做什么。

java语言,最基本的单位是类,类就是用来体现事物的。

类:

成员变量    属性

成员方法    行为    

类:类就是属性和行为的集合,类是一个抽象的概念。

对象:对象就是类的具体的存在和体现

举例:

学生这个事物  -----

张三          -----对象

使用计算机语言就是不断地描述显示世界的东西。

学生事物:

    属性:

    姓名,年龄,性别......

行为:

    学习,吃饭,睡觉

把事物转换成java中的类:

学生类:

         成员变量:就是在定义变量,在类一进去就定义变量。

          定义在类中方法外的变量是成员变量。      

姓名,年龄,性别......

成员方法:就是函数,先把static去掉,其他不变

    学习,吃饭,睡觉

代码实现:
class Student

{

String name;

int age;

char sex; 

public void study()

{

System.out.println("学生爱学习");

}

public void eat()

{

System.out.println("学生吃饭");

}

public void sleep()

{

System.out.println("学生睡觉");

}

}

5、java中类的内存图

      1)以下代码的内存图:

        class Car
{
        tring brand = "路虎";
int price;
String color;
public void run()
{
System.out.println("牌子为:"+brand+"颜色为  "+color+"的汽车启动了");
}
       public void stop()
{
System.out.println("牌子为:"+brand+"颜色为  "+color+"的汽车停止了");
}
}
class CarTest 
{
public static void main(String[] args) 
{
Car c = new Car();
System.out.println(c.brand+"---"+c.price+"---"+c.color);
c.brand = "奥拓";
c.price = 20000;
c.color = "蓝色";
  System.out.println(c.brand+"---"+c.price+"---"+c.color);
  c.run();
  c.stop();

}

}

笔记之java基础-06

2)学生类的内存图

笔记之java基础-06

6、成员变量和局部变量的区别?

  A:定义位置区别

            成员变量  在类中,方法外

     局部变量  在方法中,或者方法的形式参数

B:初始化值的问题

            成员变量   有默认初始化值

    局部变量   没有默认初始化值,先初始化在使用

C:存储位置区别:

            成员变量   存在堆中,随着对象的存在而存在,随着对象的消失而消失。

    局部变量   存在栈中,随着方法的调用而存在,随着方法调用完毕而消失。

使用过程中,遵循一个原则,就近原则

class Student

{

int age; 

public void show()

{

int age;

System.out.println(age);//会报错,可能尚未初始化age,当局部变量和成员变量用相同的变量定义时,会首先使用局部变量,因为局部变量需要初始化,所以报错

//若去掉局部变量 int age,则会输出0,因为程序会首先在局部变量中搜索,当没有时就在成员变量中搜索,成员变量有默认值。

}

class StudentTest1

{

public static void main(String[] args)

{

Student s = new Student();

s.show();

}

}