`
白粥若水
  • 浏览: 103507 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

关于一些Java关键字的学习体会和心得

阅读更多

   1 首先,访问权限修饰符

 

        1.1  包访问权限

                   包访问权限即是默认访问权限,有时也被表现为friendly。这就意味着,每一个使用默认访问权限的成员(包括类,属性,方法等)对当前包中的所有类都是开放的。

                   由于一个编译单元(即一个文件),只能隶属于一个包,所以通过包访问权限,处于同一个编译单元的所有类彼此之间都是自动可访问的。

 

 

       1.2   public:接口访问权限

                   使用public关键字,就意味着public所修饰的成员(包括类,属性,方法等)对所有的类都是开放的,尤其是使用类库的客户程序员更是如此,而这一点对Java程序开发者很重要。

                   同时,我们需要注意的是,一个编译单元只允许出现一个public类,即内部类等我们需要对外(包括所处包)的类不能使用public关键字。这表示,每一个编译单元都有单一的公共接口,用public类来实现。public类的名称必须完全与含有该编译单元的文件名相匹配。这一规则使我们在实际使用避免了许多麻烦。

                   虽然不是很常用,但编译单元完全不带public类也是可能的,不过,我将忽略它。

 

 

       1.3   private:最严格的访问权限

                    关键字private的意思是,除了包含该成员的类之外,其他任何类都无法访问该成员。从这句话中可以得到,类不能用private修饰。private关键字的使用对Java最重要的特性之一——封装有很重要的作用。通常,一个由程序员提供给客户的类包含了许多方法和属性,而这些方法和属性肯定会有程序员所不愿意对客户明确开放的,而只能够“曲线”获得。如:

class ForbiddenClass{
    private  ForbiddenClass(){}
    static  ForbiddenClass    makeForbiddenClass(){
    }
}


     public class allowedClass{
         public ststic void main(String[] args){
              ForbiddenClass  x = ForbiddenClass.makeForbiddenClass();
      }

}

 

                   在这个例子中,不能通过构造器来创建一个ForbiddenClass对象,如现在在main方法里面写“ForbiddenClass x = new ForbiddenClass();”便是非法的,而只能够调用makeForbiddenClass()方法才能实现这个目的。

 

 

 

           1.4  protected:继承访问权限

                             照我的理解,继承访问权限只是包访问权限的小扩展。protected在包访问权限的基础上有了继承访问权限。这就是说protected成员可以被其子类(不论其是不是在同一个包里面)访问。

 

 

 

 

 

2 this关键字

         我用一句话理解this关键字的作用就是:this可以指代“调用该方法的对象”的引用。

  

         我们知道,this关键字只能在方法的内部被使用,而在这个方法中this与使用该方法的引用并无不同。甚至,我们可以在一个需要返回对象的方法中这么写:return  this;

 

         this还有一个特殊的用法,就是在多构造器类中的应用。有时我们可能想在一个构造器中调用另一个构造器,这时this关键字可以帮忙。但要注意的是,在一个构造器A中,我们只能调用一次不同的构造器,且必须将之写在A方法体的第一排。

           

 

 

 

3  super关键字

            如果我们能很好理解this关键字的话,那么我们也能够很好的理解super关键字,只需将我对this关键字的理解改成:super可以指代“调用该方法的对象父类”的引用,就行了。

 

 

 

 

4 final关键字

            final从字面上理解是“这是不可改变的”的意思,实际上,在Java语言中,它就是这个意思。通常,不想改变的理由有两种:设计或效率。

            final的使用有三种情况:数据,方法和类。

 

            4.1  final数据

                        数据即是属性。在设计时,有些数据或属性的恒定不变会非常有用:1.一个永不改变的编译时常量 2.一个在运行时被初始化的值,而程序设计者不希望客户改变它。在Java中,这类数据必须是基本数据类型。

                        一个即是static又是final的属性只占据一段不能被改变的存储空间。

            

                         对于基本类型final使数值不变,而对于对象的引用,final使引用恒定不变。当我们new一个final对象的时候,就无法使这个对象的引用改为指向另外一个对象。然而,该对象本身还是可以被修改的。

                        对上面这段话我是很长一段时间没搞懂的,但自从我创建了一个final数组后,我便有点明白了,毕竟数组也还是对象的。各位朋友可以去试试。

 

 

 

            4.2  final方法

                        据《thinking in Java》,使用final方法的原因有2个。其一:将方法锁定,以防止任何继承类修改它的含义,即该方法无法被重写。其二:效率。由于我学习的不够深入,暂时只能理解第一个原因。

 

 

 

            4.3  final类

                        当某个类被定义为final时,就表明这个类不能被继承。换句话说,处于某种考虑,这个类的设计不能被改变,或者出于安全的考虑,不希望这个类有子类。

                        注意,由于final类禁止继承,所以final类中的所有方法都隐式定义为final 的,因为,你无法重写之。

 

 

 

5.static关键字

             static是静态的意思。

             一般来说,当我们创建一个类的对象时,我们就复制了一份这个类的内存空间,包括属性和方法,然后对之进行操作。每一个对象有各自的内存空间。

              然而,在实际中,我们可能会想为某个特别的属性分配单一的内存空间,而不考虑究竟要创建多少个对象,甚至根本就不想创建对象,比如一些计数的属性。或者,我们希望某个方法不与该类的对象相关联,而只与该类相关联,比如,我们再打印数据时,不想每次都创建一个“打印”类吧。这个时候static关键字起作用了。

 

               一个类的static属性只有一块内存空间,看一下例子

public staticTest{
        static int a = 1;

        public static void main(String[] args){
                  staticTest  s1 = new staticTest();
                  staticTest  s2 = new staticTest();

                   System.out.println("s1.i");
                   System.out.println("s2.i");

                   s1.i = 2;

                   System.out.println("s1.i");
                   System.out.println("s2.i");

         }
}

/*  output:  1
                  1
                  2
                  2
*/

 

       static方法的重要用法就是在不创建任何对象的前提下九可以调用它,如我们常用的System.out.println();方法

 

    

 

       还有一个需要注意的地方就是,在系统加载一个类的时候,该类的static属性和static块会被首先加载,甚至前于main方法

 

2
7
分享到:
评论

相关推荐

    Linux中Java变量与java关键字。MyEclipse快捷键大全。Java方法

    在IT行业中,编程语言是构建软件世界的基石,而Java作为其中的一员,因其强大的跨平台性和丰富的库支持,深受开发者喜爱。...通过不断的实践和学习,我们可以提高编程效率,编写出更加优秀的Java程序。

    java学习心得体会

    这篇心得体会旨在分享我在学习Java过程中的关键知识点,希望能为初学者提供一些指导和启示。 首先,Java的基础至关重要。这包括对基本语法的理解,如数据类型(如整型、浮点型、字符型、布尔型)、变量的声明与赋值...

    2022年java学习心得体会_JAVA实训的心得.docx

    从“2022年java学习心得体会”文档中可以看出,作者通过自己的学习经历,分享了关于Java学习的一些关键点和经验。 首先,Java的学习需要扎实的基础。作者提到,初次接触Java时,对main方法的定义感到困惑,但通过...

    java的一些学习心得

    【Java学习心得】 Java是一种广泛使用的面向对象的编程语言,其设计...以上就是我在学习Java过程中积累的一些心得和体会,Java的学习是一个不断深化和扩展的过程,只有不断探索和实践,才能真正成为Java编程的高手。

    Java线程学习和总结

    本文档("Java线程学习和总结.htm")可能包含了更多关于线程的实例、源码分析和常见问题解决方案,你可以通过阅读来进一步加深对Java线程的理解。同时,"Java线程学习和总结.files"目录下的文件可能是与文章相关的...

    Java清华大学学生学习Java的心得总结

    这份由清华大学学生编写的“Java笔记”文档,无疑为我们提供了一个宝贵的资源,展示了他们学习Java的心得体会。以下是笔记中涉及的一些核心知识点: 1. **Java基础知识**:Java是一种面向对象的编程语言,它强调...

    Java的实训心得体会范文.doc

    以下是对Java实训的一些主要心得体会: 首先,Java的学习始于基础。编写第一个“Hello World”程序时,我们开始接触Java的基础语法,例如main方法的定义。了解每个关键字的作用和规则是学习的起点,比如public、...

    Java学习的详细心得笔记

    Java学习的详细心得笔记是一份宝贵的资源,特别适合那些刚刚踏入Java编程领域的初学者。这份笔记涵盖了许多关键知识点,旨在帮助读者系统地理解和掌握Java语言的基础及进阶内容。以下是一些主要的学习要点: 1. **...

    JAVA做完项目心得

    4. **IO流**:在处理文件输入输出时,我学习了Java的IO流系统,包括字符流和字节流,以及如何进行文件读写操作,这对于项目的数据存储和读取至关重要。 5. **多线程**:为了提升程序的并发性能,我接触了Java的多...

    java学习心得总结.pdf

    以下是一些关于Java学习的关键点和注意事项: 1. **数据类型**:Java是一种强类型语言,这意味着每个变量在使用前必须声明其类型。Java的数据类型分为基本类型和引用类型,包括整型、浮点型、字符型、布尔型以及类...

    java 心得体会 基础总结

    - **J2SE(Java Platform, Standard Edition)**: 是Java的基础版本,提供了一套标准的API集合,适用于桌面应用程序和一些基本的应用开发。 - **J2ME(Java Platform, Micro Edition)**: 针对移动设备和嵌入式系统...

    汉字转拼音,关键字搜索心得

    以下将详细介绍汉字转拼音和关键字搜索的相关知识点,并分享一些实践经验。 首先,汉字转拼音是通过特定的算法或库来完成的。在中国,每个汉字都有一个或多个标准的拼音表示,如“北京”可以转化为“Běijīng”,...

    Java并发编程学习笔记.rar

    这本"Java并发编程学习笔记"可能是作者在深入研究Java并发特性、工具和最佳实践过程中积累的心得体会。下面,我们将根据这个主题,探讨一些关键的Java并发编程知识点。 1. **线程与进程**:在多任务环境中,线程是...

    J2SE 学习心得(一些常用知识要点)PART1

    Java Standard Edition (J2SE) 是 Java 语言的核心部分,提供了构建桌面应用和网络服务的基础。在学习 J2SE 的过程中,了解并掌握其基础知识至关重要。以下是一些关键知识点: 1. 参数传递:在 Java 中,基本数据...

    Java技术_开发心得_两年开发经验_(文章汇总...热)

    这个压缩包文件名为"Java技术文章",显然包含了作者对于Java编程语言在实际应用中的深入理解和心得体会。以下是基于这些信息提炼出的一些Java技术相关的知识点: 1. **Java基础知识**:作为开发者,对Java的基础...

    JAVA入门实例代码及学习笔记

    9. **知识点.txt**:这个文件可能包含了对上述知识点的详细解释,或者是作者在学习过程中总结的一些技巧和心得,对于深入学习JAVA非常有帮助。 总的来说,这份【JAVA入门实例代码及学习笔记】是全面掌握JAVA SE开发...

    Java中抽象类的学习总结

    ### Java中抽象类的学习总结 #### 一、抽象类的概念与特点 抽象类是Java编程语言中的一个重要概念,主要用于提供一种部分实现的功能,并允许子类完成剩余的实现。抽象类的特点如下: - **抽象方法**: 在定义Java...

    java 开发教程 java 开发教程 java 开发教程

    "感悟 (2).txt"可能包含作者在学习或使用Java过程中的心得体会,或者是一些编程技巧和经验分享。 总的来说,Java开发教程旨在帮助开发者系统地学习Java编程,从基本语法到高级特性的运用,以及如何与其他技术结合,...

    java综合实验代码+报告.rar

    【标题】"java综合实验代码+报告.rar"涵盖了面向对象编程的核心概念,主要基于Java语言进行深入学习和实践。这个压缩包包含了一份完整的Java实验代码和相应的实验报告,旨在帮助学习者理解并掌握Java编程的基本原理...

Global site tag (gtag.js) - Google Analytics