初学Java的备忘录
尽管我曾经尝试过阅读一些关于Java的书籍,但总是感觉像是隔靴搔痒,没有真正触及到核心。当我开始接触Java这门新技术时,我深切地感受到了初恋般的初次体验——既充满了甜蜜,又伴随着痛苦。尤其是当我试图运行一个最简单的Helloworld程序时,却不断遭遇Excepion in thread "main" java.lan.NoClassDefFoundError错误,让我倍感挫折。
为了解决这个问题,我不得不上网查找资料,不断搜索和学习。虽然我的记忆力有限,但我将重要的信息保存下来,以备不时之需。每当我解决一个问题时,都会有一种成就感涌上心头。
对于JDK的安装和配置,我经历了许多波折。在安装完JDK之后,我按照步骤进行了配置,以确保能够正确编译和运行程序(假定jdk版本为1.4.0)。我将jdk1.4.0安装在了C盘的根目录下,然后根据不同操作系统的要求,进行了相应的环境变量设置。
当我在屏幕上终于看到输出的Hello world时,我倍感振奋。这标志着我近一年来在Java编程道路上的重要进步。我仍然记得开始学习C++和面向对象时的知识,这些经验使我在熟悉JDK环境后,能够更顺利地继续学习。
相较于C语言中的指针,Java中的String类让我感觉更加便捷。对于曾经熟悉Object Pascal的我来说,Java的语法虽然与C++略有不同,但并未让我感到困扰。我逐渐适应了Java的语法规则,并开始欣赏它的简洁和清晰。
在Java程序中,类是一个重要的概念。一个Java程序通常包含在一个或多个类中,这些类包含程序的主要方法和其他辅助方法。类的定义和Pascal中的单元类似,文件名需要与类名保持一致,这体现了Java对大小写的严格要求。
关于方法的定义,public表示此方法可以被其他类直接调用,static表示该方法在类的所有对象中是唯一的。当我需要创建一个类的所有实例都公用的变量时,我会使用静态变量。这样的变量只有一个实例,所有对象都共享这个实例变量。Java为静态变量分配永久存储空间,这是为了确保所有对象都能访问到这个共享变量。
虽然我在学习Java的过程中遇到了许多困难和挫折,但我从未放弃。每一次解决问题都让我更加深入地理解了这门语言。我相信,只要我继续努力,总有一天我会成为Java编程的佼佼者。在编程的世界里,有一个名为Block的类,其设计理念独树一帜。通过这个类,我们可以明白静态关键字的重要性以及其在类定义中的应用。静态变量是每个Block类实例共享的资源。这意味着无论我们创建多少个Block实例,它们都访问并修改同一个number变量。这个number变量不是某个实例的私有财产,而是整个类的共同财产,因此被称为类变量或静态变量。
深入了解Static关键字后,我们会发现它不仅仅能定义静态变量,还可以定义静态成员函数。这些静态成员函数或变量,可以直接通过类名来调用。这样的设计逻辑十分清晰:既然所有对象都使用的是同一个变量或方法,那么我们就不需要从任何一个具体对象去引用它,直接通过类名即可。这种设计方式对于实现全局函数和全局变量非常有帮助,可以让我们在编写程序时更加高效、便捷。
当我们需要定义所有程序都需要访问的全局变量时,通常会使用“public final static”这样的声明方式。这种全局变量的定义方式,对于程序的运行至关重要。
初学者常常会遇到一个问题:在静态方法中不能引用非静态变量。这是因为静态方法可以在没有创建实例的情况下被调用,而非静态成员变量则是对象的属性,必须在对象存在时才能被引用。如果在对象尚未创建实例的情况下,就在静态方法中调用非静态成员方法,这是不合法的,因此编译器会报错。
简单来说,静态方法可以不创建对象就直接调用,而非静态方法则必须创建对象实例后才能调用。在静态方法中引用非静态方法是不可能的,因为编译器无法确定究竟要引用哪个对象的非静态方法。
关于static关键字的运用,《Think in Java》一书中有精辟的阐述。这本书详细解释了为何在某些情况下我们需要使用静态方法和静态变量。当只想用一个存储区域来保存特定数据,或者需要一个与任何对象都不关联的特殊方法时,我们就可以使用static关键字。一旦将数据或方法设为static,它们就不会与类的任何对象实例关联在一起。即使从未创建该类的任何对象,我们仍然可以调用一个static方法或访问一些static数据。而对于非static数据和方法,我们必须先创建一个对象,然后通过该对象来访问数据或方法。这是因为非static数据和方法需要知道它们操作的具体对象。由于static方法不需要创建任何对象,因此它们不能直接调用其他成员来访问非static成员或方法(因为非static成员和方法必须同一个特定的对象关联在一起)。
现在让我们回到主题上来。在编程中,void表示方法不返回任何值。如果方法返回特定的值,那么它就被视为函数;否则它只是一个过程。在我们深入了解这些概念后,可以更加灵活地运用它们来编写高效、实用的代码。至于“cambrian.render('body')”,这可能是某种特定上下文中的函数调用,其具体含义需要根据其所在的环境和框架来解释。
编程语言
- 初学Java的备忘录
- 60行js代码实现俄罗斯方块
- javascript实现最长公共子序列实例代码
- PHP登录(ajax提交数据和后台校验)实例分享
- MSSQL 数据库同步教程
- 搭建一个Koa后端项目脚手架的方法步骤
- 深入理解JavaScript程序中内存泄漏
- jQuery checkbox选中问题之prop与attr注意点分析
- YII路径的用法总结
- jquery表单插件form使用方法详解
- [js高手之路]单例模式实现模态框的示例
- vuex进阶知识点巩固
- PHP制作3D扇形统计图以及对图片进行缩放操作实例
- 使用Object.defineProperty实现简单的js双向绑定
- js中对函数设置默认参数值的3种方法
- js分页之前端代码实现和请求处理