`
Chang0501
  • 浏览: 23784 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

几个关键字的小结

阅读更多

1static变量:

首先我们要明确,java程序是一个一个类构成的,每创建一个类的对象,就会开辟一块以类为模版的内存空间,这个空间中包括成员变量与成员函数,那么类中静态成员变量与普通的成员变量的区别我们可以依据于上述原理,用图来进行表示。

假设有一个学生类如下

public class Student{

     private String name; //学生的名字

     public static String school;  //学生的学校

     public void display(){ //定义一个显示信息的方法

       System.out.println(“学生姓名:”+name+”所在学校”+school);

     }

}

 

 

当创建两个不同的对象时stu1stu2时有:

 

 



 

 

我们知道,每个学生的姓名在对象中可以单独开辟一块内存,但是同一个学校的学生的学校名字可以同时用一块内存来存储。因此在这里用到了static关键字。这种用法有两种好处:一、节约内存,如果一个学校的人数比较多并且每个人都要开辟一块存储完全相同内容的内存空间的话那么就会早成浪费。二、便于维护,当该学校需要更改名字的时候只要该一个学生中school变量的名字就可以了,从途中可以看出,它们公用了一块内存空间。这就使得维护变得方便了许多。这便是static变量的优异性。三、在另一个类中要引用该类的static变量时只需要类名加上变量名即可,比如说Student.school这样的话使得不同的类之间沟通就变得方便许多。

 

2this关键字:

对与java的初学者来说this关键字是一个比较难以理解的内容,我们通过一下两个例子来看

 

(1)public class Student{

private String name //定义一个名字变量

public void setName(String name){  //定义一个设置名字的方法

      this.name = name;

}

}

在这里,由于类中变量同方法中的形参变量的名字相同,因此在赋值时必须区分哪一个是成员变量,哪一个是形参变量。而this在这里是指调用该方法(setName())的对象,就是说我现在定义一个对象stu并调用setName()方法,此时this指的就是stu

 

2public class Student{

         private String name;

         public Student(){  //无参构造器

             this(“zhangsan”);

}

public Student(String name){  //重载构造器

    this.name = name;

}

}

如果我们创建一个Student stu = new Student()时,调用的是无参构造器来创建的这一个对象,在构造器中他又会根据参数匹配原则调用另一个构造器。将name变量的初始值设为zhangsan。因此this关键字的第二个意思是指该类的构造器。在这里我们必须注意一点就是通过this调用构造器的话一定要将其放到该方法的第一行中。否则会报错。如

     public Student(){

         system.out.println(“this放在第二行”);

         this(“zhangsan”);  //没有将其放在第一行是错误的

}

 

 

 

 

3public protectedprivate

eclipse中,文件的层次是project àpackageàclass,因此这几个关键字所修饰的变量以及方法的作用域可以用如下的表格来表示

 

不同project

不同package

不同class

public

×

protected

×

×

private

×

×

×

 

我们可以看出他们的封装程度是依次加深的。还有两点需要注意,一是除了在接口中,其他类里如果没有规定这几个关键字,那么变量或者方法会有一个默认值,它是介于protectedprivate之间的,而在接口当中默认设置是public static的。二是如果在子类中重写父类的方法,那么该方法的可见程度一定要比父类中的方法高。否则编译时便会出错。

以上是我对这几个关键字的一个小结,如果想真正掌握的话还必须在写程序中多加使用。

 

 

  • 大小: 13 KB
0
10
分享到:
评论

相关推荐

    C#中的Internal关键字小结

    首先,理清几个概念:项目(project)、解决方案(solution)、程序集(assembly)、命名空间(namespace)。 项目(project) 就是我们开发的一个软件。.NET下,项目有多种类型,如控制台、Windows应用程序、类库...

    c#多线程中Lock()关键字的用法小结

    本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。 每个线程都有自己的资源,但是代码区是共享...

    sqlserver分页查询处理方法小结

    sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。 下面是本人在网上查阅到的几种查询脚本...

    创建 dict 的几种方法学习小结

    创建 dict 的几种方法学习小结 dict(全称 dictionary,可以翻译为“字典”),其使用“键-值(key-value)”对儿的方式存储多项数据,是一个无序可变的集合。 dict 的创建可以有多种方式: 1. 通过直接赋值方式...

    java数据结构与算法第二版

    小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程...

    Java数据结构和算法(第二版)

    小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 ...

    javascript检测对象中是否存在某个属性判断方法小结

    检测对象中属性的存在与否可以通过几种方法来判断。 1.使用in关键字该方法可以判断对象的自有属性和继承来的属性是否存在。 代码如下: var o={x:1}; “x” in o; //true,自有属性存在 “y” in o; //false ...

    Java数据结构和算法中文第二版

    小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程...

    perl语言脚本文档说明

    4.2.3 回顾以前的几个功能 44 4.3 对数组进行操作 45 4.3.1 遍历数组 46 4.3.2 在数组与标量之间进行转换 46 4.3.3 给数组重新排序 48 4.4 练习:做一个小游戏 49 4.5 课时小结 51 4.6 课外作业 51 4.6.1 ...

    24日学好Perl语言

    4.2.3 回顾以前的几个功能 44 4.3 对数组进行操作 45 4.3.1 遍历数组 46 4.3.2 在数组与标量之间进行转换 46 4.3.3 给数组重新排序 48 4.4 练习:做一个小游戏 49 4.5 课时小结 51 4.6 课外作业 51 4.6.1 专家答疑 ...

    perl学习文档

    4.2.3 回顾以前的几个功能 44 4.3 对数组进行操作 45 4.3.1 遍历数组 46 4.3.2 在数组与标量之间进行转换 46 4.3.3 给数组重新排序 48 4.4 练习:做一个小游戏 49 4.5 课时小结 51 4.6 课外作业 51 4.6.1 专家答疑 ...

    PERL编程24学时教程.pdf

    4.2.3 回顾以前的几个功能 44 4.3 对数组进行操作 45 4.3.1 遍历数组 46 4.3.2 在数组与标量之间进行转换 46 4.3.3 给数组重新排序 48 4.4 练习:做一个小游戏 49 4.5 课时小结 51 4.6 课外作业 51 4.6.1 专家答疑 ...

    PERL编程24学时教程

    4.2.3 回顾以前的几个功能 44 4.3 对数组进行操作 45 4.3.1 遍历数组 46 4.3.2 在数组与标量之间进行转换 46 4.3.3 给数组重新排序 48 4.4 练习:做一个小游戏 49 4.5 课时小结 51 4.6 课外作业 51 4.6.1 专家答疑 ...

    CSS中的inherit使用技巧小结

    大多数开发者都知道inherit关键字,但有几个新的CSS3继承特性你可能不知道… property: inherit;  inherit关键字代表“使用指定给父元素的所有值”。如果父元素中没有明确的值定义,浏览器搜寻DOM树直到找到相应的...

    Perl编程24学时教程(PDF格式,共24章)

    4.2.3 回顾以前的几个功能 44 4.3 对数组进行操作 45 4.3.1 遍历数组 46 4.3.2 在数组与标量之间进行转换 46 4.3.3 给数组重新排序 48 4.4 练习:做一个小游戏 49 4.5 课时小结 51 4.6 课外作业 51 4.6.1 专家答疑 ...

    perl编程24学时教程.rar

    4.2.3 回顾以前的几个功能 44 4.3 对数组进行操作 45 4.3.1 遍历数组 46 4.3.2 在数组与标量之间进行转换 46 4.3.3 给数组重新排序 48 4.4 练习:做一个小游戏 49 4.5 课时小结 51 4.6 课外作业 51 4.6.1 ...

    Java数据结构和算法中文第二版(2)

    小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 ...

    Java数据结构和算法中文第二版(1)

    小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 ...

Global site tag (gtag.js) - Google Analytics