Java运行机制及运行过程
Java核心机制- Java虚拟机(JVM)
- JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令、管理数据、内存、寄存器,包含在JDK中。
- 对于不同的平台,有不同的虚拟机。
- Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”
什么是 JDK,JRE
JDK 基本介绍
- JDK 的全称(Java Development Kit Java 开发工具包) JDK = JRE + java 的开发工具 [java, javac,javadoc,javap 等]
- JDK 是提供给 Java 开发人员使用的,其中包含了 java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独安装 JRE 了。
JRE 基本介绍
- JRE(Java Runtime Environment Java 运行环境) JRE = JVM + Java 的核心类库[类]
- 包括 Java 虚拟机(JVM Java Virtual Machine)和 Java 程序所需的核心类库等,如果想要运行一个开发好的 Java 程序, 计算机中只需要安装 JRE 即可。
JDK、JRE 和 JVM 的包含关系
- JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)
- JRE = JVM + Java SE 标准类库(java 核心类库)
- 如果只想运行开发好的 .class 文件 只需要 JRE
Java开发注意事项及细节说明
- Java源文件以 java 为扩展名。源文件的基本组成部分是类 (class)。
- Java应用程序的执行入口是main0方法。它有固定的书写格式:public static void main(String [] args) {...}
- Java语言严格区分大小写。
- 一个源文件中最多只能有一个public类。其它类的个数不限(编译后,每一个类都对应一个.class文件)。
- 如果源文件包含一个public类,则文件名必须按该类名命名。
- 一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public 类,这样入口方法就是非public的main方法。
常用的dos命令
- 查看当前目录是有什么内容 dir
- 切换到其他盘下:盘符号 cd (change directory)
- 切换到当前盘的其他目录下
- 切换到上一级:cd ..
- 切换到根目录:cd \
- 查看指定的目录下所有的子级目录 tree
- 清屏 cls
- 退出 DOS exit
- md[创建目 录],rd[删除目录],copy[拷贝文件],del[删除文件],echo[输入内容到文件],type,move[剪切] => Linux
程序中“+”的使用
- 当左右两边都是数值型时,则做加法运算。
- 当左右两边有一方为字符串,则做拼接运算。
Java数据类型
字符类型(char)
- 字符型 存储到 计算机中,需要将字符对应的码值(整数) 找出来,比如'a'
- 存储:’a’==>码值 97==> 二进制(110 0001)==>存储
- 读取:二进制(110 0001)==>97==>'a ’=>显示
2. 字符和码值的对应关系是通过字符编码表決定的(是规定好)
- ASCII (ASCII 编码表 一个字节表示一128个字符,实际上一个字节可以表示256个字符,只用128个)
- Unicode (Unicode 编码表 固定大小的编码 使用两个字节来表示字符,字母和汉字统一都是占用两个字节,这样浪费空间)
- utf-8(编码表,大小可变的编码 字母使用1个字节,汉字使用3个字节)
- gbk(可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节)
- gb2312(可以表示汉字,gb2312 < gbk)
- big5 码(繁体中文,台湾,香港)
基本数据类型和String类型的转换
- 基本类型转String类型:
- 语法:将基本类型的值+""即可
- String类型给转基本数据类型
- 语法:通过基本类型的包装类调用parseXX方法即可
- 例:Integer.parseInt("123")
注意事项:
- 在将String类型转成基本数据类型时,要确保String类型能够转成有效的数据,比如,可以把“123”转换成一个整数,但是不能把“hello”转成一个整数
- 如果格式不正确,就会抛出异常,程序就会终止
&&和&使用区别
- &&:短路与,如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
- &:逻辑与,不管第一个条件是否为false,第二个条件都要判断,效率低
||和|使用区别
- ||:短路或,如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
- |:逻辑或,不管第一个条件是否为true,第二个条件都要判断,效率低
赋值运算符的特点
复合赋值运算符会进行类型转换:
byte b = 2 ; b += 3 ; b ++ ;
运算符优先级
上一行运算符优先于下一行
键盘输入语句
- 步骤
- 导入该类所在的包,java.util.*
- 创建该类对象(声明变量)
- 调用里面的功能
import java.util.Scanner; //表示把java.util下的Scanner类导入
public class Input{
public static viod main(String args[]){
Scanner myScanner = new Scanner(System.in);
//当程序执行到next方法时,会等待用户输入
String name = myScanner.next(); //接受用户输入字符串
int age = myScanner.nextInt(); //接受用户输入int
}
}
数组的使用
- 使用方式1-动态初始化
- 数组的定义:数据类型 数组名[] = new 数据类型[大小] ;
- 使用方式2-动态初始化
- 先声明数组:数据类型 数组名[] ;
- 创建数组:数组名 = new 数据类型[大小] ;
- 使用方式3-静态初始化
- 语法:数组类型 数组名[] ={元素值,元素值,元素值…}