我也是刚刚学习java的人,经过一些学习,我摸索出了一些学习的方法,现在拿出来跟大家分享,嘿嘿!
java的学习我认为可以分为三大块
第一就是找一本好书,我认为thingk in java是本不错的,讲的是很通俗易懂的,我来说说这本书的用法,如果你没有面向对象的概念,那么你要学习一下第二章,然后接着,如果有这些概念,你可以直接看第三章,就是java的语法了,第一章我个人开来是比较难懂一些的,不建议一点基础没有的人直接上来看第一章,那样会很郁闷的,还有就是可以看看张孝祥老师的视频,讲的很不错的,是对出学者的
第二就是要多写代码,看不懂的代码没有关系,就算可以复制粘贴你要用手打进去,然后执行,如果有报错,就自己来查错,baidu.com和google.com其实很好的资源,有很多东西都在可以上面搜索到的,就是要多写代码,这样你才能熟悉java代码的格式是什么样的,语法是什么样的 ,多看别人的代码,多写别人的代码
第三就是给自己指定一些目标,什么时间要学到什么样的,最好能给自己找一个简单的项目做做,这是提高最快的方法
下面具体到java的课程学习方法
第一课就是java语言的概述
java语言的发展史:这个略了
java的工作原理:这个略了
一切都是对象:
纯粹的面向对象程序设计方法是这样的:
1. 所有的东西都是对象。可以将对象想象成为一种新型变量,它保存着数据,而且还可以对自身数据进行操作。例如类Max中保留着数据的最大值,同时还有方法updateMax根据新加入的price值产生最新的最大值,还有getMax方法返回数据的最大值。
2. 程序是一大堆对象的组合。通过消息传递,各对象知道自己应该做些什么。如果需要让对象做些事情,则须向该对象"发送一条消息"。具体来说,可以将消息想象成为一个调用请求,它调用的是从属于目标对象的一个方法。例如上面面向对象的程序段应该是属于某个类的,比如说是属于类Shopping,则Shopping中就包含了类Max的对象max,调用方法updateMax就相当于Shopping对象对max对象发出一条指令"updateMax",要求对象max重新计算最大值。
3. 每个对象都有自己的存储空间。可容纳其它对象,或者说通过封装现有的对象,可以产生新型对象。因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到任意高的复杂程度。
4. 每个对象都属于某个类。根据语法,每个对象都是某个"类"的一个"实例"。一个类的最重要的的特征就是"能将什么消息发给它?",也就是类本身有哪些操作。例如max是类Max的实例。
构建java程序
第一个java application
//这是我们的第一个java application,该程序保存在文件Property.java中
import java.util.*; /*下面我们用到了Date和Properties这两个类,是
属于java.util这个包的;*/
/*而System和Runtime这两个类,是属于
java.lang这个包的。*/
public class Property { //程序员给这个类取名为Property
public static void main(String args[]){ //main是类的主方法
System.out.println(new Date( )); //在命令行下面打印出日期
Properties p=System.getProperties( ); //获得系统的Properties对象p
p.list(System.out); //在命令行下打印出p中的各个系统变量的值
System.out.println("--- Memory Usage:"); /*打印一行字符串---Memory Usage*/
Runtime rt=Runtime.getRuntime( ); //获得系统的Runtime对象rt
System.out.println("Total Memory= "
+ rt.totalMemory( ) //打印总内存大小
+" Free Memory = "
+rt.freeMemory( )); //打印空闲内存大小
}
}
--观看动画--
在java中,程序都是以类的方式组织的,java源文件都保存在以java为后缀的.java文件当中。每个可运行的程序都是一个类文件,或者称之为字节码文件,保存在.class文件中。而作为一个java application,类中必须包含主方法,程序的执行是从main方法开始的,方法头的格式是确定不变的:
public static void main(String args[])
其中关键字public意味着方法可以由外部世界调用。main方法的参数是一个字符串数组args,虽然在本程序中没有用到,但是必须列出来。
程序的第一行非常有意思:
System.out.println(new Date());
打印语句的参数是一个日期对象Date,而创建Date对象的目的就是把它的值发给println()语句。一旦这个语句执行完毕,Date对象就没用了,而后"无用内存回收器"会将其收回。
第二行中调用了System.getProperties( )。从帮助文档中可知,getProperties( )是System类的一个静态方法(static 方法),由于它是"静态"的,所以不必创建任何对象就可以调用该方法。在第三行,Properties对象有一个名为list( )的方法,它将自己的全部内容都发给一个PrintStream对象,该对象就是list()方法的参数。
第四行和第六行是典型的打印语句,其中第六行通过运算符"+"的重载来连接多个字符串对象,在java中只有当"+"运算符作用于字符串时在能够进行重载。但是让我们仔细观察下述语句:
System.out.println("Total Memory= "
+ rt.totalMemory( ) //打印总内存大小
+" Free Memory = "
+rt.freeMemory( )); //打印空闲内存大小
其中,totalMemory( )和freeMemory( )返回的是数值,并非String对象。如果将一个字符串与一个数值相加,结果会如何?在这种情况下,编译器会自动调用一个toString()方法,将该数值(int型或者float型)转换成字符串。经过这样处理以后,就可以用"+"进行字符串连接了。
main()的第五行通过调用Runtime的getRuntime()方法创建了一个Runtime对象,该对象中包含了内存等信息。
java程序规范
一个完整的java源程序应该包括下列部分:
package语句; //该部分至多只有一句,必须放在源程序的第一句
import语句; /*该部分可以有若干import语句或者没有,必须放在所有的
类定义之前*/
public classDefinition; //公共类定义部分,至多只有一个公共类的定义
//java语言规定该java源程序的文件名必须与该公共类名完全一致
classDefinition; //类定义部分,可以有0个或者多个类定义
interfaceDefinition; //接口定义部分,可以有0个或者多个接口定义建立java开发环境1.6.1 安装Java Develop Kit(JDK)
Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java2 SDK,可以从http://sun.com上进行下载,也可以从同方教育网站上下载。但是最新的消息和版本必须从Sun的网站上才能够得到。安装的时候可以选择安装到任意的硬盘驱动器上,例如安装到D:/jdk1.3目录下。通常在JDK目录下有bin、demo、lib、jre等子目录,其中bin目录保存了javac、java、appletviewer等命令文件,demo目录保存了许多java的例子,lib目录保存了java的类库文件,jre保存的是java的运行时环境。
1.6.2 安装java帮助文档
由于JDK的安装程序中并不包含帮助文档,因此也必须从Sun的网站上下载进行安装。通常安装在JDK所在目录的docs子目录下面。用浏览器打开docs子目录下的index.html文件就可以阅读所有的帮助文档。
1.6.3 配置类路径
在安装完JDK之后,必须配置类路径classpath和环境变量path,JDK才能够正常运行。如果是在windows98中运行,则在
C:/autoexec.bat文件的末尾添加下列语句:
classpath= .;d:/jdk1.3/lib;
path=%path%;d:/jdk1.3/bin;
如果是在windows2000中,则需要用右键单击桌面上"我的电脑",选择"属性",则弹出一个名为"系统特性"的窗口,选择"高级",然后选择"环境变量",在"环境变量"窗口中编辑classpath和path。
以上就是java初学要掌握的东西,有一些东西我复制粘贴过来,大家要把这些先看明白了,这样才能往下学习,对了,最重要的就是要搞一份java的中文api文档,在java官方网站可以下到,大家一起努力吧!
例如一个java源程序可以是如下结构,该源程序命名为HelloWorldApp.java:
package javawork.helloworld; /*把编译生成的所有.class文件放到包
javawork.helloworld中*/
import java.awt.*; //告诉编译器本程序中用到系统的AWT包
import javawork.newcentury; /*告诉编译器本程序中用到用户自定义
的包javawork.newcentury*/
public class HelloWorldApp{......} /*公共类HelloWorldApp的定义,
名字与文件名相同*/
class TheFirstClass{......} //第一个普通类TheFirstClass的定义
class TheSecondClass{......} //第二个普通类TheSecondClass的定义
...... //其它普通类的定义
interface TheFirstInterface{......} /*第一个接口
TheFirstInterface的定义*/
...... //其它接口定义
package语句:由于java编译器为每个类生成一个字节码文件,且文件名与类名相同,因此同名的类有可能发生冲突。为了解决这一问题,java提供包来管理类名空间,包实际提供了一种命名机制和可见性限制机制。而在java的系统类库中,把功能相似的类放到一个包(package)中,例如所有的图形界面的类都放在java.awt这个包中,与网络功能有关的类都放到java.net这个包中。用户自己编写的类(指.class文件)也应该按照功能放在由程序员自己命名的相应的包中,例如上例中的javawork.helloworld就是一个包。包在实际的实现过程中是与文件系统相对应的,例如javawork.helloworld所对应的目录是path/javawork/helloworld,而path是在编译该源程序时指定的。比如在命令行中编译上述HelloWorldApp.java文件时,可以在命令行中敲入"javac -d f:/javaproject HelloWorldApp.java",则编译生成的HelloWorldApp.class文件将放在目录f:/javaproject/javawork/helloworld/目录下面,此时f:/javaprojcet相当于path。但是如果在编译时不指定path,则生成的.class文件将放在编译时命令行所在的当前目录下面。比如在命令行目录f:/javaproject下敲入编译命令"javac HelloWorldApp.java",则生成的HelloWorldApp.class文件将放在目录f:/javaproject下面,此时的package语句相当于没起作用。
但是,如果程序中包含了package语句,则在运行时就必须包含包名。例如,HelloWorldApp.java程序的第一行语句是:package p1.p2;编译的时候在命令行下输入"javac -d path HelloWorldApp.java",则HelloWorldApp.class将放在目录path/p1/p2的下面,这时候运行该程序时有两种方式:
第一种:在命令行下的path目录下输入字符"java p1.p2.HelloWorldApp"。
第二种:在环境变量classpath中加入目录path,则运行时在任何目录下输入"java p1.p2.HelloWorldApp"即可。
import语句:如果在源程序中用到了除java.lang这个包以外的类,无论是系统的类还是自己定义的包中的类,都必须用import语句标识,以通知编译器在编译时找到相应的类文件。例如上例中的java.awt是系统的包,而javawork.newcentury是用户自定义的包。比如程序中用到了类Button,而Button是属于包java.awt的,在编译时编译器将从目录classpath/java/awt中去寻找类Button,classpath是事先设定的环境变量,比如可以设为:classpath=.;d:/jdk1.3/lib/。 classpath也可以称为类路径,需要提醒大家注意的是,在classpath中往往包含多个路径,用分号隔开。例如classpath=.;d:/jdk1.3/lib/中的第一个分号之前的路径是一个点,表示当前目录,分号后面的路径是d:/jdk1.3/lib/,表示系统的标准类库目录。在编译过程中寻找类时,先从环境变量classpath的第一个目录开始往下找,比如先从当前目录往下找java.awt中的类Button时,编译器找不着,然后从环境变量classpath的第二个目录开始往下找,就是从系统的标准类库目录d:/jdk1.3/lib开始往下找java.awt的Button这个类,最后就找到了。如果要从一个包中引入多个类则在包名后加上".*"表示。
如果程序中用到了用户自己定义的包中的类,假如在上面程序中要用到javawork.newcentury包中的类HelloWorldApp,而包javawork.newcentury所对应的目录是f:/javaproject/javawork/newcentury,classpath仍旧是classpath=.;d:/jdk1.3/lib/,则编译器在编译时将首先从当前目录寻找包javawork.newcentury,结果是没有找到;然后又从环境变量classpath的第二个目录d:/jdk1.3/lib/开始往下找,但是仍然没有找到。原因在于包javawork.newcentury是放在目录f:/javaproject下面。因此,需要重新设定环境变量classpath,设为classpath=.;d:/jdk1.3/lib/;f:/javaproject/ 。所以编译器从f:/javaproject开始找包javawork.newcentury就可以找到。
源文件的命名规则:如果在源程序中包含有公共类的定义,则该源文件名必须与该公共类的名字完全一致,字母的大小写都必须一样。这是java语言的一个严格的规定,如果不遵守,在编译时就会出错。因此,在一个java源程序中至多只能有一个公共类的定义。如果源程序中不包含公共类的定义,则该文件名可以任意取名。如果在一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件。
包名:包名是全小写的名词,中间可以由点分隔开,例如:java.awt.event;
类名:首字母大写,通常由多个单词合成一个类名,要求每个单词的首字母也要大写,例如class HelloWorldApp;
接口名:命名规则与类名相同,例如interface Collection;
方法名:往往由多个单词合成,第一个单词通常为动词,首字母小写,中间的每个单词的首字母都要大写,例如:balanceAccount, isButtonPressed;
变量名:全小写,一般为名词,例如:length;
常量名:基本数据类型的常量名为全大写,如果是由多个单词构成,可以用下划线隔开,例如:int YEAR, int WEEK_OF_MONTH;如果是对象类型的常量,则是大小写混合,由大写字母把单词隔开。