Java的一些基本特性

来源:互联网 发布:淘宝商家在哪找的货源 编辑:程序博客网 时间:2024/05/24 02:37

之所以面向对象的编程好,很大程度上因为它们的重用性,可扩展性,维护和替换更加方便。作为面向对象的程序设计语言,Java有三大特征:封装(encapsulation),继承(inheritance),多态(polymorphism)。在设计的时候,首先应该考虑这个项目需要哪些类,然后考虑每个类需要什么属性和方法,最后考虑各个类之间有什么样的关系。通常来说,要看需要构建哪些类,主要整个项目中大概要从名词看起,当然,这个东西仁者见仁,只要合乎逻辑就行,慢慢形成习惯就会越来越精确,没有绝对的精确。在结构化的设计中,很多时候将名词相关的写成model类,而将动词相关的写成service类,其它的比如数据相关的,工具相关的等等,再单独设计成其它的类。类包含了数据和方法,将数据和方法放在一个类中,这就构成了基本的封装。通过一些关键词的限定,比如public, private等等,就构成了进一步的封装。这样就可以实现信息的公开和隐藏。

任何方法都必须有返回值。(注意,构造方法除外,而且也不能加void)。如果是void方法,则要么就直接不管,要么就return; 啥也不返回。 一旦返回了,该方法就结束了,如果后面还有代码就不会执行了。

Java的命名约定

类名:首字母大写,如果有多个单词,那么每个单词的首字母大写,不要用下划线,比如StudentInformation

方法和属性:首字母小写,如果有多个单词,那么从第二个单词开始首字母大写,比如 addStudentName,studentName注意:构造方法除外,它必须和类名一致。

成员变量和局部变量

1)共同点:使用前都必须声明

2)不同点:

a.成员变量不用赋初值(即可以不初始化),因为如果没有赋的话java在编译时会自动赋给它初值;局部变量(比如方法中的变量)必须在声明的时候同时为其赋初值(初始化)。

b.在内存里面,成员变量是和对象绑定的(这里不包括静态成员变量,它们是和类绑定的),它们会在创建对象的时候在"堆"里面分配到一块属于它们自己的内存单元。只要对象在内存中存在,那么该成员变量就存在。对象如果不再被使用了,那么JVM就会将其列入可回收的范围,等到合适的时机,就会将其收回; 而局部变量是和方法绑定的,并不会在创建对象的时候分配内存,而是会等到它们所在的方法被执行到的时候JVM才会为其在"栈"里面分配一块内存单元,一旦方法返回,该内存就会被回收。

对象和对象的引用

首先,必须先定义类才能定义对象。其次,创建对象其实是创建一个引用类型的变量,并且将一个对象所在的内存地址赋值给这个引用。一块某个对象所占的内存可以被多个引用所指向,(当然,每个引用在同一时刻只能指向唯一的一块内存)。如果一块内存被多个引用所指向,那么无论哪一个引用对这个对象的属性进行了修改,都会反映到其它引用上面。

对于引用和对象赋值,初学者最好是利用画内存图以搞清楚他们之间的关系


引用占用的是stack(栈内存),而数组和对象本身占用的是heap(堆内存),字符串,常量,static变量占用的是data segment,数据区。基础类型的成员变量占一块栈内存,行参(和局部变量同等对待)占用的内存也是栈内存,也就是除了静态变量,其它变量占用的都是栈内存,局部变量在方法执行完成以后方法内的局部变量占有的内存就被释放。

  比如说一个构造方法(类中本生有2个成员变量a和b)
      A (int a1, int b1)
      {
         a=a1;
         b=b1;
      }

 本身在定义的时候a1和b1也在栈内存中各占用一块内存,但是一旦赋值给a和b以后,a1和b1所占的空间就被释放了。假如说有一个方法有返回值,那么也是,先在栈内存中分配一块临时空间,存储该存储的,赋值给想赋的,或者打印什么的,等执行完成后,仍然要释放内存。