- 1 Java开发环境
- 2 Java程序开发步骤
- 2.1 编写
- 2.2 编译
- 2.3 运行
- 3 注释
- 4 标识符
- 5 常量
- 6 变量
- 7 数据类型
- 7.1 数据类型分类
- 7.2 数据类型转换
- 7.2.1 自动转换
- 7.2.2 强制转换
- 8 运算符
- 8.1 算数运算符
- 8.2 赋值运算符
- 8.3 比较运算符
- 8.4 逻辑运算符
- 8.1 三元运算符
- JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在 JVM 之上
- JRE (Java Runtime Environment) :是Java程序的运行时环境,包含 JVM 和运行时所需要的 核心类库 。
- JDK (Java Development Kit):是Java程序开发工具包,包含 JRE 和开发人员使用的工具。
注意:
- 我们想要运行一个已有的Java程序,那么只需安装 JRE 即可。
- 我们想要开发一个全新的Java程序,那么必须安装 JDK 。
- 三者关系: JDK > JRE > JVM
Java语言的跨平台特性:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM 运行在操作系统上。
如图所示,Java的虚拟机本身不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机。
Java程序开发三步骤:编写、编译、运行
编写Java源文件HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
main方法:称为主方法。写法是固定格式不可以更改。main方法是程序的入口点或起始点,无论我们编写多少程序,JVM在运行的时候,都会从main方法这里开始执行。
注意:
- 文件名必须是 HelloWorld ,保证文件名和类的名字是一致的,注意大小写
- 这个文件是程序员编写的,JVM是看不懂的,也就不能运行,因此我们必须将编写好的 Java源文件编译成JVM可以看懂的字节码文件
在DOS命令行中,进入Java源文件的目录,使用javac 命令进行编译
Java源文件的编译工具 javac.exe
javac Java源文件名.后缀名
即
javac HelloWorld.java
编译成功后,命令行没有任何提示。打开文件所在目录,发现产生了一个新的文件 HelloWorld.class ,该文件就是编译后的文件,是Java的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了
2.3 运行在DOS命令行中,进入Java源文件的目录,使用 java命令进行运行
Java程序 .class文件 的运行工具 java.exe
java 类名字
即
java HelloWorld
注意:
HelloWorld不要加后缀
注释:就是对代码的解释和说明
其目的是让人们能够更加轻松地了解代码。为代码添加注释,是十分必须 要的,它不影响程序的编译和运行
Java中有单行注释和多行注释
- 单行注释以 //开头 以换行结束
- 多行注释以 结束
标识符:是指在程序中,我们自己定义内容。比如类的名字、方法的名字和变量的名字等等,都是标识符。
HelloWorld案例中,出现的标识符有类名字 HelloWorld
命名规则: 硬性要求
- 标识符可以包含英文字母26个(区分大小写) 、 0-9数字 、 $(美元符号) 和 _(下划线)
- 标识符不能以数字开头
- 标识符不能是关键字
命名规范: 软性建议
- 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)
- 方法名规范: 首字母小写,后面每个单词首字母大写(小驼峰式)
- 变量名规范:全部小写
关键字:是指在程序中,Java已经定义好的单词,具有特殊含义。
HelloWorld案例中,出现的关键字有 public 、 class 、 static 、 void 等,这些单词已经被 Java定义好,全部都是小写字母,notepad++中颜色特殊。
常量:是指在Java程序中固定不变的数据
注意:
空常量不能用来打印输出
变量:常量是固定不变的数据,那么在程序中可以变化的量称为变量
Java中要求一个变量每次只能保存一个数据,必须要明确保存的数据类型
定义变量:
数据类型 变量名 = 数据值;// 在创建一个变量的同时,立刻放入指定的数据值 数据类型 变量名称; // 创建了一个变量 变量名称 = 数据值; // 赋值,将右边的数据值,赋值交给左边的变量
注意:
- 变量名称:在同一个大括号范围内,变量的名字不可以相同
- 变量赋值:定义的变量,不赋值不能使用
- 如果使用byte或者short类型的变量,那么右侧的数据值不能超过左侧类型的范围
可以通过一个语句来创建多个变量,但是一般情况不推荐这么写
// 同时创建了三个全都是int类型的变量 int a, b, c; // 各自分别赋值 a = 10; b = 20; c = 30; // 同时创建三个int变量,并且同时各自赋值 int x = 100, y = 200, z = 300;
拓展:
public static void main(String[] args) {
byte b1 = 1;
byte b2 = 2;
byte b3 = 1 + 2;
byte b4 = b1 + b2;
System.out.println(b3);
System.out.println(b4);
}
分析: b3 = 1 + 2 ,1和2是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没 有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。 反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什 么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。
7 数据类型 7.1 数据类型分类Java的数据类型分为两大类:
- 基本数据类型:包括 整数 、 浮点数 、 字符 、 布尔
- 引用数据类型:包括 类 、 数组 、 接口
四类八种基本数据类型:
注意:
- Java中的默认类型:整数类型是 int 、浮点类型是 double
- long类型:建议数据后加L表示。 float类型:建议数据后加F表示
自动转换:将取值范围小的类型自动提升为取值范围大的类型
范围小的类型向范围大的类型提升,byte、short、char运算时直接提升为int
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
强制转换:将取值范围大的类型强制转换成取值范围小的类型
比较而言,自动转换是Java自动执行的,而强制转换需要我们自己手动执行
转换格式:
数据类型 变量名 = (数据类型)被转数据值; // double类型数据强制转成int类型,直接去掉小数点。 int i = (int)1.5;
注意:
- 浮点转成整数,直接取消小数点,可能造成数据损失精度。
- int 强制转成 short 砍掉2个字节,可能造成数据丢失
- byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算
- boolean类型不能发生数据类型转换
拓展:
ASCII编码表
在计算机的内部都是二进制的0、1数据,将所有的英文字母,数字,符号都和十进制进行了对应,计算机可以直接识别人类文字
注意:
- Java中,整数使用以上运算符,无论怎么计算,也不会得到小数。
- +符号在遇到字符串的时候,表示连接、拼接的含义
- 变量在独立运算时, 前++ 和 后++没有区别,和其他变量放在一起, 前++ 和 后++ 就产生了不同
- 一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。
- 只有对于整数的除法来说,取模运算符才有余数的意义
- 对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作。任何数据类型和字符串进行连接的时候,结果都会变成字符串
public static void main(String[] args) {
int i = 1234;
System.out.println(i/1000*1000);//计算结果是1000
}
public static void main(String[] args){
System.out.println("5+5="+5+5);//输出5+5=55
}
public static void main(String[] args){
System.out.println(str2 + 20 + 30); // Java2030
System.out.println(str2 + (20 + 30)); // Java50
}
8.2 赋值运算符
拓展:复合赋值运算符其中隐含了一个强制类型转换
public static void main(String[] args) {
short s = 1;
s += 1;
System.out.println(s);
}
分析: s += 1 逻辑上看作是 s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型。但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点, 也就是说s += 1就是s = (short)(s + 1),因此程序没有问题编译通过,运行结果是2
8.3 比较运算符比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false
注意:
在Java中,如果进行多次判断,不能连着写,在Python中可以
System.out.println(1 < x < 3); // 错误写法!编译报错!不能连着写。8.4 逻辑运算符
逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值 true 或者 false
三元运算符格式:
数据类型 变量名 = 布尔类型表达式?结果1:结果2
三元运算符计算方式:
- 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量
- 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量
注意:
- 必须同时保证表达式A和表达式B都符合左侧数据类型的要求。
- 三元运算符的结果必须被使用



