| 
 
| 一、学习java最开始就得知道java中的JVM、JRE和JDK。 
 A:什么是JVM
 JVM是java虚拟机(JVM Java Virtual Machine),java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此java语言可以跨平台
 B:什么是JRE
 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
 JRE:JVM+类库。?
 C:什么是JDK
 JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
 其中的开发工具:编译工具(javac.exe) ?打包工具(jar.exe)等
 ?        JDK:JRE+JAVA的开发工具。
 D:为什么JDK中包含一个JRE
 为什么JDK中包含一个JRE呢?
 开发完的程序,需要运行一下看看效果。
 E:JDK,JRE,JVM的作用和关系
 JDK包含JRE 和开发工具包
 JRE 包含 核心类库和JVM
 
 二、常量和变量
 常量的定义为:在程序运行不可发生变化的数据;
 常量分为:
 整数常量;
 小数常量;
 字符常量;
 字符串常量;
 空常量;(空常量只有null)
 布尔常量;(布尔常量只有true和false)
 而变量的定义和常量正好相反:在程序执行的过程中,在某个范围内其值可以发生改变的量(从本质上讲,变量其实是内存中的一小块区域)
 变量分为(因为java是强类型语言,所以基本变量又被分为四类八种):
 整数类型:byte、short、int、long(整数类型的默认类型是Int类型,所以在使用long类型的时候需要在加L,如 long a=124L; )
 浮点类型:float、double(浮点类型其实就是小数类型,只不过在java中被叫做浮点类型,默认类型为double,需要使用float需要加F,如 float a = 12.0F。)
 字符类型:char
 布尔类型:boolean(布尔类型的结果只有true和false;)
 
 它们各自所对应的字节数:
 byte、short、int、long  1、2、4、8
 float、double                4、8
 char                        2
 boolean                        1
 
 三、标识符、注释
 标识符:
 A 作用
 –给包,类,方法,变量等起名字
 B 组成规则
 –由字符,下划线_,美元符$组成
 ?这里的字符采用的是unicode字符集,所以包括英文大小写字母,中文字符,数字字符等。
 –注意事项
 –不能以数字开头
 –不能是Java中的关键字
 
 C : 命名原则:见名知意
 a包
 最好是域名倒过来,要求所有的字母小写?
 b类或者接口
 如果是一个单词首字母大写
 如果是多个单词每个单词首字母大写(驼峰标识)?
 c方法或者变量
 如果是一个单词全部小写
 如果是多个单词,从第二个单词首字母大写?
 d常量
 如果是一个单词,所有字母大写
 如果是多个单词,所有的单词大写,用下划线区分每个单词?
 
 注释(不参与程序运行的语句):
 注释又被分为单行注释、多行注释和文档注释(没学);
 单行注释写法为//双斜杆后面的语句都为注释
 多行注释写法为/**/以/*开头,一直到*/结尾,其中的数据都为注释。
 
 四、运算符
 运算符又被分为:
 算术运算符;
 赋值运算符;
 比较运算符;
 逻辑运算符;
 三元运算符;
 
 算术运算符:
 + - * / %(其中+号在java中不只是加法运算,同时还可以用于连接语句;/号和数学中的除法的区别是这里的/号只取式子的商,余数会被省略;%
 号和/号正好相反,%号是为了取式子的余数,同时任何整数%2都除了1就是2,所以需要判断一个数字是否为偶数可以用这个数%2,0为偶数,1则为奇数)
 
 赋值运算符:
 =(赋值“赋值不是等于,在java中等于号是==”) +=(先将右边的做加法运算再赋值给左边的变量)-=(先将右边的做减法法运算再赋值给左边的变量)
 *=(先将右边的做乘法法运算再赋值给左边的变量)/=(先将右边的做除法法运算再赋值给左边的变量) %=(先将右边的做取余运算再赋值给左边的变量)
 
 比较运算符:
 ==(等于) < <= > >= !=(不等于)(比较运算符的结果只会为布尔类型)
 
 逻辑运算符:
 &(并,我喜欢理解为并且,就是对多个条件进行判断时,必须所有条件都为true(都正确)才通过,否则为false(错))
 |(或,对多个条件进行判断时,只要有一个条件为true都可以通过)
 ^(亦或,用的很少,反正我在基础班基本没用过,判断条件是都为true或者都为false则为false,不同为true)
 !(非,不是true就是false,比如!true, 结果就为false;
 
 三元运算符:
 表达式1  判断条件(如>) 表达式2 ? 判断结果1:判断结果2;(使用左边的2个表达式进行判断,如果为true则为判断结果1,如果为false则为判断结果2)
 
 五、Scanner键盘录入
 键盘录入的三个步骤:
 A:导包  (import java.utli.Scanner;)(导包的位置在包的下面类的上面)
 B:创建对象        (Scanner sc = new Scanner(System.in);)
 C:接收数据        int 变量名称= sc.nextInt();
 
 六、顺序结构的基本使用
 概述:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
 
 判断流程:
 1.if语句(第一种格式):if(关系表达式) {
 语句体
 }
 执行流程:
 首先判断关系表达式看其结果是true还是false
 如果是true就执行语句体
 如果是false就不执行语句体
 
 2.(第二种格式)(关系表达式) {
 语句体1;
 }else {
 语句体2;
 }
 执行流程
 首先判断关系表达式看其结果是true还是false
 如果是true就执行语句体1
 如果是false就执行语句体2
 3.(第三种格式)if(关系表达式1) {
 语句体1;
 }else  if (关系表达式2) {
 语句体2;
 }
 …
 else {
 语句体n+1;
 }
 执行流程
 首先判断关系表达式1看其结果是true还是false
 如果是true就执行语句体1
 如果是false就继续判断关系表达式2看其结果是true还是false
 如果是true就执行语句体2
 如果是false就继续判断关系表达式…看其结果是true还是false
 …
 如果没有任何关系表达式为true,就执行语句体n+1
 
 switch语句的格式及执行流程:
 switch表示这是switch语句
 表达式的取值:byte,short,int,char
 JDK5以后可以是枚举
 JDK7以后可以是String
 case后面跟的是要和表达式进行比较的值
 语句体部分可以是一条或多条语句
 break表示中断,结束的意思,可以结束switch语句
 default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
 
 执行流程:
 首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
 
 七、循环语句体的控制
 1.for循环:
 for(初始化语句;判断条件语句;控制条件语句) {
 循环体语句;
 }
 
 执行流程:
 A:执行初始化语句
 B:执行判断条件语句,看其结果是true还是false
 如果是false,循环结束。
 如果是true,继续执行。
 C:执行循环体语句
 D:执行控制条件语句
 E:回到B继续
 
 2.switch循环:
 基本格式
 while(判断条件语句) {
 循环体语句;
 }
 扩展格式
 初始化语句;
 while(判断条件语句) {
 循环体语句;
 控制条件语句;
 }
 
 3.do...while循环
 基本格式
 do {
 循环体语句;
 }while((判断条件语句);
 扩展格式
 初始化语句;
 do {
 循环体语句;
 控制条件语句;
 } while((判断条件语句);
 
 
 重点:三种循环的区别:
 虽然可以完成同样的功能,但是还是有小区别:
 do…while循环至少会执行一次循环体。
 for循环和while循环只有在条件成立的时候才会去执行循环体
 for循环语句和while循环语句的小区别:
 使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,
 而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。
 原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
 
 
 | 
 |