天天看点

CoreJava学习心得1

一、Java简介

Java语言是编译后再解释执行,Java源码是通过编译生成一种特殊的.class的中间字节码文件,然后再有JVM进行解释执行,JVM(Java虚拟机)是运行在操作系统中,用来屏蔽的系统间的差异。Java虚拟机处理编译后的字节码,并根据不同的系统来申请相应的资源,这样就可以保证程序的运行正常,在Java虚拟机的基础之上,由解释器来解释执行字节码文件。

Java虚拟机+解释器=JRE(Java RunTime Environment)Java运行环境

JRE+Java系统类库=JDK(Java Deveple Kit)JAVA开发工具包

Java简单特性:

① JVM本身是不能垮平台的。

② java语言对指针进行了上层的封装,它保证能够通过这个指针(引用),来访问有效的内存单元。

③ java语言不允许多继承,使继承关系成树状图,每个类都只能由一个父类。

④ java语言的开发效率高,但执行效率低。(相当于c++的55%)

⑤ java的垃圾回收机制,在java中new的对象不需要向c++一样进行delete操作,JVM会根据情况回收垃圾对象(懒汉机制,等待资源没有的时候才回收)。我们只能够建议JVM进行垃圾回收,例如(System.gc() RunTime.gc()这两个方法就是建议JVM进行垃圾回收的方法)。

JDK —— java开发工具包(类库和运行命令)

JRE —— java运行环境

JVM —— java虚拟机(解释执行的核心,对字节码进行翻译成运行环境的机器码,它可以屏蔽平台差异。但JVM是不跨平台的。)

二、使用Java是需要进行配置的环境变量

JAVA_HOME, 指明JDK安装的位置;

CLASSPATH, 指明类文件的位置;

PATH, 指明命令的可执行文件的位置。

比如:

Unix/Linux中JAVA环境变量的配置

在(.profile(Unix) /.bash_profile(Linux) /.bashrc(Linnx))这些文件中作以下配置

下面为配置实例:

[table]

|[size=large][color=red][b]JAVA_HOME=(指定JDK的安装目录)|

|CLASSPATH=. (指定类文件的所在位置,类路径) 点是必须的,代表当前目录|

|PATH=$JAVA_HOME/bin:. (指明JAVA需要使用的命令的位置)[/b][/color][/size]|

||

[/table]

Java的一些特点:

① Java是一种纯面向对象的语言,在Java中所有的方法必须写在class(类)中,包括main方法。Java源文件都是以“.java”为后缀的。

② java源文件的文件名必须和Java源文件中定义的public class(公开类)的类名相同。在Java源文件中只能写一个public class(公开类),一个Java源文件中可以写多个class(类),也可以在一个类中写另一个类,这是内部类的写法,在以后的课程中会讲到,一般我们在源文件中的类是并列的,也就是:

如:public class Test{}

③ Java中的(package)包,是一种特殊的目录结构,他会要求编译好的文件在指定的目录结构中,要使用包时需要使用package关键字。

注意:package关键字必须出现在代码的第一行,下面的代码中写了包,编译之后的.class文件需要在/test/java下,并且包在一个 Java源文件中只能定义一个

例如经典的“HelloWorld”实例:

第一个Java程序

[table]

|[color=red][b]package test.java; //java中的一种用以区分同名类的设置——包|

|public class HelloWorld{|

|public static void main(String[] args){ //主方法,JVM主线程|

| System.out.println("Hello world");|

| }|

|}[/b][/color]|

[/table]

相应的在写完源代码保存的文件名必须和原码中写的 public class后写的类名一致,也就是HelloWorld.java

java源代码中的main方法的定义写法。main方法是程序的入口。

public static void main(String[] args){

System.out.println("Hello world");

}

java源文件也要先编译,使用javac xxx.java格式的命令得来编译,要运行一个java程序时,需要使用java命令,java 类名,运行编译后的字节码(.class)文件。

定义包结构要放在有效代码的第一行,package xxx.xxx,包的定义在一个程序中只能由一个,在加上包定义之后编译可以使用javac -d 路径 xxxx.java,这个-d这个命令行的参数可以指定包结构的位置“.”代表当前目录。在运行时要使用类的全限定名。

java xxx.xxx.xxxx用包名以点分隔。运行时要在包结构的上一层目录来运行。

package xxx.xxx; 定义包名

public class Xxx{}

xxx.xxx.Xxx,包名加类名,就是类的全限定名

例:

