📄 1~
字号:
1 java syntax (字符集,词法,句法)2 面向对象的思想3 网络4 GUI(AWT/SWING)5 多线程JDK: 1 虚拟机(JVM):JAVA程序运行时环境。正是由于JVM才实现了跨平台,编译一次到处运行。 2 类库: java.lang java.util java.io java.net java.sql等等。 3 工具: javac:编译工具 java:执行工具 jar:打包/解包工具不同的操作系统对应不同的JDK版本设置环境变量: 1)JAVA_HOME, 通常处于bin的上一级目录。 1 代表JDK安装的home路径 2 可以被一些软件用来确定java,javac的位置 /opt/java/jdk/bin c:\programe files\java\jdk\jdk5.0\bin 2) CLASSPATH:(默认是当前路径)(java -cp classpath 文件名) 1 编译:从哪读取相关联的 class文件 2 执行:从哪个位置读取要执行的 class文件 3) PATH:告诉操作系统,从哪些位置寻找命令所对应的可执行文件 具体设置步骤: 1 windows(不区分大小写) 我的电脑--属性--高级--环境变量 JAVA_HOME C:\PROGRAM FILES \JAVA\JDK PATH %JAVA_HOME%\bin; CLASSPATH . (当前路径) 2 csh vi .cshrc setenv JAVA_HOME /opt/java/jdk/jdk1.5 setenv classpath . set path=($JAVA_HOME/bin $path) source .cshrc 快速生效 3 sh 和 bash 编辑文件 $HOME/.profile (sh) 或者 $HOME/.bashrc (bash)' JAVA_HOME(大写)=/opt/java/jdk/jdk1.5 PATH=$JAVA_HOME/BIN:$PATH CLASSPATH=. EXPORT JAVA_HOME PATH CLASSPATH 使 .profile/.bashrc新增加内容生效: 1 退出,重新登录 (bash只能重新登录) 2 不退出,直接执行 $ . ./.profile 第1个 . 表示执行 第2个 . 表示当前目录 第3个 . 是文件名的组成部分 第一个和第二个之间有空格 在UNIX系统中 变量符号为 $ $JAVA_HOME 在WINDOWS系统中变量符号用 %% %JAVA_HOME% 当path里设置多个路径时, 在windows里的分割符号是分号 UNIX里csh时分割符号是空格 sh 和 bash的分割符号是冒号 /home/briup/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin使刚设置的 .cshrc生效的方法 1 退出,重新登录 2 不退出,直接执行:source.cshrc briupserver4% echo $JAVA_HOME JAVA_HOME: Undefined variable briupserver4% source .cshrc ": Event not found briupserver4% echo $JAVA_HOME /opt/jdk/jdk1.5垃圾回收机制: 垃圾:无用对象所占用的内存空间 垃圾回收:由虚拟机提供一个垃圾回收线程,自动对无用对象所占用内存进行回收,释放 由JVM 自动处理,无须程序员手动干涉 *********** 程序员顶多可以通过 java.lang.System.gc()或者 java.lang.Runtime.gc() 通知JVM 进行垃圾回收,但是什么时候进行,还算由JVM自行决定,程序员没权力干涉 JVM调用回收无用对象的finalize()方法类: 类是java代码的组成单位 语法检测是在编译的时候进行 代码安全检测 是在运行时检测JVM中JAVA程序的运行过程(java file):javac -d . a.java 1 类加载:把.class文件从硬盘中加载到内存中 结果:在 内存的方法区 中有对应程序的数据结构。并在堆区 产生类对象。 初始化静态变量,静态初始化块。产生类对象 1)单个.class文件 2)压缩文件 .jar 3)从网络上通过URL可以访问的.class文件 4)从数据库中 2 连接:将数据结构转换形成特定操作系统的内容 a 安全检测 :检测.class文件的内容是否符合JVM的编码规范。 检测是否破坏操作系统,不能引起堆栈的上溢下溢 b 默认初始化: 给静态变量赋默认值 (内存的方法区) 3 初始化: 给静态变量赋初始值内存分为 堆区,栈区,方法区java.lang是个特殊的包,可以不必显式的导入。比如 我们常用的System.out.println()的System类就是java.lang中的一个类假设有目录结构如下: CoreJava | | -----ch01 | | ------ Hello.java (package ch01) | ------- Hello2.java (packge CoreJava.ch01) 其中 Hello.java 处于包 ch01中,Hello2.java处于包 CoreJava.ch01中 1 编写源代码: briup@briup:~/CoreJava/ch01> vi Hello.java briup@briup:~/CoreJava/ch01> vi Hello2.java 2 编译: briup@briup:~/CoreJava/ch01> javac Hello.java briup@briup:~/CoreJava/ch01> javac Hello2.java 注意:!!!!当前的执行所处在的目录 3 执行: Hello.java错误的执行: briup@briup:~/CoreJava/ch01> java Hello Exception in thread "main" java.lang.NoClassDefFoundError: Hello (wrong name: ch01/Hello) at java.lang.ClassLoader.defineClass1(Native Method) Hello.java正确地执行: briup@briup:~/CoreJava/ch01> cd .. 切换到包名所处的路径 briup@briup:~>/CoreJava> briup@briup:~/CoreJava> java ch01.Hello 包名.类名 Hello 1 Hello2.java错误的执行: briup@briup:~/CoreJava/ch01> java Hello2 Exception in thread "main" java.lang.NoClassDefFoundError: Hello2 (wrong name: CoreJava/ch01/Hello2) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) Hello2.java正确的执行: briup@briup:~/CoreJava/ch01> cd ../.. 切换到包名所处的路径之外 briup@briup:~> briup@briup:~> java CoreJava.ch01.Hello2 包名.类名 其中包名为 CoreJava.ch01 hello 2 总结:也就是说,如果JAVA源文件 处于某个包下,编译的时候,1)要切换到源文件所处于的目录 然后 javac 源文件.java 2) briup@briup:~> javac CoreJava/ch01/Hello2.java briup@briup:~> javac CoreJava/ch01/Hello.java 这样也行 但是,运行时,必须切换到包外的目录,然后 java 完整的包名.类名 带包的类 编译时 javac -d . First.java 自动创建以包名为名的目录放到当前目录下 "."也可以换成其他的目录 运行时 一定要加包名 因为加了包名的字节码文件中有包名的信息,所以必须带包名执行 java -classpath 指定执行路径 包名.类名 java -cp 指定路径 包名.类名 java 包名.类名 中间省略了 classpath中设置的值 默认是 . 当前目录 briup@briup:/> java -cp ~/corejava com.LosAngles.Bryant.kobe Kobe Bryant LosAngels java -verbose 显示加载运行的辅助类 briup@briup:~> javadoc Kobe.java 生成html文档帮助文档:file:///opt/java/api/j2se1.5_api/index.htmljar -cvf a.jar com/* 压缩jar -cvf a.jar Kobe.classjar -xvf a.jar 解压 java -cp a.jar 包名.类名briup@briup:~> jar -cvf a.jar Kobe.class标明清单(manifest)增加:Kobe.class(读入= 431) (写出= 296)(压缩了 31%)briup@briup:~> ls -l a.jar Kobe.class-rw-r--r-- 1 briup users 753 2008-07-03 16:34 a.jar-rw-r--r-- 1 briup users 431 2008-07-03 16:16 Kobe.classjavadoc Kobe.java
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -