欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第一章:编程基础

程序员文章站 2022-04-24 16:22:43
...

第一章:编程基础

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 方法区。

jvm原理请参考
详细流程