我们以上面的第一个java文件为例,那个文件中定义的类的全限定名就是test.java.HelloWorld

接下来带包的类是需要生成在指定的目录结构中的,javac命令的 –d 命令行参数可以自动生成包的目录结构

javac –d . HelloWorld.java (–d . 指定包结构生成在当前目录中)

java test.java.HelloWorld

Java HelloWorld.java –d classes

java –classpath=classes 报名. 类名

注意:在运行有包的类文件时,一定要在包的所在的目录

import 关键字,在使用其他包中的类文件,在类中,可以不必写全限定名直接写类名就可以了,这个关键字和C++中的#include “xxx”(表示包含,会将xxx插入到文件中)不同,他只不过是为了标识使用的是那个类,并且区分同名的类,在使用的时候不用写明类的全限定名。

四、Java程序的运行过程

Java程序的运行过程,执行java命令后,首先是启动java虚拟机,然后就是去找.class文件,并进行加载,先是从系统的类库中找(系统之会在跟目录下查找,所以需要完整类名),如果找不到的话会去CLASSPATH所设置的目录去找。然后加载到java虚拟机中。

五、java注释

单行注释 //......

多行注释

文档注释,用javadoc命令可以根据原码中的文档注释生成注释文档(html格式)。文档注释中可以使用 html标签。

javadoc -d 路径 (指定注释文档的保存路径)

文档注释一般写在类定义之前,方法之前,属性之前。

在文档注释中可以用 @author 表示程序的作者,@version 表示程序的版本,前两个注释符号要写在类定义之前,用于方法的注释@param 对参数进行注释,@return 对返回值进行注释 @throws对抛出异常的注释。

比如:

[table]

|[color=orange]package tang.test;|

||

|public class JavaTest{|

| |

| public static void main( String args[] ){|

| System.out.println( "Hello world" );|

| }|

|}[/color]|

[/table]

六、标识符(变量名)和关键字

[table]

|Java代码中的“;”、“{}”、“ ” |

|Java语句以分号分隔,Java代码(除包、类的定义和import之外)是包含在大括号内,忽略空格。|

||

|标识符|

|1) 用以命名类、方法和变量、以及包遵守JAVA的命名规范类以每个单词都以大写字母开头。方法和变量第一个字母不大写,常量名都大写,包名都用小写字母。|

|2) 只能以字符、“_”或“$”开头,可以使用数字,字符以及”_”、”$”作为变量名的组成部分,且Java的标识符是大小写敏感 |

|3) 无长度限制。|

|4)可以使用中文作为标识符,不可以使用关键字作为标识符。|

|正确的标识符: _abc , $234 , |

|For“注意Java是大小敏感的,所以这个For不是关键字”|

|错误的标识符:234ad “不能以数字开头”,do “do是关键字不可用”|

|goto,“goto虽然不是关键字,但是作为保留字也是不可以用作标识符的”|

[/table]

七、Java中的关键字

Java中大部分的关键字是和C++相同的但是也有些许的修改,以下是需要注意的地方。

1)goto和const在java中虽然不再使用但是还作为关键字存在

2)java中没有sizeof这个关键字了,java中的boolean类型的值只能用true和false,且这两值是不能用作命名的。

3)java语言中没有无符号这个关键字(unsigned)

七、Java中的一种特殊文件—jar包

jar命令用于打一个xxx.jar文件

用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...

选项:

-c 创建新的存档

-t 列出存档内容的列表

-x 展开存档中的命名的(或所有的〕文件

-u 更新已存在的存档

-v 生成详细输出到标准输出上

-f 指定存档文件名

-m 包含来自标明文件的标明信息

-0 只存储方式;未用ZIP压缩格式

-M 不产生所有项的清单(manifest〕文件

-i 为指定的jar文件产生索引信息

-C 改变到指定的目录,并且包含下列文件:

如果一个文件名是一个目录,它将被递归处理。

清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序

示例1:将两个class文件存档到一个名为 'classes.jar' 的存档文件中:

jar cvf classes.jar Foo.class Bar.class

示例2:用一个存在的清单(manifest)文件 'mymanifest' 将 foo/ 目录下的所有

文件存档到一个名为 'classes.jar' 的存档文件中:

jar -cvfm classes.jar mymanifest -C foo/ .

一般在使用使用jar cvf 文件名.jar 文件所在路径(xxx/xxx/xxx.class)也可以压缩一个目录,只要在制定路径是指定为文件夹,jar命令的命令行参数在使用时可以以“-”开头,也可以不用。