Java学习笔记---12.面向对象编程07-Java中的static关键字用法
2010-09-20 13:38
309 查看
static关键字是今天下午看的主要内容, static关键字是this之外的又一难点, 因此也是单独罗列出来做下笔记.
static关键字应用点有3个: static变量(属性)的声明及引用、static方法的声明及引用以及static代码块的使用. 貌似静态代码块的使用机会比较少,这块跨过~ 主要笔记下前面两个部分.
1. static 属性(变量)的声明及引用
static属性是指把公共属性(也就是说,所有对象都一样的那个属性)单独列出来,用static加以静态化的属性. 这里需要先解释下, 为什么需要静态属性.
先看下面的例子代码:
在上面例子中,访问static属性,采取了如下方式: 类名称.static属性名称, 这就是说,我们可以直接由类名称对static属性进行访问,因此使用了static的属性又被称为类属性(或者说类变量).
2. static方法的声明及引用
与static属性一样, static修饰方法,也可以直接由类名称直接访问. 例子可以参照下面程序,注意注释部分:
static关键字应用点有3个: static变量(属性)的声明及引用、static方法的声明及引用以及static代码块的使用. 貌似静态代码块的使用机会比较少,这块跨过~ 主要笔记下前面两个部分.
1. static 属性(变量)的声明及引用
static属性是指把公共属性(也就是说,所有对象都一样的那个属性)单独列出来,用static加以静态化的属性. 这里需要先解释下, 为什么需要静态属性.
先看下面的例子代码:
这里分析下上面例子在内存中的占用情况, 如下图: 从上图中可以看出,三个对象中都有一个一模一样的属性city="南京",这样的设计就会存在问题: (1). 属性的内容重复存在,所有对象都有此属性; (2). 如果现在假设南京变为北京了,假设已经产生了100000个对象,则此时如果要修改其所在城市属性的内容,则肯定要修改100000遍. 解决方法: 所有的对象都共同指向同一个city属性是最好的,有一个对象将city属性修改了,则其他的也会受影响。此时就需要使用static标识city属性了。实例图如下: 使用static关键字声明类属性的例子如下,在该例子中,通过类名称.static属性的格式去访问并修改static属性.这在下面会接着说到. class Person { //方便起见,暂时不封装 String name; int age; static String bornCity = "宁波"; public Person(String name,int age) { this.name = name; this.age = age; } public String getInfo() { return "姓名: "+name+",年龄: "+age+",籍贯: "+bornCity; } } class OODemo06 { public static void main(String args[]) { Person p1 = new Person("邵逸夫",60); Person p2 = new Person("包玉刚",61); Person p3 = new Person("蒋介石",63); System.out.println("---------------------修改籍贯之前-------------------------"); System.out.println("\t|-"+p1.getInfo()); System.out.println("\t|-"+p2.getInfo()); System.out.println("\t|-"+p3.getInfo()); System.out.println("---------------------修改籍贯之前-------------------------"); //通过类名称.static属性的格式去修改属性 Person.bornCity = "北京"; System.out.println("\t|-"+p1.getInfo()); System.out.println("\t|-"+p2.getInfo()); System.out.println("\t|-"+p3.getInfo()); } }
在上面例子中,访问static属性,采取了如下方式: 类名称.static属性名称, 这就是说,我们可以直接由类名称对static属性进行访问,因此使用了static的属性又被称为类属性(或者说类变量).
2. static方法的声明及引用
与static属性一样, static修饰方法,也可以直接由类名称直接访问. 例子可以参照下面程序,注意注释部分:
这个程序需要注意的是,在static方法中,是不能够使用this关键字的. 因为static属性是隶属于全类而不是某个正在使用的实例化对象, 而this代表的是当前对象. 接下来,分别分析下static方法与static属性的访问关系,以及static方法之间的调用关系 2.1 static方法与static属性之间的关系 这里需要总结一下static方法/非static方法 可否访问 static属性/非static属性的关系: 由此可见,static属性可以被static方法和非static方法访问; 但是非static属性只能被非static方法访问,不能被static方法访问! 2.2 static方法与static方法之间的关系 这里只需要记住一句话: static方法只能直接调用static方法,否则只能通过实例化对象(new对象)来访问该方法. 这里最典型的例子是main方法的调用. 我们知道,main方法是static方法, 在main方法中要调用非static方法的话,必须要先实例化一个该方法所在类的对象,通过该实例化对象去调用方法. 如果该方法是static方法,main函数即可直接调用,不需再实例化类对象了~ 例如下面的代码, main方法只能通过实例化对象来调用方法fun(). 若fun()是定义为static的话, 就无需再new Demo()来实例化对象了... public class Demo09{ // static类型的方法只能调用static类型的方法 public static void main(String args[]){ new Demo09().fun() ; } public void fun(){ System.out.println("HELLO WORLD!!!") ; } }
相关文章推荐
- 18天Java学习---12.面向对象编程07-Java中的static关键字用法
- java学习笔记-static关键字的用法
- Java学习笔记(19)--关键字static详解
- java学习笔记(static和final关键字)
- Java学习笔记之类的、static关键字、访问权限
- 【Java学习笔记之二十】final关键字在Java继承中的用法小结
- static关键字用法学习笔记(C++)
- 【知了堂学习笔记】Java中static关键字的一些简单使用方法
- java学习笔记八:static关键字
- Java学习-static关键字的用法
- 【JAVA学习笔记】Java中的static关键字解析
- Java学习笔记之static关键字。
- Java基础学习笔记--static关键字
- Java 学习笔记(0x15) 关键字static
- 【安卓学习笔记】JAVA基础Lesson6-关键字static
- [java学习笔记]java语言核心----面向对象之static关键字
- Java学习笔记之关键字static
- java学习笔记3>static关键字知多少
- static关键字用法学习笔记(C++)
- Java之学习笔记(12)-----------数据类型转换valueOf、subString、indexOf用法