Java基础知识

来源:互联网 发布:c语言函数调用实例分析 编辑:程序博客网 时间:2024/06/15 15:38

1.JRE、JDK、JVM的区别
JRE(Java Runtime Environment), Java运行环境。包括Java虚拟机(JVM),和Java程序所需的核心类库等。如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK(Java Development Kit Java)开发工具包。JDK是提供给Java开发人员使用的,其中包含了Java的开发工具(编译工具javac.exe 打包工具jar.exe),也包括了JRE。所以安装了JDK,就不用单独安装JRE了。
JVM(Java Virtual Machine)Java 虚拟机,它是运行所有Java程序的抽象计算机,是Java语言的运行环境,JVM读取并处理编译过的与平台无关的字节码(class)文件
简单而言:使用JDK开发完成的java程序,交给JRE去运行

2.Java的三种技术架构:
JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;
JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;
JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;

3.javac命令和java命令做什么事情呢?
要知道java是分两部分的:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.
一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.

3.配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

环境变量的配置:
1:永久配置方式:JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin
2:临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin

特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。

classpath的配置:
1):永久配置方式:classpath=.;c:\;e:\
2):临时配置方式:set classpath=.;c:\;e:\

注意:
在定义classpath环境变量时,需要注意的情况 如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件;
如果指定了classpath,那么会在指定的目录下查找要运行的类文件。

1):如果classpath的值结尾处有分号,在具体路径中没有找到运行的类,会默认在当前目录再找一次。
2):如果classpath的值结果出没有分号,在具体的路径中没有找到运行的类,不会再当前目录找。
一般不指定分号,如果没有在指定目录下找到要运行的类文件,就报错,这样可以调试程序。

4.Java的跨平台性及原理
所谓跨平台性,是指 java 语言编写的程序,一次编译后,可以在多个系统平台上运行。
实现原理:Java 程序是通过 java 虚拟机在系统平台上运行的,只要该系统可以安装相应的 java 虚拟机,该系统就可以运行 java 程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)。

5.一个源文件可以有很多类,但是只有一个public类,源文件必须和该public类同名。如果一个源文件中有N个类,编译后会生成N个字节码(class)文件,且字节码文件名和其对应的类名相同。

6.main方法的作用:1.程序的入口 2.保证程序的独立运行 3.被JVM调用

7.类型转换
byte、short、char之间不会相互转换,是同级的,它们在计算时首先会转换为int类型
boolean类型不可用转换为其他基本数据类型,只有true 和 false

8.访问控制符
按可见范围从大到小依次是:public、protected,无访问控制符,private。其中 无访问控制符不书写关键字即可。

9.方法的重载
方法名相同,参数列表不同,好处是用户使用时限制很小

10.java分了5片内存:
1:寄存器
2:本地方法区。
3:方法区。
4:栈::存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 ); 只要数据运算完成所在的区域结束,该数据就会被释放。
5:堆:用于存储数组和对象,也就是实体。啥是实体啊?就是用于封装多个数据的。 1:每一个实体都有内存首地址值。 2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。 3:垃圾回收机制。

11.构造代码块和构造函数有什么区别?
构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块。只要对象一建立。就会调用这个代码块。
构造函数:是给与之对应的对象进行初始化。它具有针对性。

12.Person p = new Person(); 创建一个对象都在内存中做了什么事情?
1:先将硬盘上指定位置的Person.class文件加载进内存。
2:执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。
3:在堆内存中开辟一个实体空间,分配了一个内存首地址值。new
4:在该实体空间中进行属性的空间分配,并进行了默认初始化。
5:对空间中的属性进行显示初始化。
6:进行实体的构造代码块初始化。
7:调用该实体对应的构造函数,进行构造函数初始化。()
8:将首地址赋值给p ,p变量就引用了该实体。(指向了该对象)

0 0
原创粉丝点击