菜鸟初学Java的备忘录之第一次打仗
副标题#e#
固然以前间或的也看了些书籍,但多是隔靴搔痒,上不了正席,毫不敢说本身懂Java。打仗一门新的技能和初恋一样,都是第一次,但差异的是后者一般开始无比甜蜜,了局却很疾苦,而前者则往往开始很疾苦,越到厥后却越是有味,的确是欲罢不能.此刻我就正处于这个很疾苦的阶段,连一个最简朴的Helloworld都运行不出来,老是提示Excepion in thread "main" java.lan.NoClassDefFoundError. 只好上网去查,去搜.记性又欠好,所以搜出来赶忙生存下来,常备无患。
一般来说安装完JDK之后,必然要按一下步调设置,才可正确编译运行(假定jdk版本为1.4.0)。
1.将jdk1.4.0-安装在本身呆板的某个盘符的根目次下,如:可安装在C:\jdk下。
***(以下呈现的c:\jdk改为你本身安装JDK的目次)***
2.假如你的运行情况是win98,则在C盘根目次下,autoexec.bat文件中,插手下面两条语句:
set Path=%PATH%;c:\jdk\bin
set CLASSPATH=.;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar生存后,从头启动呆板,就完成了jdk1.4的安装。
3.假如你的运行情况是win2000的话,则需在“节制面板”的“系统”下,“高级”选项的“情况变量”中,添加两个用户变量。
个中一个用户变量的名称为“path”,值为“.;d:\j2sdk1.4.0_01\bin”,另一个用户变量的名称为"CLASSPATH",值为“.;d"\j2sdk1.4.0_01\lib\dt.jar;d:\j2sdk1.4.0_01\lib\tools.jar”,单击“确定”即可。即完成了jdk1.4.0的安装。
至于这样做的意义安在,我想应该是让Java系统在编译字节代码(.java)的时候需要一个什么东东的支持,假如你不汇报它这个东东放在哪个处所的话,它就犯傻了?!
看到屏幕上终于显示出Hello world对我来说意义重大.这是我近一年来写的第一个措施!再次踏上措施之路,的确有恍如隔世的感受,已经快找禁绝我的位置了。还好本来学的一些关于C++和面向工具的皮毛没忘光光,所以费点周折熟悉了JDK的情况之后,接下来的工作就好办多了,心里也踏实多了。
用String类直接界说字符串变量比起C中讨厌的指针,感受确实好的多,用惯了Object Pascal的我,假如再归去数* *,真要疯掉不行。
数组的界说和C,C++仿佛略有差异,记不清了,先记下来再说
int[] number=new int[5]
String[] message=new String[5]
变量这一部门想起来要交待的也就这么多吧。固然是菜鸟,但我也知道,老是如谭浩强般在语法上面死抠的人的确是呆子:大大都环境下,大度的措施基础不需要无谓的遮盖,工工致整,思路清晰就可以了。
倒是对付Java措施的框架我倒想备忘一下,一个简朴的java措施仿佛是应该是这样的框架:
class ProgramName
{
public static void main(String【】 args)
{
file&://措施的主体
}
public static int othermethod()
{
file&://其它要领
}
}
整个措施在一个大的类中,这个类的观念应该就跟pascal内里的单位差不多的。同pascal一样,文件名也要与单位名-在这里是类名-一样.Java对巨细写要求的很是严格,我语法错了好屡次都是因为这个.
Java措施就是由一个可能多个可能许多个要领在这样一个大类傍边构成的.
在如上的代码中,界说要领的参数暗示的意思别离为:
public暗示此成员函数是公有的,可以被其他类直接挪用 static暗示main成员函数在ProgramName类的所有工具中是独一的,Java将为其分派永久存储空间
#p#副标题#e#
关于Static,我想再延伸一下。有时候我们建设一个类,但愿这个类的所有实例都公用一个变量,也就是说,所有这个类的工具都只有实例变量的一个Copy.那么这样一个静态实例变量的内存就不能在建设类的实例的时候分派了,因为各人用的都是这么一个,不需要再从头分派.因此Java为其分派永久存储空间。
好比:
class Block{
static int number=50
}
这样界说之后,所有Block类的实例,不管是Block1,照旧Block2,它们都会见同一个number.这个number叫做类的变量,而不是实例变量.实际上静态变量又叫做类变量。
继承深入:用Static界说的静态成员函数可能静态变量,可以通过其所属类名来直接挪用.为什么可以这样?因为既然这个类的所有工具都是利用的这一个变量,那么理所虽然我不需要去从个中的任何一个工具去引用它,而只是通过类名引用就可以了嘛.这样不是可以利便的实现一些全局函数和全局变量吗?把所有全局的函数可能全局的变量都界说在一个静态类中,挪用的时候直接通过这一个类名就可以利便的会见所有的全局变量和全局函数了。
界说所有措施都要会见的全局变量需要利用
public final static
别的遇到一个初学者常常会碰着的问题
non-static variable mainframe cannot be referenced from a static context
即在静态要领中不能引用非静态变量
为什么?
#p#分页标题#e#
因为我们知道静态的要领可以在没有建设实例时利用,而申明为非静态的成员变量是一个工具属性,它只有在工具存在时引用,因此假如在工具未建设实例时我们在静态要领中挪用了非静态成员要领自然是犯科的,所以编译器会在这种时候给各错误.
简朴说来,静态要领可以不消建设工具就挪用,非静态要领必需有了工具的实例才气挪用.因此想在静态要领中引用非静态要领是不行能的,因为它毕竟引用的是哪个工具的非静态要领呢?编译器不行能给出谜底,因为没有工具啊,所以要报错.
最后我们看看Think in Java内里的精粹叙述,这个问题我想就很是很是的清楚了
static要害字
凡是,我们建设类时会指出谁人类的工具的外观与行为。除非用new建设谁人类的一个工具,不然实际上并未获得任何对象。只有执行了new后,才会正式生成数据存储空间,并可利用相应的要领。
但在两种非凡的景象下,上述要领并不堪用。一种景象是只想用一个存储区域来生存一个特定的数据——无论要建设几多个工具,甚至基础不建设工具。另一种景象是我们需要一个非凡的要领,它没有与这个类的任何工具关联。也就是说,纵然没有建设工具,也需要一个能挪用的要领。为满意这两方面的要求,可利用static(静态)要害字。一旦将什么对象设为static,数据或要领就不会同谁人类的任何工具实例接洽到一起。所以尽量从未建设谁人类的一个工具,仍能挪用一个static要领,或会见一些static数据。而在这之前,对付非static数据和要领,我们必需建设一个工具,并用谁人工具会见数据或要领。这是由于非static数据和要领必需知道它们操纵的详细工具。虽然,在正式利用前,由于static要领不需要建设任何工具,所以它们不行简朴地挪用其他那些成员,同时不引用一个已定名的工具,从而直接会见非static成员或要领(因为非static成员和要领必需同一个特定的工具关联到一起)。
Whoops!此刻应该回到骨干上来了
void 暗示要领返回的值的范例为空。假如返回特定的范例的话,则该要领实际上就是函数,不然就是一个进程罢了.