第一章:编程基础
第一章:编程基础
Java概述:
java的优点:面向对象、可移植性、高性能、安全性。
java的三种注释:
// 单行注释
/** / 多行注释,文档注释、java专用
/* */ 多行注释
Java的技术架构:
JavaEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对.web程序开发;
JavaSE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
JavaME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。
2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
环境变量的配置:
1)永久配置方式:JAVA_HOME=%安装路径%\Java\jdk path=%JAVA_HOME%\bin (使用%取值)
2)临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin
(特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找,这个设置是cmd黑窗口设置)
classpath的配置:
1)永久配置方式:classpath=.;c:;e:
2)临时配置方式:set classpath=.;c:;e:
指定了classpath,jvm会在指定的目录下查找要运行的类文件。如果没有默认在当前项目目录下查找
java常用命令
jps 查看java进程的PID
javac:当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.
-classpath/cp <依赖的类库 zip/jar 文件的类搜索路径,用 ; 或者:分隔的目录>
-version java版本信息
-jar 引用其他第三方的jar包
-Xbootclasspath:完全取代系统Java classpath.最好不用。
-Xbootclasspath/a: 在系统class加载后加载。一般用这个。
-Xbootclasspath/p: 在系统class加载前加载,注意使用,和系统类冲突就不好了
-Djava.ext.dirs 引用的jar包lib较多时使用
java -Djava.ext.dirs=/jre/lib/ext:/project/script/ -cp /project/script/
jar 主要用于打包jar文件
jvm原理:
java技术组成:java语言、java文件格式、java虚拟机、java应用接口API
Java平台 是由Java虚拟机和Java应用程序接口搭建而成
java运行流程
JVM: JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接的交互。
JVM的生命周期: 程序启动是创建一个jvm对象,结束时对象消失
Java的可移植性 由依赖平台的适配器和java系统,这样就是使用java类库脱离所在平台的系统
本地方法栈: 登记调用jvm所在系统的native方法,在Execution Engine执行时加载native libraies
程序计数器: 每个线程都有一个程序计算器,就是一个指针,指向方法区中的方法字节码(下一个将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。
方法区: 方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。简单说,所有定义的方法的信息都保存在该区域,此区域属于共享区间。
静态变量+常量+类信息+运行时常量池存在方法区中,实例变量存在堆内存中。
栈: 栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就over,生命周期和线程一致,是线程私有的。先进后出,后进先出
基本类型的变量和对象的引用变量都是在函数的栈内存中分配。
堆: JNM分配最大的区域,实例化对象的位置,这个区域线程共享,gc主要回收区
JVM调优主要就是优化 Heap堆 和 Method Area 方法区。
推荐阅读
-
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
-
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
-
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
-
Excel if函数在进行单条件判断时如何嵌套(基础与高级用法)
-
渗透测试 网站代码审计等基础方法篇
-
渗透测试 网站安全基础点讲解(第一点)
-
电脑装机所需具备的基础知识以及装机常用的工具,步骤和注意事项
-
web编程基础(新手学c还是java)
-
java添加环境变量(java基础开发环境搭建)
-
在Visual C++编程中如何取得CPU的信息