1.JDK的叙述
a .JDK是Java开发工具包 ,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
b.JRE是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
c.JVM是整个Java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行
d.JDK中包含了JRE,JRE又包含JVM
2.运算符
运算符是对操作数进行运算的符号
(1)算数运算符
加减乘除模 (+ - * / %)
public class TestDemo { public static void main(String[] args) { System.out.println(); } public static void main1(String[] args) { int a=10; int b=30; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b); System.out.println(a%b); } }
这几个运算符都属于双目运算符,就是说有两个操作数
计算机在计算时,保留整数,比如5/2=2,与数学不一样
除数不能为0,在这里会报错,出现异常,这里的ArithmeticException意思是算数异常,
public class TestDemo { public static void main(String[] args) { System.out.println(10%3); System.out.println(10%-3); System.out.println(-10%3); System.out.println(-10%-3); }
在算这个题的时候我成功的跳入坑😢,答案是1,1,-1,-1,你做对了吗🤔
看这有一个小点,对小数也可以进行取余
(2)增量运算符
+= -= *= /=
在C语言我们就已经学过了,比较简单
a+=3也就相当于a=a+3
其他也类似,就不重点说了
有一个小的知识点注意一下,这个运算符只有变量才可以使用的
(3)自增自减运算符
++ -- a++; ++a b++ ++b --a, a-- ,--b ,b---
public class TestDemo { public static void main(String[] args) { System.out.println(10%3); System.out.println(10%-3); System.out.println(-10%3); System.out.println(-10%-3); System.out.println(11.5/2.0); int a = 1; a++; // 后置++ 表示给a的值加1,此时a的值为2 System.out.println(a++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2 System.out.println(a); // 输出3 ++a;// 前置++ 表示给a的值加1 System.out.println(++a); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5 System.out.println(a); // 输出5 // --操作符给操作-1,与++含义类似 }
这一段代码就解释了自增自减运算符的用法
注意,这里一定一定要注意
如果单独使用,【前置++】和【后置++】没有任何区别
如果混合使用,【前置++】先+1,然后使用变量+1之后的值,【后置++】先使用变量原来的值,表达式
结束时给变量+1
只有变量才能使用自增/自减运算符,常量不能使用,因为常量不允许被修改
(4)关系运算符
关系运算符主要有6个
== != >= > <= <
计算结果是true 和false;
上代码!
public class TestDemo { public static void main(String[] args) { int a=1; int b=2; System.out.println(a==b); System.out.println(a!=b); System.out.println(a>=b); System.out.println(a<=b); System.out.println(a>b); System.out.println(a<b); }
看,结果只有true和false两种👀
(5)逻辑运算符
&& ||
逻辑与 逻辑或
在使用它们时,要记住,必须使用布尔表达式,有人就会有疑问,什么叫做布尔表达式,就是结果为true或者false 的表达式就是布尔表达式
语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。
总结为一句话,全真则真。
当表达式1为真时,看第二个,如果第二个为假,则就为假,若第二个为真,这就为真,若第一个为假,后面的就不用看了,直接为假
这是上面的代码段的结果
逻辑 ||
语法规则:表达式1 || 表达式2,左右表达式必须是boolean类型的结果、
学习要劳逸结合,欣赏以下小魏的涂鸦,哈哈哈
这用一句话来说,有真则真
(6)位运算符与移位运算符
Java 中数据存储的最小单位是字节,而数据操作的最小单位是比特位. 字节是最小的存储单位,每个字节是由8个二进制比特位组成的。
位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。
我们分别来学习一下
&:按位与
举例
0110
1011
结果 0010
按位与规则:两个位上都是1,结果才是1,不同就为0。
|:按位或
举例
0110
1011
结果 1111
按位或规则:两个位只要有1,那结果就是1
^:按位异或
举例
0110
1011
结果 0010
规则:只要对应位不一样,结果就是1
~:按位取反
规则:把0变成1,1变成0;
移位运算符
左移:<<
举例
11 00001011 向左移动1位
00010110 11*2^1
00101110 11*2^2
规律:左移n位类似于原来的数乘2的n次方
右移>>
11 00001011 向右移动1位
00000101 11/2^1
00000010 11/2^2
规律:右移n位类似于原来的数除以2的n次方
无符号右移>>>
无符号右移没有正负之分,补0即可
举例
11111111
向右移动一位
01111111
没有无符号左移,没有意义,往右边补0或1,都对正负没有影响。
(7)条件运算符
表达式1 ? 表达式2 : 表达式3
表达式必须是布尔表达式
举例
boolean flg = false ? false : true == true ? true : false
此题结果为true
表达式一结果为假,则执行表达式三,表达式三结果为真,所以最终答案为true
8.运算符的优先级
运算符之间是有优先级的. 具体的规则我们不必记忆. 在可能存在歧义的代码中加上括号即可.
今天就到这里,我们下期再见啦!