• day0203_基础知识


    • 常量

    • 转义字符

    • 标识符

    • 注释

    • 数据类型

    • 变量

    • 数据类型之间的转换

    • 运算符(算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符)

    • 选择控制语句

    • Scanner类和Random类的使用

    • 循环结构(for、while、do-while)

    • 跳转语句 (break、continue)

      JDK 和 JRE 的关系

      JRE = JVM + Java类库 Java runtime environment

      JDK = JRE + 开发工具集 Java development kit

    关键字:

    具有特殊含义、被保留的、不能随意使用的字符

    添加注释:

    ​ 注释:就是对代码的解释和说明,其目的就是让其他开发者轻松的了解代码,注释是不影响程序的编译和运行的。 Java中的注释通常有三种:

    ​ 1.单行注释 //

    ​ 2.多行注释 /* */

    ​ 3.文档注释 /** */

    标识符:

    一般是指在程序中,我们自定义的内容 比如:类名 、方法名、变量名都是标识符

    ​ 命名规则:(硬性要求)

    ​ 标识符可以包含英文字母26个(区分大小写、0-9数字、_(下划线)、$(美元符号))

    ​ 标识符不能以数字开头

    ​ 标识符不能是关键字

    ​ 命名规范:(软性建议)

    ​ 类名首字母大写后面的每个单词首字母建议大写(大驼峰命名法)、

    ​ 方法名首字母小写,后面的每个单词首字母建议大写(小驼峰命名法)、

    ​ 变量名,同方法名

    ​ 名字尽量见名知意

    常量:

    ​ 常量,在程序的运行期间,固定不变的量。

    ​ 常量的分类:

    ​ 字符串常量:凡是用双引号引起来的部分,叫做字符串常量"今天是我学习Java的第2天"

    ​ 整数常量:直接写上的数字,没有小数点。如 18、20、-5

    ​ 浮点数常量(小数常量):直接写上的数字,有小数点。如3.14、0.0

    ​ 字符常量:凡是用 ' '引起来的单个字符,叫做字符常量 如 '男'、 ' A'、 '1 '

    ​ 布尔常量:只有true/false

    ​ 空常量: null,代表没有任何数据,在内存中不存在。

    ​ 空常量不能直接用来打印输出(引用不明确)

    变量:

    ​ 变量:在程序运行期间,内容可以发生变化的量。

    ​ 数学中, 3 + 5 = 8 ---> x + 5 = 8 或者 3 + x = 8

    ​ 在程序中,可以使用字母保存数字的方式进行运算,提高计算能力,可以解决更多的实际问题。比如 x可以保存3 也可以保存5 x保存数字(数据)是可以发生改变的,我们一般称这个x为变量。

    备注:Java中,一个变量每次只能保存一个数据。

    数据类型

    ​ 分类: 基本数据类型和引用数据类型

    ​ 基本数据类型:如 整数、浮点数、字符、布尔

    ​ 引用数据类型:如 类、数组、接口

    基本数据类型:四类八种 byte 、short 、int、long float、double、boolean、char

    数据类型 关键字 内存大小 取值范围
    字节型 byte 1个字节 1B -128-127 2^7-1
    短整型 short 2个字节 2B -32768-32767 2^15-1
    整形 int 4个字节 4B 21开头的十位数 -2^31- 2^31-1
    长整形 long 8个字节 8B 92开头的19位数 2^63-1
    单精度浮点数 float 4个字节 4B -1.4013E-45—3.4028E+38
    双精度浮点数 double 8个字节 8B 4.9E-324 —1.7977E+308
    字符型 char 2个字节 2B 0—65535
    布尔型 boolean 1个字节 1B true、false

    备注:Java中的默认数据类型:整数类型为int;浮点类型为double

    计算机基础知识:

    ​ 二进制:计算机中的数据全部采用二进制表示 ,只包含0 1两个数 逢二进一 1+1=10;

    ​ 每一个1或者一个0,叫做一个 bit(比特)

    ​ 字节:字节是计算机中最小的存储单元。计算机中存储任何的数据都是以字节的形式进行存储

    ​ 1个字节 = 8个比特(二进制位) 00000000 8位 写成 1 byte

    ​ 1B = 8 bit 1024B = 1KB 1024KB = 1MB GB TB PB EB ZB

    变量的定义:

    ​ 变量的定义需要具备三元素: 数据类型、变量名、数据值。

    ​ 格式: 变量的数据类型 变量名 = 变量值;

    定义变量的时候,需要注意的事项如下:
    1.创建多个变量的时候,变量之间的名称不可以重复;
    2.对于float和long类型来说,变量的数据值后面需要添加字母F和L
    3.如果使用的是byte和short类型变量,注意右侧数值大小不要超过数据类型范围
    4.没有进行赋值的变量,不能直接使用,能够使用的变量一定是经过初始化
    5.变量的使用不能超出它对应的作用域
    6.可以通过一个语句创建多个变量,但是不建议使用。
    作用域--->{} 左半部分代表作用域的起始位置
    右半部分代表作用域的结束位置

    转义字符

    ​ 一些具有特殊含义的字符,通过 ' '来进行转义

    ​ 一个制表符 占8位 一个tab 缩进

    ​ 换行符 相当于执行newLine()

    ​ 回车符 按下enter键

    ​  退一格

    ​ (v 垂直制表符)编译报错非法转义符

    数据类型之间的转换

    ​ Java程序中要求参与运算的数据,必须保证数据类型的一致性。

    ​ 当数据类型不一致的时候,将会发生数据类型转换。

    ​ 数据类型之间的转换分为两种:

    ​ 1.自动类型转换(隐式)

    ​ 自动转换:将取值范围小的类型自动提升为取值范围大的类型。

    ​ byte在内存中占一个字节,需要和int类型的变量做运算会自动提升为int类型,自动补充三个字节,计算的结果自然就是int类型。

    ​ 1.特点:代码不需要进行处理,程序内部转换自动完成。
    ​ 2.规则:从数据范围小的转换为数据范围大的。

    ​ 2.强制类型转换(显式)

    ​ 将取值范围大的类型强制转换成取值范围小的类型

    ​ 格式:数据类型 变量名 = (数据类型)被转数据值

    ​ 强制类型转换的注意事项:
    ​ 1.一般不推荐使用,因为可能会发生精度损失,数据溢出
    ​ 2.byte short char这三种数据类型在运算的时候,都会被提升为int类型,再进行运算
    ​ 3.boolean类型不能发生数据类型转换 4.char类型可以进行数学运算,例如: 加法 +

    ASCII(美国信息交换标准代码)

    ​ 数字和字符的对照关系表(编码表)

    ​ ASCII编码:American standard code for information interchange

    ​ Unicode编码:万国码。也是数字和字符符号的对照关系表,开头以0-127部分和ASCII完全一样,但是从128开始,包含更多的字符。

    ​ 需要记忆: 48 ---> '0' 57---> '9' 65--->'A' 90--->'Z' 97--->'a' 122--->'z'

    在计算机内部运算采用二进制方式,里面的数据都是0、1格式,如何让计算机识别人类的文字呢,就出现了编码表的概念。

    ​ 编码表:就是将人类的文字和一个十进制数进行对应起来组成的一张表格。

    ​ 将所有的英文字母、数字、符号都和十进制进行对应,产生了世界上第一张编码表(ASCII)

    备注:在 char和int类型进行计算的过程中,char类型的字符会被转成int类型,需要查询编码表

    **运算符 **

    算术运算符 7种

    算术运算符 含义
    + 加法运算、字符串拼接、表正数
    - 减法运算、表负数
    * 乘法运算、通配符
    / 除法运算(求商)
    % 除法运算(求余数、取模运算)
    ++ 自加一运算
    -- 自减一运算

    比较运算符 6种

    比较运算符 含义
    == 相等比较
    < 小于比较
    > 大于比较
    >= 大于等于比较
    <= 小于等于比较
    != 不等于比较

    备注:比较运算符运算结果都是 boolean 类型的值 true / false。

    注意事项:如果我们进行多次判断,不能连着写。

    ​ 数学当中, a>3 a<-1 ---> -1<a<3

    ​ 程序中, -1<a && a<3

    赋值运算符 6种

    赋值运算符 含义
    = 赋值
    += 加等于
    -= 减等于
    *= 乘等于
    /= 商等于
    %= 模等于

    备注:1.重点掌握 " = " 基本的赋值运算符

    ​ 2.剩下的都是复合赋值运算符

    ​ 3.只有变量才可以使用赋值运算符

    4.复合赋值运算符其中隐含了一个强制类型转换

    逻辑运算符 4种

    逻辑运算符 含义
    && 短路与 1.如果两边都是true,结果为true 2.如果一边为false,结果为false
    || 短路或 1.如果两边任何一边为true 结果为true ,否则为false
    !取非 1.如果为false,结果为true,反之则为false
    ^ 抑或 1.如果两边有且只有一个true结果则为true,否则为false

    位运算符 7种

    运算符 含义 示例
    << 左移 5 << 2 = 20 == 5*2^2
    >> 右移 5 >> 1 =2 == 5/2^1
    >>> 无符号右移 对于正数来说,拿0来补符号位,负数拿1来补
    & 与运算(位与) 5 & 3 == 1 只要出现一个位为0,结果位就为0
    | 或运算 5 | 3 == 7 只要出现一个位为1,结果位就为1
    ^ 异或运算 5 ^ 3 == 6 相异为1,相同为0
    ~ 取反运算 ~ 6 == -7 符号位也参与取反

    备注:位运算计算机底层采用的是(对整数)二进制运算 【没有无符号左移位运算符】 计算机二进制表示 :原码,反码,补码

    表达式:本质是一个值;

    语句:以 , 结尾;

    三目运算符

    ​ 格式: 布尔类型表达式 ? 真的结果值 :假的结果值

    计算方式:如果布尔类型表达式结果为true,三目运算符运算的结果为:前面的值 如果布尔类型表达式结果为false,三目运算符运算的结果为:后面的值

    备注:当三目运算符参与有其他运算(如赋值运算)的时候,要求三目运算符种 : 前后的数据类型一致
    三目运算符的结果必须有变量接收,否则会出现意外的错误(不是语句)

    流程控制

    ​ 顺序结构:程序是从上往下进行加载,按照代码的编写顺序进行执行。

    ​ 选择结构(分支结构):

    • ​ if else语句

      1. if 单支情况

        if语句的格式: if( 布尔类型表达式 / 布尔值 ){

        ​ //语句体

        }

        if 语句(单支)的执行流程:

        ①首先判断布尔类型表达式,看它的结果是false还是true

        ②如果是true就执行{ }里面的方法体内容

        ③如果是false就不执行 { } 里面的方法体内容,程序往后加载

        1. if else双支结构

          if (布尔类型表达式 / 布尔值){

          ​ //语句体内容一

          }else{

          ​ //语句体内容二

          }

          执行流程:

          ①首先判断布尔类型表达式,看它的结果是false还是true

          ②如果是true就执行{语句体内容一 }里面的方法体内容

          ③如果是false就执行 {语句体内容二 } 里面的方法体内容

          3.if ... else if ... else 多支结构

          格式:

          ​ if(布尔类型表达式1 / 布尔值1){

          ​ //语句体内容一

          ​ }else if(布尔类型表达式2 / 布尔值2){

          ​ //语句体内容二

          ​ }

          ​ ……

          ​ }else{

          ​ //语句体内容n

          ​ }

          执行流程:

          ​ ①首先判断布尔表达式1看其结果是true/false

          ​ ②如果是true,就执行方法体内容1

          ​ ③如果是false,就继续判断布尔类型表达式2,看其结果是true/false

          ​ ④……

          ​ ⑤如果上述所有布尔类型表达式都为false ,执行语句体内容n

          备注:范围大的条件放在下面,否则会覆盖范围小的条件

          1. if...if...else...else语句、嵌套情形

            格式:

            ​ if(布尔类型表达式1){

            ​ //方法体内容1

            ​ ......

            ​ if(布尔类型表达式2){

            ​ //方法体内容2

            ​ }else{

            ​ //方法体内容3

            ​ }

            ​ }else{

            ​ //方法体内容4

            ​ }

            执行流程:

            ​ ①首先判断布尔表达式1看其结果是true/false

            ​ ②如果是true,就执行方法体内容1,再继续判断布尔类型表达式2,看其结果是true/false

            ​ 如果是true就执行方法体内容2,如果是false,就执行方法体内容3

            ​ ③如果是false,就执行方法体内容4

        if语句与三目运算符的互换

        int num01 = 10;
        int num02 = 20;
        //定义一个变量,保存num01和num02的最大值
        int c;
        if(num01 > num02){
            c = num01;
        }else{
            c = num02;
        }//上面的语句可以使用三目运算符
        c = num01 > num02 ? num01 :num02;
        

    • ​ switch case语句

      ​ 格式:

      switch(表达式/变量){
      	case 常量值1:
      		//语句体内容1
      		break;
          case 常量值2:
      		//语句体内容2
      		break;
           ......
         default:
              //语句体内容n
              break;
      }
      

      执行流程:

      ​ ①首先计算出表达式的值

      ​ ②其次,依次和case后的常量值做比较,一旦有对应的值,就会执行相应的语句体内容

      ​ 执行的过程中,遇到break就会结束switch case语句

      ​ ③最后,如果所有的case都和表达式的值不匹配,就会执行default中的语句体内容,然后 switch case 程序结束

      注意:在Switch语句中,表达式的数据类型,可以是byte/short/int/char/enum(枚举),

      ​ JDK1.7之后可以接收字符串类型

      case的穿透性 在switch语句中,如果case后面的break省略,将会出现穿透现象。不会判断case的情形值,直接向后加载运行,直到遇见break结束

    循环结构

    ​ 【三种基本循环】for while do-while

    循环结构的组成部分:一般分为4部分 1. 初始化语句 :在循环最初开始时,需要定义一个初始化变量,而且只会初始化一次。 2. 条件判断 :如果条件成立满足,进入循环,如果条件不满足,退出循环 3. 循环体内容 : 重复要做的事情内容,可能包含多条语句(事情是有规律的) 4. 迭代语句(步进语句):每次循环结束之后需要执行步进语句,对初始化的变量做步进(迭代)

    for循环语句结构 格式:

    	for(1.初始化语句;2.条件判断式;4.迭代语句){
    		3.//循环体内容
    	}
    

    ​ 执行流程: 执行顺序:1—>2—>3—>4—>2—>3—>4—>2—>3—>4......2不满足为止

    ​ 1负责循环变量的初始化 2负责判断是否满足循环条件,不满足退出循环 3循环代码执行语句 4负责变量的迭代

    while循环语句

    ​ 格式:

    //1.初始化语句
    while(2.判断条件){
        //3.循环体内容;
        //4.步进语句;
    }
    

    执行流程:

    ​ 执行顺序:1--->2--->3--->4--->2--->3--->4......--->2不满足为止

    ​ 1负责循环变量的初始化 2负责判断是否满足循环条件,不满足退出循环 3循环代码执行语句 4负责变量的迭代

    do-while

    ​ 格式:

    //1.初始化语句
    do{
    	//3.循环体内容
    	//4.迭代语句
    }while(2.判断条件);
    

    执行流程:

    ​ 执行顺序:1--->3--->4--->2--->3--->4--->2--->3--->4--->......2不满足为止

    ​ 1负责循环变量的初始化 2负责判断是否满足循环条件,不满足退出循环 3循环代码执行语句 4负责变量的迭代

    备注:无条件的执行一次循环内容,即使判断条件不满足,也依然循环一次,这样的循环是有风险的,不建议使用

    循环语句的区别

    for 和 while 的区别:

    ​控制语句中,所涉及到的循环变量,当for循环结束后,定义的循环变量不能再被访问到,而while循环依然可以被访问到,如果不继续使用循环变量了,建议使用for循环,因为for循环结束后,循环变量就会从内存中消失,从而提高内存的使用效率。
    在已知循环次数的情况下,建议使用for循环,当循环次数不确定时,使用while循环

    跳出语句

    ​ break、continue两个语句

    break : 使用情形: 终止switch 或者 循环语句 备注:离开了使用情形,对于break来说,毫无意义

    public static void main(String args[]){
        //使用break语句
        //跳出循环
        //10以内的偶数和
        int sum =0;
        for(int i = 0 ; i < = 100 ; i++){
            if(i>10){
    			break;
            }
            if(i / 2 == 0){
                 sum += i;
            }
        }
        //跳出switch case语句
        //季节    四个季节
        String season = "春季";
        switch(season){
            case "春季" :
                System.out.println("万物复苏的季节!");
                break;
            case "夏季" :
                System.out.println("烈日炎炎的季节!");
                break;s
            case "秋季" :
                System.out.println("丰收的季节!");
                break;
         	case "冬季" :
                System.out.println("寒冷的季节!");
                break;
            default:
                System.out.println("跳出三界外,不在五行中");
                break;
        }
    }
    

    continue

    ​ 使用情形:结束本次循环,继续下次循环

    public static void main(String args[]){
        //continue
        //求一下100以内的偶然和   2+4+6+8+10+...+100
        for(int i=1;i<=100;i++){
            //使用场景  奇数跳过去,不参与累加和
            if(i%2!=0){
                continue;
            }
            sum+=i;
        }
    }
    

    扩展知识点

    ​ 1.死循环

    ​ 概念:循环中的条件永远都是true,死循环是永不结束的。例如:while(true){ }

    ​ 死循环一般要和跳出语句结合

    ​ 2.循环嵌套

    ​ 概念:是指一个循环的循环体是另一个循环,比如for循环中内置了一个for循环,就是循环嵌套。

    ​ 循环次数 = 外部循环的次数 * 内部循环的次数

    格式:
        	for(1.初始化语句1;2.判断语句1;4.迭代语句1){
                //3.循环体内容
                for(5.初始化语句2;6.判断语句2;8.迭代语句2){
                    //7.循环体内容2
                }
            }
    

    执行流程:1--->2--->3--->5--->6--->7--->8--->6--->7--->8--->...6不满足为止(跳出循环)

    ​ --->4--->2--->3--->5--->6--->7--->8--->6--->7--->8--->...6不满足为止(跳出循环)

    ​ --->.......2不满足的时候(结束整个循环),加载外层for循环后面的语句

    外循环一次,内循环多次

    public static void main(String args[]){
    	//使用场景
    	//打印3*8长方形  长为3,宽为8
    	//外循环3次,内循环8次
        for(int i = 0; i < 3; i++){
            for(int j = 0;j <8 ; i++){
                //输出
                System.out.print("*");
            }
            System.out.println();
        }
    }
    

    Scanner类和Random类的使用

    ​ API(application programming interface)应用程序编程接口 JavaAPI 程序员的字典 是JDK提供给我们的使用类的说明文档,只需要自己查阅即可

    Scanner类

    ​ 它是一个可以解析基本数据类型和字符串的文本扫描器。主要作用就是把外部的数据录入到系统中

    Scanner scanner = new Scanner(System.in);
    //让系统能够从外部录入一个整数  nextInt()
    int num = scanner.nextInt();
    //备注:System.in可以实现通过键盘往系统中录入一个数据。
    //让系统能够实现从外部录入一个浮点数(小数)   next Double()
    double num02 = scanner.nextDouble();
    //让系统能够实现从外部录入一个字符串数据
    String str = scanner.next(); 
    
    

  • 相关阅读:
    剑指21.栈的压入、弹出序列
    剑指20.包含min函数的栈
    剑指19.顺时针打印矩阵
    Java--使用反编译工具,打开jar包,查看源码
    没想到 Unicode 字符还能这样玩?
    angularjs中响应回车事件
    两个很好的angular调试工具-——batarang(stable)和ng-inspector
    基于 ThinkPHP5 的 cltphp 被搜索劫持,篡改首页的解决过程记录
    国内外CDN服务商CNAME特征串调研
    开源中国/码云 README.md上传图片的爬坑记录
  • 原文地址:https://www.cnblogs.com/mitoris/p/13954969.html
Copyright © 2020-2023  润新知