一、Java简介
Java语言是编译后再解释执行,Java源码是通过编译生成一种特殊的.class的中间字节码文件,然后再有JVM进行解释执行,JVM(Java虚拟机)是运行在操作系统中,用来屏蔽的系统间的差异。Java虚拟机处理编译后的字节码,并根据不同的系统来申请相应的资源,这样就可以保证程序的运行正常,在Java虚拟机的基础之上,由解释器来解释执行字节码文件。
.class
运行时解释器 J RE
jdk
平台无关
平台相关JVM
OS 类库工具
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))这些文件中作以下配置
JAVA_HOME=xxx/xxxx (指定JDK的安装目录)
CLASSPATH=. (指定类文件的所在位置,类路径)
PATH=…:$JAVA_HOME/bin:. (指明JAVA需要使用的命令的位置)
Java的一些特点:
① Java是一种纯面向对象的语言,在Java中所有的方法必须写在class(类)中,包括main方法。Java源文件都是以“.java”为后缀的。
② java源文件的文件名必须和Java源文件中定义的public class(公开类)的类名相同。在Java源文件中只能写一个public class(公开类),一个Java源文件中可以写多个class(类),也可以在一个类中写另一个类,这是内部类的写法,在以后的课程中会讲到,一般我们在源文件中的类是并列的,也就是:
public class Test1{} class Test2{}
③ Java中的(package)包,是一种特殊的目录结构,他会要求编译好的文件在指定的目录结构中,要使用包时需要使用package关键字。
注意:package关键字必须出现在代码的第一行,下面的代码中写了包,编译之后的.class文件需要在/test/java下,并且包在一个Java源文件中只能定义一个
package test.java; //java中的一种用以区分同名类的设置——包
public class HelloWorld{
public static void main(String[] args){ //主方法,JVM主线程
System.out.println("Hello world");
}
}
相应的在写完源代码保存的文件名必须和原码中写的 public class后写的类名一致,也就是HelloWorld.java
java源代码中的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