- java代码文件后缀必须是.java;
- java文件的名字,要与类名一致;
- java代码大多以类为单位,可以在一个java代码中写一个或者多个类;
- 一般情况下建议每个java代码写一个类就行;
- 写多个的时候需要注意:
- 多个类之间的关系是并列的,编译时候会一一对应生成相应的class文件;
- 编写的多个类只能有一个类用public修饰,且这个类需要与java文件名字一致;
- 在java类中可以编写属性,方法,构造器等代码;
- 使用Java命令编译运行一个java代码,有两步:
- javac Hello.java -->javac 类名.java (编译器编译) ;
- java Hello -->java 类名 (解释器解释) ;
- 一个类若要运行,java命令就会找一个叫做main的固定格式的方法:
- 普通类:可以用javac编译成class字节码文件,但是不能运行;
- 可以独立运行的类:有程序入口,可以直接运行,可以调用别的类;
- "一个叫做main的固定格式的方法"可以叫做main方法(主函数/main函数)-->public static void mian(String[] args){}
- jdk是向下兼容的,即高版本jdk编译的class文件,低版本jdk无法运行,低版本编译的class,高版本可以运行;
- 在书写java代码时候需要注意格式缩进的问题,tab键(相当于四个空格长度),这样做的目的不仅仅是为了美观,也是为了后期维护;
- 需要引入别人写好的类/代码,需要用到关键字import,目的是告诉jvm这个调用关系,从而在运行时候达到调用的目的,有两个特殊情况:
- 同包类无需导入;
- java.lang包下的类无需导入;
- jar包:
- 打包命令:
- Hello.class-->hello.jar: jar -cvf hello.jar Hello.class 解释:将Hello.class打包到hello.jar;
- Hello.class , World.class --> hello.jar: jar -cvf hello.jar Hello.class World.class;
- 目录下所有class文件打包到hello.jar:jar -cvf hello.jar *.class 解释:*--> 所有;
- 将xxx目录下但是【不包含】该目录打包到hello.jar: jar -cvf hello.jar -C xxx . ;
- 将xxx目录下但是【包含】该目录打包到hello.jar: jar -cvf hello.jar xxx;
- 修改MF文件:(META-INF/MANIFEST.MF)
- 添加内容格式为: key: value(冒号后面有个空格)
- Main-Class:包名.类名 ;
- 例如: Main-Class: Hello
- 最后注意:文本最后需要留一个空行 ;
- 要运行的jar包调用了别的jar包:
- Hello.class调用了 Word.class 和 HelloWord.class;
- 三个class字节码文件分别都打了jar包;
- 需要在hello.jar的MF文件进行设置:
- Manifest-Version: 1.0
- Created-By: 1.8.0_102 (Oracle Corporation)
- Main-Class: xxx(包名).hello
- Class-Path: xxx.helloword.jar xxx.word.jar
- ------(此行为空)------
- jar包运行:
- 例如:java -jar hello.jar
- package对class的影响:
- package就是命名空间的设计;
- 例如:http://commons.apache.org/ ;
- 上面的网址下的代码就是以pacakge org.apache.commons 开头的;
- 一个类加上包名,编译之后的class字节码文件是有相同的包结构的;
- 运行:
- package com.xxx.test;public class Hello{...}
- 编译后的class字节码文件在com/xxx/test/Hello.class;
- 运行时候要加入包名:java com.xxx.test.Hello;
- javac -d . Hello.java 可以指定编译之后的class文件存放位置;
- com.xxx.test.Hello-->Hello为简单类名 com.xxx.test.Hello为全限定名;
- 有关classpath的设置:
- 永久有效: 电脑的环境变量中设置;
- 当前窗口有效: set classpath=bin;
- 仅当前命令生效: java -cp bin Hello ,注意:当前命令执行完就失效了 ;
- jdk4以后,带包的类调用不带包的类会报错;
- java文件和class文件存放规则:
- xxx.java 存放到src目录
- xxx.class 存放到bin目录