java学习笔记01
一、JAVA开发环境的搭建
1.常用的DOS命令窗口
1.1 打开dos命令窗口
win+R(组合键):可以打开“运行”窗口
在运行窗口文本中输入cmb,回车
1.2 什么是DOS命令呢?
在DOS窗口中才可以输入并执行的DOS命令
在最初的window计算机中没有图形界面,只有DOS窗口
也就是说通过执行DOS命令窗口可以完全完成文件的创建、编辑、保存、删除等一系列操作
1.3 mkdir(make directory)-创建一个目录(文件夹)这些命令跟linux一致的
1.4 默认情况下DOS窗口打开后定位的位置在哪里?在admin下
1.5 在DOS窗口中怎么复制内容:选中点右键复制,如linux
win10 左键直接选中,右键单击就到剪切板中了
1.6切盘符直接输入盘符+冒号,回车;如E: 回车
1.7切换目录(非常重要)cd命令(change directory)注意绝对路径/相对路径
1.8 怎么查看本机的IP地址?win--ipconfig linux--ifconfig
什么是IP地址?有什么用?
A计算机在网络当中要想定位到(连接到)B计算机,那么必须要先知道B计算机的IP地址,IP地址也可以看作是计算机在同一网络中的身份证号(唯一标识)
ipconfig /all 查看详细的信息
网卡:一台电脑至少有两个网卡,无线网卡,插网线的网卡,网卡的物理地址(mac地址),全球唯一性。
防蹭网方式:把设备的mac地址绑定到路由器上。
1.9 怎么查看两台计算机是否可以正常通信?
ping+IP或者ping+域名 ping ip地址 -t 一直ping下去
二、JAVA语言的特性
1.1 简单性:在java语言中,真正操作内存的是JVM(java虚拟机,在JDK中),所有的java程序都是在运行在java虚拟机当中的,二而java虚拟就在执行过程中再去操作内存。对于C/C++来说程序员都可以直接通过操作指针操作内存,c/c++更灵活,程序员可以直接操作内存,要求程序员技术精湛,c/c++更加有驾驭感。JAVA语言屏蔽了指针的概念,程序员不能直接操作指针,或者说程序员不能直接操作内存。
优点:不容易导致内存泄露
缺点:效率问题,包括驾驭感比较差
1.2 java语言堪称完全面向对象
1.3 健壮性:主要是因为JAVA中有一种机制,自动垃圾回收机制(GC机制)JVM负责调动GC机制,程序员不需要干涉。但GC不能及时清理内存,他是当内存达到某个值是清理一次,不然频繁的启动GC,也会影响程序的运行速度。
1.4 JAVA完美支持多线程并发
1.5 可移植性/跨平台:java语言主要编写一次,可以到处运行
是因为java虚拟机,程序的编译是在java虚拟机中进行的。
JVM的优点和缺点
优点:一次编写,到处运行
缺点:麻烦,不同的操作系统需安装不同的JVM
java语言可以编写病毒,但是不具传播性。因为他是运行在JVM中,而JVM可以使电脑中毒。
2.1 JDK、JRE、JVM三者间的关系:
JDK:java开发工具箱,可独立安装,安装jdk时jre和它内部的jvm就自动安装了
JRE:java的运行环境,也可独立安装,安装jre时jvm也就自动安装了
JVM:java虚拟接,不可独立安装
2.2 对于JAVA加载与执行的理解:(理论比较重要)
java程序从编写到最终运行经历了哪些过程?
编译阶段:
怎么编译?使用什么命令?
使用javac命令编译。 (javac+源文件路径)
运行阶段:
运行的前提条件是编译通过,生成字节码文件(.class)
怎么运行?使用什么命令?
使用JDK的bin目录下的java.exe命令;用法:java 类名(java 空格 类名)
注意:java程序员直接编写的代码(普通文本)是无法执行被JVM识别的,java程序员编写的java代码必须经过编译,将这种“普通文本代码”编程“字节码”,JVM能够识别“字节码”
JAVA代码这种普通文本变成字节码的过程叫做编译。
java代码这种普通文本叫做源代码
放源代码的文件扩展名必须是.java,并且需要注意,编译生成的字节码文件扩展名是.class
另外需要注意的是,一个java原文件可以编译生成多个字节码文件.clss的。最终运行的是.class文件。
字节码文件不是二进制文件,字节码文件是在JVM中运行的,而二进制文件是操作系统识别执行的。JVM把字节码解释成二进制再交给操作系统区执行。
java程序从开发到最终运行经历了什么:
编译器:
第一步:在硬盘的某个位置新建一个.java文件
第二步:使用记事本或者其他文本编辑器打开.java文件
第三步:在.java文件中编写符合java语法规则的源代码
第四步:保存
第五步:使用java编译器对.java文件进行编译
第六步:如果.java文件中编写的源文件符合语法规则,编译通过,如果源文 件不符合则编译器会报错,报错后.class字节码不会生成,只有编译通过才会生成字节码文件,且一个源文件可以编译生成多个.class字节码文件。编译的实质是检查语法。
运行期:(可以在windows上,也可以在其他OS上)
第七步:如果在linux上运行没需要将window上生成的.class字节码文件拷贝过去,不需要拷贝源代码,真正运行的是字节码(但源代码也不要删除)
第八步:使用JDK自带的一个命令/工具java(负责运行的命令/工具)执行字节码
第九步:往下的步骤就交给JVM了,就不需要程序员干涉了,JVM会将字节码文件转载进去,然后JVM对字节码进行解释(解释器负责将字节码解释为二进制
第十步:JVM会将生成的二进制码交给OS操作系统,操作系统会执行二进制码和硬件进行交互
注意:在以上的过程中,需要使用两非常重要的命令,javac负责编译;java负责运行
如果.java源文件经过编译后生成了A.class、B.class、C.class等文件,那么我们成A为一个类、B为一个类、C为一个类,其中A、B、C是类的名字(类名,A类、B类、C类)
2.3 编写第一个java程序,HelloWorld(问世程序)
java程序一旦修改,必须重新编译,生成新的.class字节码文件
public class HelloWorld{
public static void main(string[] args){
System.out.println("Hello World");
}
}
2.4.编译命令javac怎么用? (java运行大相径庭!)
在dos窗口中输入javac 源代码路径 回车;注意绝对路径和相对路径,绝对路径可以直接把.java源文件拖进去;相对路径需要在源文件所在的路径选中输入cmd
编译的几个注意事项:
2.5 运行
1)必须先把路径切到类所在的路径下(原因是java 后面只能跟类名,绝对不能跟路径)
2)执行java命令:java 类名
补充:对于java的JDK所属的环境变量,有一个叫JAVA_HOME,目前不配置环境变量不会影响Java程序的运行,但是后面学习javaWEB的时候需要安装tomcat服务器,那个时候就必须得配置JAVA_HOME环境变量了。除了JAVA_HOME环境变量之外,JDK相关的环境变量还有其他的吗?答案是有!
我们来研究一下:java HelloWorld,敲完回车后发生了什么?
第一步:会先启动JVM
第二步:JVM启动后,JVM会去启动类加载器(classloader)类加载器的作用:加载类的。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件,假设是“java HelloWorld”,那么类加载器就去硬盘上搜索“HelloWorld.class”文件.
第三步:类加载器如果在硬盘上找不到对应点字节码文件,就会报错。错误:找不到或无法加载主类。
类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将字节码文件装载到JVM中,JVM启动“解释器”将字节码解释为二进制,这种二进制码交给操作系统执行来和硬件交互。
默认情况下,类加载器去硬盘上找字节码文件的时候从哪儿找?在当前路径找!
能不能给类加载器指定一个路径,让类加载器到指定路径下加载字节码文件。当然可以,但是需要配置一个环境变量:classpath。
classpath环境变量不属于windows操作系统,classpath环境变量隶属于java。是给类加载器指路的。
classpath不建议配死,例如:配置在D:\01下,只会在D:\01路径下加载字节码文件,但是不会再当前路径下加载,故不配还方便些!